You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

keycode.js 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /**
  2. * Enumerates the supported keys.
  3. * NOTE: The maps represents actual keys on the keyboard not chars.
  4. */
  5. export const KEYS = {
  6. BACKSPACE: "backspace" ,
  7. DELETE : "delete",
  8. RETURN : "enter",
  9. TAB : "tab",
  10. ESCAPE : "escape",
  11. UP : "up",
  12. DOWN : "down",
  13. RIGHT : "right",
  14. LEFT : "left",
  15. HOME : "home",
  16. END : "end",
  17. PAGEUP : "pageup",
  18. PAGEDOWN : "pagedown",
  19. F1 : "f1",
  20. F2 : "f2",
  21. F3 : "f3",
  22. F4 : "f4",
  23. F5 : "f5",
  24. F6 : "f6",
  25. F7 : "f7",
  26. F8 : "f8",
  27. F9 : "f9",
  28. F10 : "f10",
  29. F11 : "f11",
  30. F12 : "f12",
  31. META : "command",
  32. CMD_L: "command",
  33. CMD_R: "command",
  34. ALT : "alt",
  35. CONTROL : "control",
  36. SHIFT : "shift",
  37. CAPS_LOCK: "caps_lock", //not supported by robotjs
  38. SPACE : "space",
  39. PRINTSCREEN : "printscreen",
  40. INSERT : "insert",
  41. NUMPAD_0 : "numpad_0",
  42. NUMPAD_1 : "numpad_1",
  43. NUMPAD_2 : "numpad_2",
  44. NUMPAD_3 : "numpad_3",
  45. NUMPAD_4 : "numpad_4",
  46. NUMPAD_5 : "numpad_5",
  47. NUMPAD_6 : "numpad_6",
  48. NUMPAD_7 : "numpad_7",
  49. NUMPAD_8 : "numpad_8",
  50. NUMPAD_9 : "numpad_9",
  51. COMMA: ",",
  52. PERIOD: ".",
  53. SEMICOLON: ";",
  54. QUOTE: "'",
  55. BRACKET_LEFT: "[",
  56. BRACKET_RIGHT: "]",
  57. BACKQUOTE: "`",
  58. BACKSLASH: "\\",
  59. MINUS: "-",
  60. EQUAL: "=",
  61. SLASH: "/"
  62. };
  63. /**
  64. * Mapping between the key codes and keys deined in KEYS.
  65. * The mappings are based on
  66. * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Specifications
  67. */
  68. let keyCodeToKey = {
  69. 8: KEYS.BACKSPACE,
  70. 9: KEYS.TAB,
  71. 13: KEYS.RETURN,
  72. 16: KEYS.SHIFT,
  73. 17: KEYS.CONTROL,
  74. 18: KEYS.ALT,
  75. 20: KEYS.CAPS_LOCK,
  76. 27: KEYS.ESCAPE,
  77. 32: KEYS.SPACE,
  78. 33: KEYS.PAGEUP,
  79. 34: KEYS.PAGEDOWN,
  80. 35: KEYS.END,
  81. 36: KEYS.HOME,
  82. 37: KEYS.LEFT,
  83. 38: KEYS.UP,
  84. 39: KEYS.RIGHT,
  85. 40: KEYS.DOWN,
  86. 42: KEYS.PRINTSCREEN,
  87. 44: KEYS.PRINTSCREEN,
  88. 45: KEYS.INSERT,
  89. 46: KEYS.DELETE,
  90. 59: KEYS.SEMICOLON,
  91. 61: KEYS.EQUAL,
  92. 91: KEYS.CMD_L,
  93. 92: KEYS.CMD_R,
  94. 93: KEYS.CMD_R,
  95. 96: KEYS.NUMPAD_0,
  96. 97: KEYS.NUMPAD_1,
  97. 98: KEYS.NUMPAD_2,
  98. 99: KEYS.NUMPAD_3,
  99. 100: KEYS.NUMPAD_4,
  100. 101: KEYS.NUMPAD_5,
  101. 102: KEYS.NUMPAD_6,
  102. 103: KEYS.NUMPAD_7,
  103. 104: KEYS.NUMPAD_8,
  104. 105: KEYS.NUMPAD_9,
  105. 112: KEYS.F1,
  106. 113: KEYS.F2,
  107. 114: KEYS.F3,
  108. 115: KEYS.F4,
  109. 116: KEYS.F5,
  110. 117: KEYS.F6,
  111. 118: KEYS.F7,
  112. 119: KEYS.F8,
  113. 120: KEYS.F9,
  114. 121: KEYS.F10,
  115. 122: KEYS.F11,
  116. 123: KEYS.F12,
  117. 124: KEYS.PRINTSCREEN,
  118. 173: KEYS.MINUS,
  119. 186: KEYS.SEMICOLON,
  120. 187: KEYS.EQUAL,
  121. 188: KEYS.COMMA,
  122. 189: KEYS.MINUS,
  123. 190: KEYS.PERIOD,
  124. 191: KEYS.SLASH,
  125. 192: KEYS.BACKQUOTE,
  126. 219: KEYS.BRACKET_LEFT,
  127. 220: KEYS.BACKSLASH,
  128. 221: KEYS.BRACKET_RIGHT,
  129. 222: KEYS.QUOTE,
  130. 224: KEYS.META,
  131. 229: KEYS.SEMICOLON
  132. };
  133. /**
  134. * Generate codes for digit keys (0-9)
  135. */
  136. for(let i = 0; i < 10; i++) {
  137. keyCodeToKey[i + 48] = `${i}`;
  138. }
  139. /**
  140. * Generate codes for letter keys (a-z)
  141. */
  142. for(let i = 0; i < 26; i++) {
  143. let keyCode = i + 65;
  144. keyCodeToKey[keyCode] = String.fromCharCode(keyCode).toLowerCase();
  145. }
  146. /**
  147. * Returns key associated with the keyCode from the passed event.
  148. * @param {KeyboardEvent} event the event
  149. * @returns {KEYS} the key on the keyboard.
  150. */
  151. export function keyboardEventToKey(event) {
  152. return keyCodeToKey[event.which];
  153. }