| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | /**
 * Enumerates the supported keys.
 * NOTE: The maps represents physical keys on the keyboard, not chars.
 * @readonly
 * @enum {string}
 */
export const KEYS = {
    BACKSPACE: "backspace" ,
    DELETE : "delete",
    RETURN : "enter",
    TAB : "tab",
    ESCAPE : "escape",
    UP : "up",
    DOWN : "down",
    RIGHT : "right",
    LEFT : "left",
    HOME : "home",
    END : "end",
    PAGEUP : "pageup",
    PAGEDOWN : "pagedown",
    F1 : "f1",
    F2 : "f2",
    F3 : "f3",
    F4 : "f4",
    F5 : "f5",
    F6 : "f6",
    F7 : "f7",
    F8 : "f8",
    F9 : "f9",
    F10 : "f10",
    F11 : "f11",
    F12 : "f12",
    META : "command",
    CMD_L: "command",
    CMD_R: "command",
    ALT : "alt",
    CONTROL : "control",
    SHIFT : "shift",
    CAPS_LOCK: "caps_lock", //not supported by robotjs
    SPACE : "space",
    PRINTSCREEN : "printscreen",
    INSERT : "insert",
    NUMPAD_0 : "numpad_0",
    NUMPAD_1 : "numpad_1",
    NUMPAD_2 : "numpad_2",
    NUMPAD_3 : "numpad_3",
    NUMPAD_4 : "numpad_4",
    NUMPAD_5 : "numpad_5",
    NUMPAD_6 : "numpad_6",
    NUMPAD_7 : "numpad_7",
    NUMPAD_8 : "numpad_8",
    NUMPAD_9 : "numpad_9",
    COMMA: ",",
    PERIOD: ".",
    SEMICOLON: ";",
    QUOTE: "'",
    BRACKET_LEFT: "[",
    BRACKET_RIGHT: "]",
    BACKQUOTE: "`",
    BACKSLASH: "\\",
    MINUS: "-",
    EQUAL: "=",
    SLASH: "/"
};
/**
 * Mapping between the key codes and keys deined in KEYS.
 * The mappings are based on
 * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Specifications
 */
let keyCodeToKey = {
    8: KEYS.BACKSPACE,
    9: KEYS.TAB,
    13: KEYS.RETURN,
    16: KEYS.SHIFT,
    17: KEYS.CONTROL,
    18: KEYS.ALT,
    20: KEYS.CAPS_LOCK,
    27: KEYS.ESCAPE,
    32: KEYS.SPACE,
    33: KEYS.PAGEUP,
    34: KEYS.PAGEDOWN,
    35: KEYS.END,
    36: KEYS.HOME,
    37: KEYS.LEFT,
    38: KEYS.UP,
    39: KEYS.RIGHT,
    40: KEYS.DOWN,
    42: KEYS.PRINTSCREEN,
    44: KEYS.PRINTSCREEN,
    45: KEYS.INSERT,
    46: KEYS.DELETE,
    59: KEYS.SEMICOLON,
    61: KEYS.EQUAL,
    91: KEYS.CMD_L,
    92: KEYS.CMD_R,
    93: KEYS.CMD_R,
    96: KEYS.NUMPAD_0,
    97: KEYS.NUMPAD_1,
    98: KEYS.NUMPAD_2,
    99: KEYS.NUMPAD_3,
    100: KEYS.NUMPAD_4,
    101: KEYS.NUMPAD_5,
    102: KEYS.NUMPAD_6,
    103: KEYS.NUMPAD_7,
    104: KEYS.NUMPAD_8,
    105: KEYS.NUMPAD_9,
    112: KEYS.F1,
    113: KEYS.F2,
    114: KEYS.F3,
    115: KEYS.F4,
    116: KEYS.F5,
    117: KEYS.F6,
    118: KEYS.F7,
    119: KEYS.F8,
    120: KEYS.F9,
    121: KEYS.F10,
    122: KEYS.F11,
    123: KEYS.F12,
    124: KEYS.PRINTSCREEN,
    173: KEYS.MINUS,
    186: KEYS.SEMICOLON,
    187: KEYS.EQUAL,
    188: KEYS.COMMA,
    189: KEYS.MINUS,
    190: KEYS.PERIOD,
    191: KEYS.SLASH,
    192: KEYS.BACKQUOTE,
    219: KEYS.BRACKET_LEFT,
    220: KEYS.BACKSLASH,
    221: KEYS.BRACKET_RIGHT,
    222: KEYS.QUOTE,
    224: KEYS.META,
    229: KEYS.SEMICOLON
};
/**
 * Generate codes for digit keys (0-9)
 */
for(let i = 0; i < 10; i++) {
    keyCodeToKey[i + 48] = `${i}`;
}
/**
 * Generate codes for letter keys (a-z)
 */
for(let i = 0; i < 26; i++) {
    let keyCode = i + 65;
    keyCodeToKey[keyCode] = String.fromCharCode(keyCode).toLowerCase();
}
/**
 * Returns key associated with the keyCode from the passed event.
 * @param {KeyboardEvent} event the event
 * @returns {KEYS} the key on the keyboard.
 */
export function keyboardEventToKey(event) {
    return keyCodeToKey[event.which];
}
 |