您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

keycode.js 3.4KB

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