You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							121 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
	
	
							121 lines
						
					
					
						
							2.7 KiB
						
					
					
				| 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: "'"
 | |
| }
 | |
| 
 | |
| 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: "\""
 | |
| }
 | |
| 
 | |
| var chrome = typeof navigator != "undefined" && /Chrome\/(\d+)/.exec(navigator.userAgent)
 | |
| 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 = mac || chrome && +chrome[1] < 57
 | |
| 
 | |
| // 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) {
 | |
|   var ignoreKey = brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey) ||
 | |
|     ie && event.shiftKey && event.key && event.key.length == 1 ||
 | |
|     event.key == "Unidentified"
 | |
|   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
 | |
| }
 |