/**
* Copyright 2017 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @typedef {Object} KeyDefinition
* @property {number=} keyCode
* @property {number=} shiftKeyCode
* @property {string=} key
* @property {string=} shiftKey
* @property {string=} code
* @property {string=} text
* @property {string=} shiftText
* @property {number=} location
*/
/**
* @type {Object<string, KeyDefinition>}
*/
export default {
"0": {keyCode: 48, key: "0", code: "Digit0"},
"1": {keyCode: 49, key: "1", code: "Digit1"},
"2": {keyCode: 50, key: "2", code: "Digit2"},
"3": {keyCode: 51, key: "3", code: "Digit3"},
"4": {keyCode: 52, key: "4", code: "Digit4"},
"5": {keyCode: 53, key: "5", code: "Digit5"},
"6": {keyCode: 54, key: "6", code: "Digit6"},
"7": {keyCode: 55, key: "7", code: "Digit7"},
"8": {keyCode: 56, key: "8", code: "Digit8"},
"9": {keyCode: 57, key: "9", code: "Digit9"},
Power: {key: "Power", code: "Power"},
Eject: {key: "Eject", code: "Eject"},
Abort: {keyCode: 3, code: "Abort", key: "Cancel"},
Help: {keyCode: 6, code: "Help", key: "Help"},
Backspace: {keyCode: 8, code: "Backspace", key: "Backspace"},
Tab: {keyCode: 9, code: "Tab", key: "Tab"},
Numpad5: {
keyCode: 12,
shiftKeyCode: 101,
key: "Clear",
code: "Numpad5",
shiftKey: "5",
location: 3,
},
NumpadEnter: {
keyCode: 13,
code: "NumpadEnter",
key: "Enter",
text: "\r",
location: 3,
},
Enter: {keyCode: 13, code: "Enter", key: "Enter", text: "\r"},
"\r": {keyCode: 13, code: "Enter", key: "Enter", text: "\r"},
"\n": {keyCode: 13, code: "Enter", key: "Enter", text: "\r"},
ShiftLeft: {keyCode: 16, code: "ShiftLeft", key: "Shift", location: 1},
ShiftRight: {keyCode: 16, code: "ShiftRight", key: "Shift", location: 2},
ControlLeft: {keyCode: 17, code: "ControlLeft", key: "Control", location: 1},
ControlRight: {
keyCode: 17,
code: "ControlRight",
key: "Control",
location: 2,
},
AltLeft: {keyCode: 18, code: "AltLeft", key: "Alt", location: 1},
AltRight: {keyCode: 18, code: "AltRight", key: "Alt", location: 2},
Pause: {keyCode: 19, code: "Pause", key: "Pause"},
CapsLock: {keyCode: 20, code: "CapsLock", key: "CapsLock"},
Escape: {keyCode: 27, code: "Escape", key: "Escape"},
Convert: {keyCode: 28, code: "Convert", key: "Convert"},
NonConvert: {keyCode: 29, code: "NonConvert", key: "NonConvert"},
Space: {keyCode: 32, code: "Space", key: " "},
Numpad9: {
keyCode: 33,
shiftKeyCode: 105,
key: "PageUp",
code: "Numpad9",
shiftKey: "9",
location: 3,
},
PageUp: {keyCode: 33, code: "PageUp", key: "PageUp"},
Numpad3: {
keyCode: 34,
shiftKeyCode: 99,
key: "PageDown",
code: "Numpad3",
shiftKey: "3",
location: 3,
},
PageDown: {keyCode: 34, code: "PageDown", key: "PageDown"},
End: {keyCode: 35, code: "End", key: "End"},
Numpad1: {
keyCode: 35,
shiftKeyCode: 97,
key: "End",
code: "Numpad1",
shiftKey: "1",
location: 3,
},
Home: {keyCode: 36, code: "Home", key: "Home"},
Numpad7: {
keyCode: 36,
shiftKeyCode: 103,
key: "Home",
code: "Numpad7",
shiftKey: "7",
location: 3,
},
ArrowLeft: {keyCode: 37, code: "ArrowLeft", key: "ArrowLeft"},
Numpad4: {
keyCode: 37,
shiftKeyCode: 100,
key: "ArrowLeft",
code: "Numpad4",
shiftKey: "4",
location: 3,
},
Numpad8: {
keyCode: 38,
shiftKeyCode: 104,
key: "ArrowUp",
code: "Numpad8",
shiftKey: "8",
location: 3,
},
ArrowUp: {keyCode: 38, code: "ArrowUp", key: "ArrowUp"},
ArrowRight: {keyCode: 39, code: "ArrowRight", key: "ArrowRight"},
Numpad6: {
keyCode: 39,
shiftKeyCode: 102,
key: "ArrowRight",
code: "Numpad6",
shiftKey: "6",
location: 3,
},
Numpad2: {
keyCode: 40,
shiftKeyCode: 98,
key: "ArrowDown",
code: "Numpad2",
shiftKey: "2",
location: 3,
},
ArrowDown: {keyCode: 40, code: "ArrowDown", key: "ArrowDown"},
Select: {keyCode: 41, code: "Select", key: "Select"},
Open: {keyCode: 43, code: "Open", key: "Execute"},
PrintScreen: {keyCode: 44, code: "PrintScreen", key: "PrintScreen"},
Insert: {keyCode: 45, code: "Insert", key: "Insert"},
Numpad0: {
keyCode: 45,
shiftKeyCode: 96,
key: "Insert",
code: "Numpad0",
shiftKey: "0",
location: 3,
},
Delete: {keyCode: 46, code: "Delete", key: "Delete"},
NumpadDecimal: {
keyCode: 46,
shiftKeyCode: 110,
code: "NumpadDecimal",
key: "\u0000",
shiftKey: ".",
location: 3,
},
Digit0: {keyCode: 48, code: "Digit0", shiftKey: ")", key: "0"},
Digit1: {keyCode: 49, code: "Digit1", shiftKey: "!", key: "1"},
Digit2: {keyCode: 50, code: "Digit2", shiftKey: "@", key: "2"},
Digit3: {keyCode: 51, code: "Digit3", shiftKey: "#", key: "3"},
Digit4: {keyCode: 52, code: "Digit4", shiftKey: "$", key: "4"},
Digit5: {keyCode: 53, code: "Digit5", shiftKey: "%", key: "5"},
Digit6: {keyCode: 54, code: "Digit6", shiftKey: "^", key: "6"},
Digit7: {keyCode: 55, code: "Digit7", shiftKey: "&", key: "7"},
Digit8: {keyCode: 56, code: "Digit8", shiftKey: "*", key: "8"},
Digit9: {keyCode: 57, code: "Digit9", shiftKey: "(", key: "9"},
KeyA: {keyCode: 65, code: "KeyA", shiftKey: "A", key: "a"},
KeyB: {keyCode: 66, code: "KeyB", shiftKey: "B", key: "b"},
KeyC: {keyCode: 67, code: "KeyC", shiftKey: "C", key: "c"},
KeyD: {keyCode: 68, code: "KeyD", shiftKey: "D", key: "d"},
KeyE: {keyCode: 69, code: "KeyE", shiftKey: "E", key: "e"},
KeyF: {keyCode: 70, code: "KeyF", shiftKey: "F", key: "f"},
KeyG: {keyCode: 71, code: "KeyG", shiftKey: "G", key: "g"},
KeyH: {keyCode: 72, code: "KeyH", shiftKey: "H", key: "h"},
KeyI: {keyCode: 73, code: "KeyI", shiftKey: "I", key: "i"},
KeyJ: {keyCode: 74, code: "KeyJ", shiftKey: "J", key: "j"},
KeyK: {keyCode: 75, code: "KeyK", shiftKey: "K", key: "k"},
KeyL: {keyCode: 76, code: "KeyL", shiftKey: "L", key: "l"},
KeyM: {keyCode: 77, code: "KeyM", shiftKey: "M", key: "m"},
KeyN: {keyCode: 78, code: "KeyN", shiftKey: "N", key: "n"},
KeyO: {keyCode: 79, code: "KeyO", shiftKey: "O", key: "o"},
KeyP: {keyCode: 80, code: "KeyP", shiftKey: "P", key: "p"},
KeyQ: {keyCode: 81, code: "KeyQ", shiftKey: "Q", key: "q"},
KeyR: {keyCode: 82, code: "KeyR", shiftKey: "R", key: "r"},
KeyS: {keyCode: 83, code: "KeyS", shiftKey: "S", key: "s"},
KeyT: {keyCode: 84, code: "KeyT", shiftKey: "T", key: "t"},
KeyU: {keyCode: 85, code: "KeyU", shiftKey: "U", key: "u"},
KeyV: {keyCode: 86, code: "KeyV", shiftKey: "V", key: "v"},
KeyW: {keyCode: 87, code: "KeyW", shiftKey: "W", key: "w"},
KeyX: {keyCode: 88, code: "KeyX", shiftKey: "X", key: "x"},
KeyY: {keyCode: 89, code: "KeyY", shiftKey: "Y", key: "y"},
KeyZ: {keyCode: 90, code: "KeyZ", shiftKey: "Z", key: "z"},
MetaLeft: {keyCode: 91, code: "MetaLeft", key: "Meta", location: 1},
MetaRight: {keyCode: 92, code: "MetaRight", key: "Meta", location: 2},
ContextMenu: {keyCode: 93, code: "ContextMenu", key: "ContextMenu"},
NumpadMultiply: {keyCode: 106, code: "NumpadMultiply", key: "*", location: 3},
NumpadAdd: {keyCode: 107, code: "NumpadAdd", key: "+", location: 3},
NumpadSubtract: {keyCode: 109, code: "NumpadSubtract", key: "-", location: 3},
NumpadDivide: {keyCode: 111, code: "NumpadDivide", key: "/", location: 3},
F1: {keyCode: 112, code: "F1", key: "F1"},
F2: {keyCode: 113, code: "F2", key: "F2"},
F3: {keyCode: 114, code: "F3", key: "F3"},
F4: {keyCode: 115, code: "F4", key: "F4"},
F5: {keyCode: 116, code: "F5", key: "F5"},
F6: {keyCode: 117, code: "F6", key: "F6"},
F7: {keyCode: 118, code: "F7", key: "F7"},
F8: {keyCode: 119, code: "F8", key: "F8"},
F9: {keyCode: 120, code: "F9", key: "F9"},
F10: {keyCode: 121, code: "F10", key: "F10"},
F11: {keyCode: 122, code: "F11", key: "F11"},
F12: {keyCode: 123, code: "F12", key: "F12"},
F13: {keyCode: 124, code: "F13", key: "F13"},
F14: {keyCode: 125, code: "F14", key: "F14"},
F15: {keyCode: 126, code: "F15", key: "F15"},
F16: {keyCode: 127, code: "F16", key: "F16"},
F17: {keyCode: 128, code: "F17", key: "F17"},
F18: {keyCode: 129, code: "F18", key: "F18"},
F19: {keyCode: 130, code: "F19", key: "F19"},
F20: {keyCode: 131, code: "F20", key: "F20"},
F21: {keyCode: 132, code: "F21", key: "F21"},
F22: {keyCode: 133, code: "F22", key: "F22"},
F23: {keyCode: 134, code: "F23", key: "F23"},
F24: {keyCode: 135, code: "F24", key: "F24"},
NumLock: {keyCode: 144, code: "NumLock", key: "NumLock"},
ScrollLock: {keyCode: 145, code: "ScrollLock", key: "ScrollLock"},
AudioVolumeMute: {
keyCode: 173,
code: "AudioVolumeMute",
key: "AudioVolumeMute",
},
AudioVolumeDown: {
keyCode: 174,
code: "AudioVolumeDown",
key: "AudioVolumeDown",
},
AudioVolumeUp: {keyCode: 175, code: "AudioVolumeUp", key: "AudioVolumeUp"},
MediaTrackNext: {keyCode: 176, code: "MediaTrackNext", key: "MediaTrackNext"},
MediaTrackPrevious: {
keyCode: 177,
code: "MediaTrackPrevious",
key: "MediaTrackPrevious",
},
MediaStop: {keyCode: 178, code: "MediaStop", key: "MediaStop"},
MediaPlayPause: {keyCode: 179, code: "MediaPlayPause", key: "MediaPlayPause"},
Semicolon: {keyCode: 186, code: "Semicolon", shiftKey: ":", key: ";"},
Equal: {keyCode: 187, code: "Equal", shiftKey: "+", key: "="},
NumpadEqual: {keyCode: 187, code: "NumpadEqual", key: "=", location: 3},
Comma: {keyCode: 188, code: "Comma", shiftKey: "<", key: ","},
Minus: {keyCode: 189, code: "Minus", shiftKey: "_", key: "-"},
Period: {keyCode: 190, code: "Period", shiftKey: ">", key: "."},
Slash: {keyCode: 191, code: "Slash", shiftKey: "?", key: "/"},
Backquote: {keyCode: 192, code: "Backquote", shiftKey: "~", key: "`"},
BracketLeft: {keyCode: 219, code: "BracketLeft", shiftKey: "{", key: "["},
Backslash: {keyCode: 220, code: "Backslash", shiftKey: "|", key: "\\"},
BracketRight: {keyCode: 221, code: "BracketRight", shiftKey: "}", key: "]"},
Quote: {keyCode: 222, code: "Quote", shiftKey: '"', key: "'"},
AltGraph: {keyCode: 225, code: "AltGraph", key: "AltGraph"},
Props: {keyCode: 247, code: "Props", key: "CrSel"},
Cancel: {keyCode: 3, key: "Cancel", code: "Abort"},
Clear: {keyCode: 12, key: "Clear", code: "Numpad5", location: 3},
Shift: {keyCode: 16, key: "Shift", code: "ShiftLeft", location: 1},
Control: {keyCode: 17, key: "Control", code: "ControlLeft", location: 1},
Alt: {keyCode: 18, key: "Alt", code: "AltLeft", location: 1},
Accept: {keyCode: 30, key: "Accept"},
ModeChange: {keyCode: 31, key: "ModeChange"},
" ": {keyCode: 32, key: " ", code: "Space"},
Print: {keyCode: 42, key: "Print"},
Execute: {keyCode: 43, key: "Execute", code: "Open"},
"\u0000": {keyCode: 46, key: "\u0000", code: "NumpadDecimal", location: 3},
a: {keyCode: 65, key: "a", code: "KeyA"},
b: {keyCode: 66, key: "b", code: "KeyB"},
c: {keyCode: 67, key: "c", code: "KeyC"},
d: {keyCode: 68, key: "d", code: "KeyD"},
e: {keyCode: 69, key: "e", code: "KeyE"},
f: {keyCode: 70, key: "f", code: "KeyF"},
g: {keyCode: 71, key: "g", code: "KeyG"},
h: {keyCode: 72, key: "h", code: "KeyH"},
i: {keyCode: 73, key: "i", code: "KeyI"},
j: {keyCode: 74, key: "j", code: "KeyJ"},
k: {keyCode: 75, key: "k", code: "KeyK"},
l: {keyCode: 76, key: "l", code: "KeyL"},
m: {keyCode: 77, key: "m", code: "KeyM"},
n: {keyCode: 78, key: "n", code: "KeyN"},
o: {keyCode: 79, key: "o", code: "KeyO"},
p: {keyCode: 80, key: "p", code: "KeyP"},
q: {keyCode: 81, key: "q", code: "KeyQ"},
r: {keyCode: 82, key: "r", code: "KeyR"},
s: {keyCode: 83, key: "s", code: "KeyS"},
t: {keyCode: 84, key: "t", code: "KeyT"},
u: {keyCode: 85, key: "u", code: "KeyU"},
v: {keyCode: 86, key: "v", code: "KeyV"},
w: {keyCode: 87, key: "w", code: "KeyW"},
x: {keyCode: 88, key: "x", code: "KeyX"},
y: {keyCode: 89, key: "y", code: "KeyY"},
z: {keyCode: 90, key: "z", code: "KeyZ"},
Meta: {keyCode: 91, key: "Meta", code: "MetaLeft", location: 1},
"*": {keyCode: 106, key: "*", code: "NumpadMultiply", location: 3},
"+": {keyCode: 107, key: "+", code: "NumpadAdd", location: 3},
"-": {keyCode: 109, key: "-", code: "NumpadSubtract", location: 3},
"/": {keyCode: 111, key: "/", code: "NumpadDivide", location: 3},
";": {keyCode: 186, key: ";", code: "Semicolon"},
"=": {keyCode: 187, key: "=", code: "Equal"},
",": {keyCode: 188, key: ",", code: "Comma"},
".": {keyCode: 190, key: ".", code: "Period"},
"`": {keyCode: 192, key: "`", code: "Backquote"},
"[": {keyCode: 219, key: "[", code: "BracketLeft"},
"\\": {keyCode: 220, key: "\\", code: "Backslash"},
"]": {keyCode: 221, key: "]", code: "BracketRight"},
"'": {keyCode: 222, key: "'", code: "Quote"},
Attn: {keyCode: 246, key: "Attn"},
CrSel: {keyCode: 247, key: "CrSel", code: "Props"},
ExSel: {keyCode: 248, key: "ExSel"},
EraseEof: {keyCode: 249, key: "EraseEof"},
Play: {keyCode: 250, key: "Play"},
ZoomOut: {keyCode: 251, key: "ZoomOut"},
")": {keyCode: 48, key: ")", code: "Digit0"},
"!": {keyCode: 49, key: "!", code: "Digit1"},
"@": {keyCode: 50, key: "@", code: "Digit2"},
"#": {keyCode: 51, key: "#", code: "Digit3"},
$: {keyCode: 52, key: "$", code: "Digit4"},
"%": {keyCode: 53, key: "%", code: "Digit5"},
"^": {keyCode: 54, key: "^", code: "Digit6"},
"&": {keyCode: 55, key: "&", code: "Digit7"},
"(": {keyCode: 57, key: "(", code: "Digit9"},
A: {keyCode: 65, key: "A", code: "KeyA"},
B: {keyCode: 66, key: "B", code: "KeyB"},
C: {keyCode: 67, key: "C", code: "KeyC"},
D: {keyCode: 68, key: "D", code: "KeyD"},
E: {keyCode: 69, key: "E", code: "KeyE"},
F: {keyCode: 70, key: "F", code: "KeyF"},
G: {keyCode: 71, key: "G", code: "KeyG"},
H: {keyCode: 72, key: "H", code: "KeyH"},
I: {keyCode: 73, key: "I", code: "KeyI"},
J: {keyCode: 74, key: "J", code: "KeyJ"},
K: {keyCode: 75, key: "K", code: "KeyK"},
L: {keyCode: 76, key: "L", code: "KeyL"},
M: {keyCode: 77, key: "M", code: "KeyM"},
N: {keyCode: 78, key: "N", code: "KeyN"},
O: {keyCode: 79, key: "O", code: "KeyO"},
P: {keyCode: 80, key: "P", code: "KeyP"},
Q: {keyCode: 81, key: "Q", code: "KeyQ"},
R: {keyCode: 82, key: "R", code: "KeyR"},
S: {keyCode: 83, key: "S", code: "KeyS"},
T: {keyCode: 84, key: "T", code: "KeyT"},
U: {keyCode: 85, key: "U", code: "KeyU"},
V: {keyCode: 86, key: "V", code: "KeyV"},
W: {keyCode: 87, key: "W", code: "KeyW"},
X: {keyCode: 88, key: "X", code: "KeyX"},
Y: {keyCode: 89, key: "Y", code: "KeyY"},
Z: {keyCode: 90, key: "Z", code: "KeyZ"},
":": {keyCode: 186, key: ":", code: "Semicolon"},
"<": {keyCode: 188, key: "<", code: "Comma"},
_: {keyCode: 189, key: "_", code: "Minus"},
">": {keyCode: 190, key: ">", code: "Period"},
"?": {keyCode: 191, key: "?", code: "Slash"},
"~": {keyCode: 192, key: "~", code: "Backquote"},
"{": {keyCode: 219, key: "{", code: "BracketLeft"},
"|": {keyCode: 220, key: "|", code: "Backslash"},
"}": {keyCode: 221, key: "}", code: "BracketRight"},
'"': {keyCode: 222, key: '"', code: "Quote"},
SoftLeft: {key: "SoftLeft", code: "SoftLeft", location: 4},
SoftRight: {key: "SoftRight", code: "SoftRight", location: 4},
Camera: {keyCode: 44, key: "Camera", code: "Camera", location: 4},
Call: {key: "Call", code: "Call", location: 4},
EndCall: {keyCode: 95, key: "EndCall", code: "EndCall", location: 4},
VolumeDown: {
keyCode: 182,
key: "VolumeDown",
code: "VolumeDown",
location: 4,
},
VolumeUp: {keyCode: 183, key: "VolumeUp", code: "VolumeUp", location: 4},
}