@squid-dev/cc-web-term
Version:
A ComputerCraft terminal for the internet
330 lines (329 loc) • 12.4 kB
JavaScript
export const convertMouseButton = (btn) => {
switch (btn) {
case 0: return 1; // Left
case 1: return 3; // Middle
case 2: return 2; // Right
default: return undefined;
}
};
export const convertMouseButtons = (btn) => {
if ((btn & 1) !== 0)
return 1; // Left
if ((btn & 2) !== 0)
return 2; // Right
if ((btn & 4) !== 0)
return 3; // Middle
return undefined;
};
/**
* Mapping of KeyboardEvent.code and KeyboardEvent.key
*
* @see https://www.w3.org/TR/uievents-key/
* @see https://www.w3.org/TR/uievents-code/
*/
const keyboardCodes = {
"Digit1": 0 /* EKeyCode.One */, "1": 0 /* EKeyCode.One */,
"Digit2": 1 /* EKeyCode.Two */, "2": 1 /* EKeyCode.Two */,
"Digit3": 2 /* EKeyCode.Three */, "3": 2 /* EKeyCode.Three */,
"Digit4": 3 /* EKeyCode.Four */, "4": 3 /* EKeyCode.Four */,
"Digit5": 4 /* EKeyCode.Five */, "5": 4 /* EKeyCode.Five */,
"Digit6": 5 /* EKeyCode.Six */, "6": 5 /* EKeyCode.Six */,
"Digit7": 6 /* EKeyCode.Seven */, "7": 6 /* EKeyCode.Seven */,
"Digit8": 7 /* EKeyCode.Eight */, "8": 7 /* EKeyCode.Eight */,
"Digit9": 8 /* EKeyCode.Nine */, "9": 8 /* EKeyCode.Nine */,
"Digit0": 9 /* EKeyCode.Zero */, "0": 9 /* EKeyCode.Zero */,
"Minus": 10 /* EKeyCode.Minus */, "-": 10 /* EKeyCode.Minus */,
"Equal": 11 /* EKeyCode.Equals */,
"Backspace": 12 /* EKeyCode.Backspace */,
"Tab": 13 /* EKeyCode.Tab */,
"KeyQ": 30 /* EKeyCode.Q */, "Q": 30 /* EKeyCode.Q */,
"KeyW": 36 /* EKeyCode.W */, "W": 36 /* EKeyCode.W */,
"KeyE": 18 /* EKeyCode.E */, "E": 18 /* EKeyCode.E */,
"KeyR": 31 /* EKeyCode.R */, "R": 31 /* EKeyCode.R */,
"KeyT": 33 /* EKeyCode.T */, "T": 33 /* EKeyCode.T */,
"KeyY": 38 /* EKeyCode.Y */, "Y": 38 /* EKeyCode.Y */,
"KeyU": 34 /* EKeyCode.U */, "U": 34 /* EKeyCode.U */,
"KeyI": 22 /* EKeyCode.I */, "I": 22 /* EKeyCode.I */,
"KeyO": 28 /* EKeyCode.O */, "O": 28 /* EKeyCode.O */,
"KeyP": 29 /* EKeyCode.P */, "P": 29 /* EKeyCode.P */,
"BracketLeft": 40 /* EKeyCode.LeftBracket */, "(": 40 /* EKeyCode.LeftBracket */,
"BracketRight": 41 /* EKeyCode.RightBracket */, ")": 41 /* EKeyCode.RightBracket */,
"Enter": 42 /* EKeyCode.Enter */,
"ControlLeft": 43 /* EKeyCode.LeftCtrl */, "Control": 43 /* EKeyCode.LeftCtrl */,
"KeyA": 14 /* EKeyCode.A */, "A": 14 /* EKeyCode.A */,
"KeyS": 32 /* EKeyCode.S */, "S": 32 /* EKeyCode.S */,
"KeyD": 17 /* EKeyCode.D */, "D": 17 /* EKeyCode.D */,
"KeyF": 19 /* EKeyCode.F */, "F": 19 /* EKeyCode.F */,
"KeyG": 20 /* EKeyCode.G */, "G": 20 /* EKeyCode.G */,
"KeyH": 21 /* EKeyCode.H */, "H": 21 /* EKeyCode.H */,
"KeyJ": 23 /* EKeyCode.J */, "J": 23 /* EKeyCode.J */,
"KeyK": 24 /* EKeyCode.K */, "K": 24 /* EKeyCode.K */,
"KeyL": 25 /* EKeyCode.L */, "L": 25 /* EKeyCode.L */,
"Semicolon": 44 /* EKeyCode.SemiColon */, ";": 44 /* EKeyCode.SemiColon */,
"Quote": 45 /* EKeyCode.Apostrophe */, "'": 45 /* EKeyCode.Apostrophe */,
"Backquote": 46 /* EKeyCode.Grave */, "`": 46 /* EKeyCode.Grave */,
"ShiftLeft": 47 /* EKeyCode.LeftShift */, "Shift": 47 /* EKeyCode.LeftShift */,
"IntlBackslash": 48 /* EKeyCode.Backslash */,
"KeyZ": 39 /* EKeyCode.Z */, "Z": 39 /* EKeyCode.Z */,
"KeyX": 37 /* EKeyCode.X */, "X": 37 /* EKeyCode.X */,
"KeyC": 16 /* EKeyCode.C */, "C": 16 /* EKeyCode.C */,
"KeyV": 35 /* EKeyCode.V */, "V": 35 /* EKeyCode.V */,
"KeyB": 15 /* EKeyCode.B */, "B": 15 /* EKeyCode.B */,
"KeyN": 27 /* EKeyCode.N */, "N": 27 /* EKeyCode.N */,
"KeyM": 26 /* EKeyCode.M */, "M": 26 /* EKeyCode.M */,
"Comma": 49 /* EKeyCode.Comma */, ",": 49 /* EKeyCode.Comma */,
"Period": 50 /* EKeyCode.Period */, ".": 50 /* EKeyCode.Period */,
"Slash": 51 /* EKeyCode.Slash */, "/": 51 /* EKeyCode.Slash */,
"ShiftRight": 52 /* EKeyCode.RightShift */,
"NumpadMultiply": 53 /* EKeyCode.Multiply */,
"AltLeft": 54 /* EKeyCode.LeftAlt */, "Alt": 54 /* EKeyCode.LeftAlt */,
"Space": 55 /* EKeyCode.Space */, " ": 55 /* EKeyCode.Space */,
"CapsLock": 56 /* EKeyCode.CapsLock */,
"F1": 57 /* EKeyCode.F1 */,
"F2": 58 /* EKeyCode.F2 */,
"F3": 59 /* EKeyCode.F3 */,
"F4": 60 /* EKeyCode.F4 */,
"F5": 61 /* EKeyCode.F5 */,
"F6": 62 /* EKeyCode.F6 */,
"F7": 63 /* EKeyCode.F7 */,
"F8": 64 /* EKeyCode.F8 */,
"F9": 65 /* EKeyCode.F9 */,
"F10": 66 /* EKeyCode.F10 */,
"NumLock": 72 /* EKeyCode.NumLock */,
"ScollLock": 73 /* EKeyCode.ScrollLock */,
"Numpad7": 81 /* EKeyCode.NumPad7 */,
"Numpad8": 82 /* EKeyCode.NumPad8 */,
"Numpad9": 83 /* EKeyCode.NumPad9 */,
"NumpadSubtract": 84 /* EKeyCode.NumPadSubtract */,
"Numpad4": 78 /* EKeyCode.NumPad4 */,
"Numpad5": 79 /* EKeyCode.NumPad5 */,
"Numpad6": 80 /* EKeyCode.NumPad6 */,
"NumpadAdd": 85 /* EKeyCode.NumPadAdd */,
"Numpad1": 75 /* EKeyCode.NumPad1 */,
"Numpad2": 76 /* EKeyCode.NumPad2 */,
"Numpad3": 77 /* EKeyCode.NumPad3 */,
"Numpad0": 74 /* EKeyCode.NumPad0 */,
"NumpadDecimal": 86 /* EKeyCode.NumPadDecimal */,
"F11": 67 /* EKeyCode.F11 */,
"F12": 68 /* EKeyCode.F12 */,
"F13": 69 /* EKeyCode.F13 */,
"F14": 70 /* EKeyCode.F14 */,
"F15": 71 /* EKeyCode.F15 */,
// I have absolutely no clue about these. If someone has a keyboard with these
// on, please confim that they're right.
"KanaMode": 87 /* EKeyCode.Kana */,
"Convert": 88 /* EKeyCode.Convert */,
"NonConvert": 89 /* EKeyCode.Noconvert */,
"IntlYen": 90 /* EKeyCode.Yen */,
"NumpadEqual": 91 /* EKeyCode.NumPadEquals */,
"Cirmcumflex": 92 /* EKeyCode.Circumflex */,
"At": 93 /* EKeyCode.At */,
"Colon": 94 /* EKeyCode.Colon */,
"Underscore": 95 /* EKeyCode.Underscore */,
"Kanji": 96 /* EKeyCode.Kanji */,
"Stop": 97 /* EKeyCode.Stop */,
"Ax": 98 /* EKeyCode.Ax */,
"NumpadEnter": 99 /* EKeyCode.NumPadEnter */,
"ControlRight": 100 /* EKeyCode.RightCtrl */,
"NumpadComma": 101 /* EKeyCode.NumPadComma */,
"NumpadDivide": 102 /* EKeyCode.NumPadDivide */,
"AltRight": 103 /* EKeyCode.RightAlt */,
"Pause": 104 /* EKeyCode.Pause */,
"Home": 105 /* EKeyCode.Home */,
"ArrowUp": 106 /* EKeyCode.Up */,
"PageUp": 107 /* EKeyCode.PageUp */,
"ArrowLeft": 108 /* EKeyCode.Left */,
"ArrowRight": 109 /* EKeyCode.Right */,
"End": 110 /* EKeyCode.End */,
"ArrowDown": 111 /* EKeyCode.Down */,
"PageDown": 112 /* EKeyCode.PageDown */,
"Insert": 113 /* EKeyCode.Insert */,
"Delete": 114 /* EKeyCode.Delete */,
};
export const convertKey = (key) => keyboardCodes[key];
const names = [
"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "zero",
"minus",
"equals",
"backspace",
"tab",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"leftBracket",
"rightBracket",
"enter",
"leftCtrl",
"semiColon",
"apostrophe",
"grave",
"leftShift",
"backslash",
"comma",
"period",
"slash",
"rightShift",
"multiply",
"leftAlt",
"space",
"capsLock",
"f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
"numLock",
"scrollLock",
"numPad0", "numPad1", "numPad2", "numPad3", "numPad4", "numPad5", "numPad6", "numPad7", "numPad8", "numPad9",
"numPadSubtract",
"numPadAdd",
"numPadDecimal",
"kana",
"convert",
"noconvert",
"yen",
"numPadEquals",
"circumflex",
"at",
"colon",
"underscore",
"kanji",
"stop",
"ax",
"numPadEnter",
"rightCtrl",
"numPadComma",
"numPadDivide",
"rightAlt",
"pause",
"home",
"up",
"pageUp",
"left",
"right",
"end",
"down",
"pageDown",
"insert",
"delete",
];
export const keyName = (key) => names[key];
const lwjgl2Codes = [
2 /* one */, 3 /* two */, 4 /* three */, 5 /* four */, 6 /* five */, 7 /* six */, 8 /* seven */, 9 /* eight */, 10 /* nine */, 11 /* zero */,
12 /* minus */,
13 /* equals */,
14 /* backspace */,
15 /* tab */,
30 /* a */, 48 /* b */, 46 /* c */, 32 /* d */, 18 /* e */, 33 /* f */, 34 /* g */, 35 /* h */, 23 /* i */, 36 /* j */, 37 /* k */, 38 /* l */, 50 /* m */, 49 /* n */, 24 /* o */, 25 /* p */, 16 /* q */, 19 /* r */, 31 /* s */, 20 /* t */, 22 /* u */, 47 /* v */, 17 /* w */, 45 /* x */, 21 /* y */, 44 /* z */,
26 /* leftBracket */,
27 /* rightBracket */,
28 /* enter */,
29 /* leftCtrl */,
39 /* semiColon */,
40 /* apostrophe */,
41 /* grave */,
42 /* leftShift */,
43 /* backslash */,
51 /* comma */,
52 /* period */,
53 /* slash */,
54 /* rightShift */,
55 /* multiply */,
56 /* leftAlt */,
57 /* space */,
58 /* capsLock */,
59 /* f1 */, 60 /* f2 */, 61 /* f3 */, 62 /* f4 */, 63 /* f5 */, 64 /* f6 */, 65 /* f7 */, 66 /* f8 */, 67 /* f9 */, 68 /* f10 */, 87 /* f11 */, 88 /* f12 */, 100 /* f13 */, 101 /* f14 */, 102 /* f15 */,
69 /* numLock */,
70 /* scrollLock */,
82 /* numPad0 */, 79 /* numPad1 */, 80 /* numPad2 */, 81 /* numPad3 */, 75 /* numPad4 */, 76 /* numPad5 */, 77 /* numPad6 */, 71 /* numPad7 */, 72 /* numPad8 */, 73 /* numPad9 */,
74 /* numPadSubtract */,
78 /* numPadAdd */,
83 /* numPadDecimal */,
112 /* kana */,
121 /* convert */,
123 /* noconvert */,
125 /* yen */,
141 /* numPadEquals */,
144 /* circumflex */,
145 /* at */,
146 /* colon */,
147 /* underscore */,
148 /* kanji */,
149 /* stop */,
150 /* ax */,
156 /* numPadEnter */,
157 /* rightCtrl */,
179 /* numPadComma */,
181 /* numPadDivide */,
184 /* rightAlt */,
197 /* pause */,
199 /* home */,
200 /* up */,
201 /* pageUp */,
203 /* left */,
205 /* right */,
207 /* end */,
208 /* down */,
209 /* pageDown */,
210 /* insert */,
211 /* delete */,
];
export const lwjgl2Code = (key) => lwjgl2Codes[key];
const lwjgl3Codes = [
49 /* one */, 50 /* two */, 51 /* three */, 52 /* four */, 53 /* five */, 54 /* six */, 55 /* seven */, 56 /* eight */, 57 /* nine */, 48 /* zero */,
45 /* minus */,
61 /* equals */,
259 /* backspace */,
258 /* tab */,
65 /* a */, 66 /* b */, 67 /* c */, 68 /* d */, 69 /* e */, 70 /* f */, 71 /* g */, 72 /* h */, 73 /* i */, 74 /* j */, 75 /* k */, 76 /* l */, 77 /* m */, 78 /* n */, 79 /* o */, 80 /* p */, 81 /* q */, 82 /* r */, 83 /* s */, 84 /* t */, 85 /* u */, 86 /* v */, 87 /* w */, 88 /* x */, 89 /* y */, 90 /* z */,
91 /* leftBracket */,
93 /* rightBracket */,
257 /* enter */,
341 /* leftCtrl */,
-1 /* semiColon */,
39 /* apostrophe */,
96 /* grave */,
340 /* leftShift */,
92 /* backslash */,
44 /* comma */,
46 /* period */,
47 /* slash */,
344 /* rightShift */,
-1 /* multiply */,
342 /* leftAlt */,
32 /* space */,
280 /* capsLock */,
290 /* f1 */, 291 /* f2 */, 292 /* f3 */, 293 /* f4 */, 294 /* f5 */, 295 /* f6 */, 296 /* f7 */, 297 /* f8 */, 298 /* f9 */, 299 /* f10 */, 300 /* f11 */, 301 /* f12 */, 302 /* f13 */, 303 /* f14 */, 304 /* f15 */,
282 /* numLock */,
281 /* scrollLock */,
320 /* numPad0 */, 321 /* numPad1 */, 322 /* numPad2 */, 323 /* numPad3 */, 324 /* numPad4 */, 325 /* numPad5 */, 326 /* numPad6 */, 327 /* numPad7 */, 328 /* numPad8 */, 329 /* numPad9 */,
333 /* numPadSubtract */,
334 /* numPadAdd */,
330 /* numPadDecimal */,
-1 /* kana */,
-1 /* convert */,
-1 /* noconvert */,
-1 /* yen */,
-1 /* numPadEquals */,
-1 /* circumflex */,
-1 /* at */,
-1 /* colon */,
-1 /* underscore */,
-1 /* kanji */,
-1 /* stop */,
-1 /* ax */,
335 /* numPadEnter */,
345 /* rightCtrl */,
-1 /* numPadComma */,
331 /* numPadDivide */,
346 /* rightAlt */,
284 /* pause */,
268 /* home */,
265 /* up */,
266 /* pageUp */,
263 /* left */,
262 /* right */,
269 /* end */,
264 /* down */,
267 /* pageDown */,
260 /* insert */,
261 /* delete */,
];
export const lwjgl3Code = (key) => {
const result = lwjgl3Codes[key];
return result < 0 ? undefined : result;
};