index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. export var base = {
  2. 8: "Backspace",
  3. 9: "Tab",
  4. 10: "Enter",
  5. 12: "NumLock",
  6. 13: "Enter",
  7. 16: "Shift",
  8. 17: "Control",
  9. 18: "Alt",
  10. 20: "CapsLock",
  11. 27: "Escape",
  12. 32: " ",
  13. 33: "PageUp",
  14. 34: "PageDown",
  15. 35: "End",
  16. 36: "Home",
  17. 37: "ArrowLeft",
  18. 38: "ArrowUp",
  19. 39: "ArrowRight",
  20. 40: "ArrowDown",
  21. 44: "PrintScreen",
  22. 45: "Insert",
  23. 46: "Delete",
  24. 59: ";",
  25. 61: "=",
  26. 91: "Meta",
  27. 92: "Meta",
  28. 106: "*",
  29. 107: "+",
  30. 108: ",",
  31. 109: "-",
  32. 110: ".",
  33. 111: "/",
  34. 144: "NumLock",
  35. 145: "ScrollLock",
  36. 160: "Shift",
  37. 161: "Shift",
  38. 162: "Control",
  39. 163: "Control",
  40. 164: "Alt",
  41. 165: "Alt",
  42. 173: "-",
  43. 186: ";",
  44. 187: "=",
  45. 188: ",",
  46. 189: "-",
  47. 190: ".",
  48. 191: "/",
  49. 192: "`",
  50. 219: "[",
  51. 220: "\\",
  52. 221: "]",
  53. 222: "'"
  54. }
  55. export var shift = {
  56. 48: ")",
  57. 49: "!",
  58. 50: "@",
  59. 51: "#",
  60. 52: "$",
  61. 53: "%",
  62. 54: "^",
  63. 55: "&",
  64. 56: "*",
  65. 57: "(",
  66. 59: ":",
  67. 61: "+",
  68. 173: "_",
  69. 186: ":",
  70. 187: "+",
  71. 188: "<",
  72. 189: "_",
  73. 190: ">",
  74. 191: "?",
  75. 192: "~",
  76. 219: "{",
  77. 220: "|",
  78. 221: "}",
  79. 222: "\""
  80. }
  81. var mac = typeof navigator != "undefined" && /Mac/.test(navigator.platform)
  82. var ie = typeof navigator != "undefined" && /MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent)
  83. // Fill in the digit keys
  84. for (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)
  85. // The function keys
  86. for (var i = 1; i <= 24; i++) base[i + 111] = "F" + i
  87. // And the alphabetic keys
  88. for (var i = 65; i <= 90; i++) {
  89. base[i] = String.fromCharCode(i + 32)
  90. shift[i] = String.fromCharCode(i)
  91. }
  92. // For each code that doesn't have a shift-equivalent, copy the base name
  93. for (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]
  94. export function keyName(event) {
  95. // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.
  96. // On IE, shift effect is never included in `.key`.
  97. var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||
  98. ie && event.shiftKey && event.key && event.key.length == 1 ||
  99. event.key == "Unidentified"
  100. var name = (!ignoreKey && event.key) ||
  101. (event.shiftKey ? shift : base)[event.keyCode] ||
  102. event.key || "Unidentified"
  103. // Edge sometimes produces wrong names (Issue #3)
  104. if (name == "Esc") name = "Escape"
  105. if (name == "Del") name = "Delete"
  106. // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/
  107. if (name == "Left") name = "ArrowLeft"
  108. if (name == "Up") name = "ArrowUp"
  109. if (name == "Right") name = "ArrowRight"
  110. if (name == "Down") name = "ArrowDown"
  111. return name
  112. }