// 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; 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; export const modifiers = { ControlLeft: 0x01, ControlRight: 0x10, ShiftLeft: 0x02, ShiftRight: 0x20, AltLeft: 0x04, AltRight: 0x40, MetaLeft: 0x08, MetaRight: 0x80, } as Record; export const modifierDisplayMap: Record = { 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; export const keyDisplayMap: Record = { 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" };