unicode.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { arrayEach } from './array';
  2. export var KEY_CODES = {
  3. MOUSE_LEFT: 1,
  4. MOUSE_RIGHT: 3,
  5. MOUSE_MIDDLE: 2,
  6. BACKSPACE: 8,
  7. COMMA: 188,
  8. INSERT: 45,
  9. DELETE: 46,
  10. END: 35,
  11. ENTER: 13,
  12. ESCAPE: 27,
  13. CONTROL_LEFT: 91,
  14. COMMAND_LEFT: 17,
  15. COMMAND_RIGHT: 93,
  16. ALT: 18,
  17. HOME: 36,
  18. PAGE_DOWN: 34,
  19. PAGE_UP: 33,
  20. PERIOD: 190,
  21. SPACE: 32,
  22. SHIFT: 16,
  23. CAPS_LOCK: 20,
  24. TAB: 9,
  25. ARROW_RIGHT: 39,
  26. ARROW_LEFT: 37,
  27. ARROW_UP: 38,
  28. ARROW_DOWN: 40,
  29. F1: 112,
  30. F2: 113,
  31. F3: 114,
  32. F4: 115,
  33. F5: 116,
  34. F6: 117,
  35. F7: 118,
  36. F8: 119,
  37. F9: 120,
  38. F10: 121,
  39. F11: 122,
  40. F12: 123,
  41. A: 65,
  42. X: 88,
  43. C: 67,
  44. V: 86
  45. };
  46. /**
  47. * Returns true if keyCode represents a printable character.
  48. *
  49. * @param {Number} keyCode
  50. * @returns {Boolean}
  51. */
  52. export function isPrintableChar(keyCode) {
  53. return keyCode == 32 || // space
  54. keyCode >= 48 && keyCode <= 57 || // 0-9
  55. keyCode >= 96 && keyCode <= 111 || // numpad
  56. keyCode >= 186 && keyCode <= 192 || // ;=,-./`
  57. keyCode >= 219 && keyCode <= 222 || // []{}\|"'
  58. keyCode >= 226 || // special chars (229 for Asian chars)
  59. keyCode >= 65 && keyCode <= 90; // a-z
  60. }
  61. /**
  62. * @param {Number} keyCode
  63. * @returns {Boolean}
  64. */
  65. export function isMetaKey(keyCode) {
  66. var metaKeys = [KEY_CODES.ARROW_DOWN, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_RIGHT, KEY_CODES.HOME, KEY_CODES.END, KEY_CODES.DELETE, KEY_CODES.BACKSPACE, KEY_CODES.F1, KEY_CODES.F2, KEY_CODES.F3, KEY_CODES.F4, KEY_CODES.F5, KEY_CODES.F6, KEY_CODES.F7, KEY_CODES.F8, KEY_CODES.F9, KEY_CODES.F10, KEY_CODES.F11, KEY_CODES.F12, KEY_CODES.TAB, KEY_CODES.PAGE_DOWN, KEY_CODES.PAGE_UP, KEY_CODES.ENTER, KEY_CODES.ESCAPE, KEY_CODES.SHIFT, KEY_CODES.CAPS_LOCK, KEY_CODES.ALT];
  67. return metaKeys.indexOf(keyCode) !== -1;
  68. }
  69. /**
  70. * @param {Number} keyCode
  71. * @returns {Boolean}
  72. */
  73. export function isCtrlKey(keyCode) {
  74. return [KEY_CODES.CONTROL_LEFT, 224, KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT].indexOf(keyCode) !== -1;
  75. }
  76. /**
  77. * @param {Number} keyCode
  78. * @param {String} baseCode
  79. * @returns {Boolean}
  80. */
  81. export function isKey(keyCode, baseCode) {
  82. var keys = baseCode.split('|');
  83. var result = false;
  84. arrayEach(keys, function (key) {
  85. if (keyCode === KEY_CODES[key]) {
  86. result = true;
  87. return false;
  88. }
  89. });
  90. return result;
  91. }