mirror of https://github.com/jetkvm/kvm.git
292 lines
7.7 KiB
TypeScript
292 lines
7.7 KiB
TypeScript
// Key codes and modifiers correspond to definitions in the
|
|
// [Linux USB HID gadget driver](https://www.kernel.org/doc/Documentation/usb/gadget_hid.txt)
|
|
export const keys = {
|
|
ArrowDown: 0x51,
|
|
ArrowLeft: 0x50,
|
|
ArrowRight: 0x4f,
|
|
ArrowUp: 0x52,
|
|
Backquote: 0x35,
|
|
Backslash: 0x31,
|
|
Backspace: 0x2a,
|
|
BracketLeft: 0x2f,
|
|
BracketRight: 0x30,
|
|
CapsLock: 0x39,
|
|
Comma: 0x36,
|
|
ContextMenu: 0,
|
|
Delete: 0x4c,
|
|
Digit0: 0x27,
|
|
Digit1: 0x1e,
|
|
Digit2: 0x1f,
|
|
Digit3: 0x20,
|
|
Digit4: 0x21,
|
|
Digit5: 0x22,
|
|
Digit6: 0x23,
|
|
Digit7: 0x24,
|
|
Digit8: 0x25,
|
|
Digit9: 0x26,
|
|
End: 0x4d,
|
|
Enter: 0x28,
|
|
Equal: 0x2e,
|
|
Escape: 0x29,
|
|
F1: 0x3a,
|
|
F2: 0x3b,
|
|
F3: 0x3c,
|
|
F4: 0x3d,
|
|
F5: 0x3e,
|
|
F6: 0x3f,
|
|
F7: 0x40,
|
|
F8: 0x41,
|
|
F9: 0x42,
|
|
F10: 0x43,
|
|
F11: 0x44,
|
|
F12: 0x45,
|
|
F13: 0x68,
|
|
Home: 0x4a,
|
|
Insert: 0x49,
|
|
IntlBackslash: 0x31,
|
|
KeyA: 0x04,
|
|
KeyB: 0x05,
|
|
KeyC: 0x06,
|
|
KeyD: 0x07,
|
|
KeyE: 0x08,
|
|
KeyF: 0x09,
|
|
KeyG: 0x0a,
|
|
KeyH: 0x0b,
|
|
KeyI: 0x0c,
|
|
KeyJ: 0x0d,
|
|
KeyK: 0x0e,
|
|
KeyL: 0x0f,
|
|
KeyM: 0x10,
|
|
KeyN: 0x11,
|
|
KeyO: 0x12,
|
|
KeyP: 0x13,
|
|
KeyQ: 0x14,
|
|
KeyR: 0x15,
|
|
KeyS: 0x16,
|
|
KeyT: 0x17,
|
|
KeyU: 0x18,
|
|
KeyV: 0x19,
|
|
KeyW: 0x1a,
|
|
KeyX: 0x1b,
|
|
KeyY: 0x1c,
|
|
KeyZ: 0x1d,
|
|
KeypadExclamation: 0xcf,
|
|
Minus: 0x2d,
|
|
NumLock: 0x53,
|
|
Numpad0: 0x62,
|
|
Numpad1: 0x59,
|
|
Numpad2: 0x5a,
|
|
Numpad3: 0x5b,
|
|
Numpad4: 0x5c,
|
|
Numpad5: 0x5d,
|
|
Numpad6: 0x5e,
|
|
Numpad7: 0x5f,
|
|
Numpad8: 0x60,
|
|
Numpad9: 0x61,
|
|
NumpadAdd: 0x57,
|
|
NumpadDivide: 0x54,
|
|
NumpadEnter: 0x58,
|
|
NumpadMultiply: 0x55,
|
|
NumpadSubtract: 0x56,
|
|
NumpadDecimal: 0x63,
|
|
PageDown: 0x4e,
|
|
PageUp: 0x4b,
|
|
Period: 0x37,
|
|
Quote: 0x34,
|
|
Semicolon: 0x33,
|
|
Slash: 0x38,
|
|
Space: 0x2c,
|
|
Tab: 0x2b,
|
|
} as Record<string, number>;
|
|
|
|
export const chars = {
|
|
A: { key: "KeyA", shift: true },
|
|
B: { key: "KeyB", shift: true },
|
|
C: { key: "KeyC", shift: true },
|
|
D: { key: "KeyD", shift: true },
|
|
E: { key: "KeyE", shift: true },
|
|
F: { key: "KeyF", shift: true },
|
|
G: { key: "KeyG", shift: true },
|
|
H: { key: "KeyH", shift: true },
|
|
I: { key: "KeyI", shift: true },
|
|
J: { key: "KeyJ", shift: true },
|
|
K: { key: "KeyK", shift: true },
|
|
L: { key: "KeyL", shift: true },
|
|
M: { key: "KeyM", shift: true },
|
|
N: { key: "KeyN", shift: true },
|
|
O: { key: "KeyO", shift: true },
|
|
P: { key: "KeyP", shift: true },
|
|
Q: { key: "KeyQ", shift: true },
|
|
R: { key: "KeyR", shift: true },
|
|
S: { key: "KeyS", shift: true },
|
|
T: { key: "KeyT", shift: true },
|
|
U: { key: "KeyU", shift: true },
|
|
V: { key: "KeyV", shift: true },
|
|
W: { key: "KeyW", shift: true },
|
|
X: { key: "KeyX", shift: true },
|
|
Y: { key: "KeyY", shift: true },
|
|
Z: { key: "KeyZ", shift: true },
|
|
a: { key: "KeyA", shift: false },
|
|
b: { key: "KeyB", shift: false },
|
|
c: { key: "KeyC", shift: false },
|
|
d: { key: "KeyD", shift: false },
|
|
e: { key: "KeyE", shift: false },
|
|
f: { key: "KeyF", shift: false },
|
|
g: { key: "KeyG", shift: false },
|
|
h: { key: "KeyH", shift: false },
|
|
i: { key: "KeyI", shift: false },
|
|
j: { key: "KeyJ", shift: false },
|
|
k: { key: "KeyK", shift: false },
|
|
l: { key: "KeyL", shift: false },
|
|
m: { key: "KeyM", shift: false },
|
|
n: { key: "KeyN", shift: false },
|
|
o: { key: "KeyO", shift: false },
|
|
p: { key: "KeyP", shift: false },
|
|
q: { key: "KeyQ", shift: false },
|
|
r: { key: "KeyR", shift: false },
|
|
s: { key: "KeyS", shift: false },
|
|
t: { key: "KeyT", shift: false },
|
|
u: { key: "KeyU", shift: false },
|
|
v: { key: "KeyV", shift: false },
|
|
w: { key: "KeyW", shift: false },
|
|
x: { key: "KeyX", shift: false },
|
|
y: { key: "KeyY", shift: false },
|
|
z: { key: "KeyZ", shift: false },
|
|
1: { key: "Digit1", shift: false },
|
|
"!": { key: "Digit1", shift: true },
|
|
2: { key: "Digit2", shift: false },
|
|
"@": { key: "Digit2", shift: true },
|
|
3: { key: "Digit3", shift: false },
|
|
"#": { key: "Digit3", shift: true },
|
|
4: { key: "Digit4", shift: false },
|
|
$: { key: "Digit4", shift: true },
|
|
"%": { key: "Digit5", shift: true },
|
|
5: { key: "Digit5", shift: false },
|
|
"^": { key: "Digit6", shift: true },
|
|
6: { key: "Digit6", shift: false },
|
|
"&": { key: "Digit7", shift: true },
|
|
7: { key: "Digit7", shift: false },
|
|
"*": { key: "Digit8", shift: true },
|
|
8: { key: "Digit8", shift: false },
|
|
"(": { key: "Digit9", shift: true },
|
|
9: { key: "Digit9", shift: false },
|
|
")": { key: "Digit0", shift: true },
|
|
0: { key: "Digit0", shift: false },
|
|
"-": { key: "Minus", shift: false },
|
|
_: { key: "Minus", shift: true },
|
|
"=": { key: "Equal", shift: false },
|
|
"+": { key: "Equal", shift: true },
|
|
"'": { key: "Quote", shift: false },
|
|
'"': { key: "Quote", shift: true },
|
|
",": { key: "Comma", shift: false },
|
|
"<": { key: "Comma", shift: true },
|
|
"/": { key: "Slash", shift: false },
|
|
"?": { key: "Slash", shift: true },
|
|
".": { key: "Period", shift: false },
|
|
">": { key: "Period", shift: true },
|
|
";": { key: "Semicolon", shift: false },
|
|
":": { key: "Semicolon", shift: true },
|
|
"[": { key: "BracketLeft", shift: false },
|
|
"{": { key: "BracketLeft", shift: true },
|
|
"]": { key: "BracketRight", shift: false },
|
|
"}": { key: "BracketRight", shift: true },
|
|
"\\": { key: "Backslash", shift: false },
|
|
"|": { key: "Backslash", shift: true },
|
|
"`": { key: "Backquote", shift: false },
|
|
"~": { key: "Backquote", shift: true },
|
|
"§": { key: "IntlBackslash", shift: false },
|
|
"±": { key: "IntlBackslash", shift: true },
|
|
" ": { key: "Space", shift: false },
|
|
"\n": { key: "Enter", shift: false },
|
|
Enter: { key: "Enter", shift: false },
|
|
Tab: { key: "Tab", shift: false },
|
|
} as Record<string, { key: string | number; shift: boolean }>;
|
|
|
|
export const modifiers = {
|
|
ControlLeft: 0x01,
|
|
ControlRight: 0x10,
|
|
ShiftLeft: 0x02,
|
|
ShiftRight: 0x20,
|
|
AltLeft: 0x04,
|
|
AltRight: 0x40,
|
|
MetaLeft: 0x08,
|
|
MetaRight: 0x80,
|
|
} as Record<string, number>;
|
|
|
|
export const modifierDisplayMap: Record<string, string> = {
|
|
ControlLeft: "Left Ctrl",
|
|
ControlRight: "Right Ctrl",
|
|
ShiftLeft: "Left Shift",
|
|
ShiftRight: "Right Shift",
|
|
AltLeft: "Left Alt",
|
|
AltRight: "Right Alt",
|
|
MetaLeft: "Left Meta",
|
|
MetaRight: "Right Meta",
|
|
} as Record<string, string>;
|
|
|
|
export const keyDisplayMap: Record<string, string> = {
|
|
CtrlAltDelete: "Ctrl + Alt + Delete",
|
|
AltMetaEscape: "Alt + Meta + Escape",
|
|
Escape: "esc",
|
|
Tab: "tab",
|
|
Backspace: "backspace",
|
|
Enter: "enter",
|
|
CapsLock: "caps lock",
|
|
ShiftLeft: "shift",
|
|
ShiftRight: "shift",
|
|
ControlLeft: "ctrl",
|
|
AltLeft: "alt",
|
|
AltRight: "alt",
|
|
MetaLeft: "meta",
|
|
MetaRight: "meta",
|
|
Space: " ",
|
|
Home: "home",
|
|
PageUp: "pageup",
|
|
Delete: "delete",
|
|
End: "end",
|
|
PageDown: "pagedown",
|
|
ArrowLeft: "←",
|
|
ArrowRight: "→",
|
|
ArrowUp: "↑",
|
|
ArrowDown: "↓",
|
|
|
|
// Letters
|
|
KeyA: "a", KeyB: "b", KeyC: "c", KeyD: "d", KeyE: "e",
|
|
KeyF: "f", KeyG: "g", KeyH: "h", KeyI: "i", KeyJ: "j",
|
|
KeyK: "k", KeyL: "l", KeyM: "m", KeyN: "n", KeyO: "o",
|
|
KeyP: "p", KeyQ: "q", KeyR: "r", KeyS: "s", KeyT: "t",
|
|
KeyU: "u", KeyV: "v", KeyW: "w", KeyX: "x", KeyY: "y",
|
|
KeyZ: "z",
|
|
|
|
// Numbers
|
|
Digit1: "1", Digit2: "2", Digit3: "3", Digit4: "4", Digit5: "5",
|
|
Digit6: "6", Digit7: "7", Digit8: "8", Digit9: "9", Digit0: "0",
|
|
|
|
// Symbols
|
|
Minus: "-",
|
|
Equal: "=",
|
|
BracketLeft: "[",
|
|
BracketRight: "]",
|
|
Backslash: "\\",
|
|
Semicolon: ";",
|
|
Quote: "'",
|
|
Comma: ",",
|
|
Period: ".",
|
|
Slash: "/",
|
|
Backquote: "`",
|
|
IntlBackslash: "\\",
|
|
|
|
// Function keys
|
|
F1: "F1", F2: "F2", F3: "F3", F4: "F4",
|
|
F5: "F5", F6: "F6", F7: "F7", F8: "F8",
|
|
F9: "F9", F10: "F10", F11: "F11", F12: "F12",
|
|
|
|
// Numpad
|
|
Numpad0: "Num 0", Numpad1: "Num 1", Numpad2: "Num 2",
|
|
Numpad3: "Num 3", Numpad4: "Num 4", Numpad5: "Num 5",
|
|
Numpad6: "Num 6", Numpad7: "Num 7", Numpad8: "Num 8",
|
|
Numpad9: "Num 9", NumpadAdd: "Num +", NumpadSubtract: "Num -",
|
|
NumpadMultiply: "Num *", NumpadDivide: "Num /", NumpadDecimal: "Num .",
|
|
NumpadEnter: "Num Enter"
|
|
};
|