123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /**
- * 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: '/'
- };
-
- /* eslint-disable max-len */
- /**
- * 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
- */
- /* eslint-enable max-len */
- const 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++) {
- const 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];
- }
|