-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathUSKeyboardLayout.js
281 lines (279 loc) · 17.9 KB
/
USKeyboardLayout.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
/**
* 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>}
*/
module.exports = {
'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' }
};