123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- export var base = {
- 8: "Backspace",
- 9: "Tab",
- 10: "Enter",
- 12: "NumLock",
- 13: "Enter",
- 16: "Shift",
- 17: "Control",
- 18: "Alt",
- 20: "CapsLock",
- 27: "Escape",
- 32: " ",
- 33: "PageUp",
- 34: "PageDown",
- 35: "End",
- 36: "Home",
- 37: "ArrowLeft",
- 38: "ArrowUp",
- 39: "ArrowRight",
- 40: "ArrowDown",
- 44: "PrintScreen",
- 45: "Insert",
- 46: "Delete",
- 59: ";",
- 61: "=",
- 91: "Meta",
- 92: "Meta",
- 106: "*",
- 107: "+",
- 108: ",",
- 109: "-",
- 110: ".",
- 111: "/",
- 144: "NumLock",
- 145: "ScrollLock",
- 160: "Shift",
- 161: "Shift",
- 162: "Control",
- 163: "Control",
- 164: "Alt",
- 165: "Alt",
- 173: "-",
- 186: ";",
- 187: "=",
- 188: ",",
- 189: "-",
- 190: ".",
- 191: "/",
- 192: "`",
- 219: "[",
- 220: "\\",
- 221: "]",
- 222: "'",
- 229: "q"
- }
- export var shift = {
- 48: ")",
- 49: "!",
- 50: "@",
- 51: "#",
- 52: "$",
- 53: "%",
- 54: "^",
- 55: "&",
- 56: "*",
- 57: "(",
- 59: ":",
- 61: "+",
- 173: "_",
- 186: ":",
- 187: "+",
- 188: "<",
- 189: "_",
- 190: ">",
- 191: "?",
- 192: "~",
- 219: "{",
- 220: "|",
- 221: "}",
- 222: "\"",
- 229: "Q"
- }
- var chrome = typeof navigator != "undefined" && /Chrome\/(\d+)/.exec(navigator.userAgent)
- var safari = typeof navigator != "undefined" && /Apple Computer/.test(navigator.vendor)
- var gecko = typeof navigator != "undefined" && /Gecko\/\d+/.test(navigator.userAgent)
- var mac = typeof navigator != "undefined" && /Mac/.test(navigator.platform)
- var ie = typeof navigator != "undefined" && /MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent)
- var brokenModifierNames = chrome && (mac || +chrome[1] < 57) || gecko && mac
- // Fill in the digit keys
- for (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)
- // The function keys
- for (var i = 1; i <= 24; i++) base[i + 111] = "F" + i
- // And the alphabetic keys
- for (var i = 65; i <= 90; i++) {
- base[i] = String.fromCharCode(i + 32)
- shift[i] = String.fromCharCode(i)
- }
- // For each code that doesn't have a shift-equivalent, copy the base name
- for (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]
- export function keyName(event) {
- // Don't trust event.key in Chrome when there are modifiers until
- // they fix https://bugs.chromium.org/p/chromium/issues/detail?id=633838
- var ignoreKey = brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey) ||
- (safari || ie) && event.shiftKey && event.key && event.key.length == 1
- var name = (!ignoreKey && event.key) ||
- (event.shiftKey ? shift : base)[event.keyCode] ||
- event.key || "Unidentified"
- // Edge sometimes produces wrong names (Issue #3)
- if (name == "Esc") name = "Escape"
- if (name == "Del") name = "Delete"
- // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/
- if (name == "Left") name = "ArrowLeft"
- if (name == "Up") name = "ArrowUp"
- if (name == "Right") name = "ArrowRight"
- if (name == "Down") name = "ArrowDown"
- return name
- }
|