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