USKeyboardLayout.ts (18746B)
1 /** 2 * @license 3 * Copyright 2017 Google Inc. 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @internal 9 */ 10 export interface KeyDefinition { 11 keyCode?: number; 12 shiftKeyCode?: number; 13 key?: string; 14 shiftKey?: string; 15 code?: string; 16 text?: string; 17 shiftText?: string; 18 location?: number; 19 } 20 21 /** 22 * All the valid keys that can be passed to functions that take user input, such 23 * as {@link Keyboard.press | keyboard.press } 24 * 25 * @public 26 */ 27 export type KeyInput = 28 | '0' 29 | '1' 30 | '2' 31 | '3' 32 | '4' 33 | '5' 34 | '6' 35 | '7' 36 | '8' 37 | '9' 38 | 'Power' 39 | 'Eject' 40 | 'Abort' 41 | 'Help' 42 | 'Backspace' 43 | 'Tab' 44 | 'Numpad5' 45 | 'NumpadEnter' 46 | 'Enter' 47 | '\r' 48 | '\n' 49 | 'ShiftLeft' 50 | 'ShiftRight' 51 | 'ControlLeft' 52 | 'ControlRight' 53 | 'AltLeft' 54 | 'AltRight' 55 | 'Pause' 56 | 'CapsLock' 57 | 'Escape' 58 | 'Convert' 59 | 'NonConvert' 60 | 'Space' 61 | 'Numpad9' 62 | 'PageUp' 63 | 'Numpad3' 64 | 'PageDown' 65 | 'End' 66 | 'Numpad1' 67 | 'Home' 68 | 'Numpad7' 69 | 'ArrowLeft' 70 | 'Numpad4' 71 | 'Numpad8' 72 | 'ArrowUp' 73 | 'ArrowRight' 74 | 'Numpad6' 75 | 'Numpad2' 76 | 'ArrowDown' 77 | 'Select' 78 | 'Open' 79 | 'PrintScreen' 80 | 'Insert' 81 | 'Numpad0' 82 | 'Delete' 83 | 'NumpadDecimal' 84 | 'Digit0' 85 | 'Digit1' 86 | 'Digit2' 87 | 'Digit3' 88 | 'Digit4' 89 | 'Digit5' 90 | 'Digit6' 91 | 'Digit7' 92 | 'Digit8' 93 | 'Digit9' 94 | 'KeyA' 95 | 'KeyB' 96 | 'KeyC' 97 | 'KeyD' 98 | 'KeyE' 99 | 'KeyF' 100 | 'KeyG' 101 | 'KeyH' 102 | 'KeyI' 103 | 'KeyJ' 104 | 'KeyK' 105 | 'KeyL' 106 | 'KeyM' 107 | 'KeyN' 108 | 'KeyO' 109 | 'KeyP' 110 | 'KeyQ' 111 | 'KeyR' 112 | 'KeyS' 113 | 'KeyT' 114 | 'KeyU' 115 | 'KeyV' 116 | 'KeyW' 117 | 'KeyX' 118 | 'KeyY' 119 | 'KeyZ' 120 | 'MetaLeft' 121 | 'MetaRight' 122 | 'ContextMenu' 123 | 'NumpadMultiply' 124 | 'NumpadAdd' 125 | 'NumpadSubtract' 126 | 'NumpadDivide' 127 | 'F1' 128 | 'F2' 129 | 'F3' 130 | 'F4' 131 | 'F5' 132 | 'F6' 133 | 'F7' 134 | 'F8' 135 | 'F9' 136 | 'F10' 137 | 'F11' 138 | 'F12' 139 | 'F13' 140 | 'F14' 141 | 'F15' 142 | 'F16' 143 | 'F17' 144 | 'F18' 145 | 'F19' 146 | 'F20' 147 | 'F21' 148 | 'F22' 149 | 'F23' 150 | 'F24' 151 | 'NumLock' 152 | 'ScrollLock' 153 | 'AudioVolumeMute' 154 | 'AudioVolumeDown' 155 | 'AudioVolumeUp' 156 | 'MediaTrackNext' 157 | 'MediaTrackPrevious' 158 | 'MediaStop' 159 | 'MediaPlayPause' 160 | 'Semicolon' 161 | 'Equal' 162 | 'NumpadEqual' 163 | 'Comma' 164 | 'Minus' 165 | 'Period' 166 | 'Slash' 167 | 'Backquote' 168 | 'BracketLeft' 169 | 'Backslash' 170 | 'BracketRight' 171 | 'Quote' 172 | 'AltGraph' 173 | 'Props' 174 | 'Cancel' 175 | 'Clear' 176 | 'Shift' 177 | 'Control' 178 | 'Alt' 179 | 'Accept' 180 | 'ModeChange' 181 | ' ' 182 | 'Print' 183 | 'Execute' 184 | '\u0000' 185 | 'a' 186 | 'b' 187 | 'c' 188 | 'd' 189 | 'e' 190 | 'f' 191 | 'g' 192 | 'h' 193 | 'i' 194 | 'j' 195 | 'k' 196 | 'l' 197 | 'm' 198 | 'n' 199 | 'o' 200 | 'p' 201 | 'q' 202 | 'r' 203 | 's' 204 | 't' 205 | 'u' 206 | 'v' 207 | 'w' 208 | 'x' 209 | 'y' 210 | 'z' 211 | 'Meta' 212 | '*' 213 | '+' 214 | '-' 215 | '/' 216 | ';' 217 | '=' 218 | ',' 219 | '.' 220 | '`' 221 | '[' 222 | '\\' 223 | ']' 224 | "'" 225 | 'Attn' 226 | 'CrSel' 227 | 'ExSel' 228 | 'EraseEof' 229 | 'Play' 230 | 'ZoomOut' 231 | ')' 232 | '!' 233 | '@' 234 | '#' 235 | '$' 236 | '%' 237 | '^' 238 | '&' 239 | '(' 240 | 'A' 241 | 'B' 242 | 'C' 243 | 'D' 244 | 'E' 245 | 'F' 246 | 'G' 247 | 'H' 248 | 'I' 249 | 'J' 250 | 'K' 251 | 'L' 252 | 'M' 253 | 'N' 254 | 'O' 255 | 'P' 256 | 'Q' 257 | 'R' 258 | 'S' 259 | 'T' 260 | 'U' 261 | 'V' 262 | 'W' 263 | 'X' 264 | 'Y' 265 | 'Z' 266 | ':' 267 | '<' 268 | '_' 269 | '>' 270 | '?' 271 | '~' 272 | '{' 273 | '|' 274 | '}' 275 | '"' 276 | 'SoftLeft' 277 | 'SoftRight' 278 | 'Camera' 279 | 'Call' 280 | 'EndCall' 281 | 'VolumeDown' 282 | 'VolumeUp'; 283 284 /** 285 * @internal 286 */ 287 export const _keyDefinitions: Readonly<Record<KeyInput, KeyDefinition>> = { 288 '0': {keyCode: 48, key: '0', code: 'Digit0'}, 289 '1': {keyCode: 49, key: '1', code: 'Digit1'}, 290 '2': {keyCode: 50, key: '2', code: 'Digit2'}, 291 '3': {keyCode: 51, key: '3', code: 'Digit3'}, 292 '4': {keyCode: 52, key: '4', code: 'Digit4'}, 293 '5': {keyCode: 53, key: '5', code: 'Digit5'}, 294 '6': {keyCode: 54, key: '6', code: 'Digit6'}, 295 '7': {keyCode: 55, key: '7', code: 'Digit7'}, 296 '8': {keyCode: 56, key: '8', code: 'Digit8'}, 297 '9': {keyCode: 57, key: '9', code: 'Digit9'}, 298 Power: {key: 'Power', code: 'Power'}, 299 Eject: {key: 'Eject', code: 'Eject'}, 300 Abort: {keyCode: 3, code: 'Abort', key: 'Cancel'}, 301 Help: {keyCode: 6, code: 'Help', key: 'Help'}, 302 Backspace: {keyCode: 8, code: 'Backspace', key: 'Backspace'}, 303 Tab: {keyCode: 9, code: 'Tab', key: 'Tab'}, 304 Numpad5: { 305 keyCode: 12, 306 shiftKeyCode: 101, 307 key: 'Clear', 308 code: 'Numpad5', 309 shiftKey: '5', 310 location: 3, 311 }, 312 NumpadEnter: { 313 keyCode: 13, 314 code: 'NumpadEnter', 315 key: 'Enter', 316 text: '\r', 317 location: 3, 318 }, 319 Enter: {keyCode: 13, code: 'Enter', key: 'Enter', text: '\r'}, 320 '\r': {keyCode: 13, code: 'Enter', key: 'Enter', text: '\r'}, 321 '\n': {keyCode: 13, code: 'Enter', key: 'Enter', text: '\r'}, 322 ShiftLeft: {keyCode: 16, code: 'ShiftLeft', key: 'Shift', location: 1}, 323 ShiftRight: {keyCode: 16, code: 'ShiftRight', key: 'Shift', location: 2}, 324 ControlLeft: { 325 keyCode: 17, 326 code: 'ControlLeft', 327 key: 'Control', 328 location: 1, 329 }, 330 ControlRight: { 331 keyCode: 17, 332 code: 'ControlRight', 333 key: 'Control', 334 location: 2, 335 }, 336 AltLeft: {keyCode: 18, code: 'AltLeft', key: 'Alt', location: 1}, 337 AltRight: {keyCode: 18, code: 'AltRight', key: 'Alt', location: 2}, 338 Pause: {keyCode: 19, code: 'Pause', key: 'Pause'}, 339 CapsLock: {keyCode: 20, code: 'CapsLock', key: 'CapsLock'}, 340 Escape: {keyCode: 27, code: 'Escape', key: 'Escape'}, 341 Convert: {keyCode: 28, code: 'Convert', key: 'Convert'}, 342 NonConvert: {keyCode: 29, code: 'NonConvert', key: 'NonConvert'}, 343 Space: {keyCode: 32, code: 'Space', key: ' '}, 344 Numpad9: { 345 keyCode: 33, 346 shiftKeyCode: 105, 347 key: 'PageUp', 348 code: 'Numpad9', 349 shiftKey: '9', 350 location: 3, 351 }, 352 PageUp: {keyCode: 33, code: 'PageUp', key: 'PageUp'}, 353 Numpad3: { 354 keyCode: 34, 355 shiftKeyCode: 99, 356 key: 'PageDown', 357 code: 'Numpad3', 358 shiftKey: '3', 359 location: 3, 360 }, 361 PageDown: {keyCode: 34, code: 'PageDown', key: 'PageDown'}, 362 End: {keyCode: 35, code: 'End', key: 'End'}, 363 Numpad1: { 364 keyCode: 35, 365 shiftKeyCode: 97, 366 key: 'End', 367 code: 'Numpad1', 368 shiftKey: '1', 369 location: 3, 370 }, 371 Home: {keyCode: 36, code: 'Home', key: 'Home'}, 372 Numpad7: { 373 keyCode: 36, 374 shiftKeyCode: 103, 375 key: 'Home', 376 code: 'Numpad7', 377 shiftKey: '7', 378 location: 3, 379 }, 380 ArrowLeft: {keyCode: 37, code: 'ArrowLeft', key: 'ArrowLeft'}, 381 Numpad4: { 382 keyCode: 37, 383 shiftKeyCode: 100, 384 key: 'ArrowLeft', 385 code: 'Numpad4', 386 shiftKey: '4', 387 location: 3, 388 }, 389 Numpad8: { 390 keyCode: 38, 391 shiftKeyCode: 104, 392 key: 'ArrowUp', 393 code: 'Numpad8', 394 shiftKey: '8', 395 location: 3, 396 }, 397 ArrowUp: {keyCode: 38, code: 'ArrowUp', key: 'ArrowUp'}, 398 ArrowRight: {keyCode: 39, code: 'ArrowRight', key: 'ArrowRight'}, 399 Numpad6: { 400 keyCode: 39, 401 shiftKeyCode: 102, 402 key: 'ArrowRight', 403 code: 'Numpad6', 404 shiftKey: '6', 405 location: 3, 406 }, 407 Numpad2: { 408 keyCode: 40, 409 shiftKeyCode: 98, 410 key: 'ArrowDown', 411 code: 'Numpad2', 412 shiftKey: '2', 413 location: 3, 414 }, 415 ArrowDown: {keyCode: 40, code: 'ArrowDown', key: 'ArrowDown'}, 416 Select: {keyCode: 41, code: 'Select', key: 'Select'}, 417 Open: {keyCode: 43, code: 'Open', key: 'Execute'}, 418 PrintScreen: {keyCode: 44, code: 'PrintScreen', key: 'PrintScreen'}, 419 Insert: {keyCode: 45, code: 'Insert', key: 'Insert'}, 420 Numpad0: { 421 keyCode: 45, 422 shiftKeyCode: 96, 423 key: 'Insert', 424 code: 'Numpad0', 425 shiftKey: '0', 426 location: 3, 427 }, 428 Delete: {keyCode: 46, code: 'Delete', key: 'Delete'}, 429 NumpadDecimal: { 430 keyCode: 46, 431 shiftKeyCode: 110, 432 code: 'NumpadDecimal', 433 key: '\u0000', 434 shiftKey: '.', 435 location: 3, 436 }, 437 Digit0: {keyCode: 48, code: 'Digit0', shiftKey: ')', key: '0'}, 438 Digit1: {keyCode: 49, code: 'Digit1', shiftKey: '!', key: '1'}, 439 Digit2: {keyCode: 50, code: 'Digit2', shiftKey: '@', key: '2'}, 440 Digit3: {keyCode: 51, code: 'Digit3', shiftKey: '#', key: '3'}, 441 Digit4: {keyCode: 52, code: 'Digit4', shiftKey: '$', key: '4'}, 442 Digit5: {keyCode: 53, code: 'Digit5', shiftKey: '%', key: '5'}, 443 Digit6: {keyCode: 54, code: 'Digit6', shiftKey: '^', key: '6'}, 444 Digit7: {keyCode: 55, code: 'Digit7', shiftKey: '&', key: '7'}, 445 Digit8: {keyCode: 56, code: 'Digit8', shiftKey: '*', key: '8'}, 446 Digit9: {keyCode: 57, code: 'Digit9', shiftKey: '(', key: '9'}, 447 KeyA: {keyCode: 65, code: 'KeyA', shiftKey: 'A', key: 'a'}, 448 KeyB: {keyCode: 66, code: 'KeyB', shiftKey: 'B', key: 'b'}, 449 KeyC: {keyCode: 67, code: 'KeyC', shiftKey: 'C', key: 'c'}, 450 KeyD: {keyCode: 68, code: 'KeyD', shiftKey: 'D', key: 'd'}, 451 KeyE: {keyCode: 69, code: 'KeyE', shiftKey: 'E', key: 'e'}, 452 KeyF: {keyCode: 70, code: 'KeyF', shiftKey: 'F', key: 'f'}, 453 KeyG: {keyCode: 71, code: 'KeyG', shiftKey: 'G', key: 'g'}, 454 KeyH: {keyCode: 72, code: 'KeyH', shiftKey: 'H', key: 'h'}, 455 KeyI: {keyCode: 73, code: 'KeyI', shiftKey: 'I', key: 'i'}, 456 KeyJ: {keyCode: 74, code: 'KeyJ', shiftKey: 'J', key: 'j'}, 457 KeyK: {keyCode: 75, code: 'KeyK', shiftKey: 'K', key: 'k'}, 458 KeyL: {keyCode: 76, code: 'KeyL', shiftKey: 'L', key: 'l'}, 459 KeyM: {keyCode: 77, code: 'KeyM', shiftKey: 'M', key: 'm'}, 460 KeyN: {keyCode: 78, code: 'KeyN', shiftKey: 'N', key: 'n'}, 461 KeyO: {keyCode: 79, code: 'KeyO', shiftKey: 'O', key: 'o'}, 462 KeyP: {keyCode: 80, code: 'KeyP', shiftKey: 'P', key: 'p'}, 463 KeyQ: {keyCode: 81, code: 'KeyQ', shiftKey: 'Q', key: 'q'}, 464 KeyR: {keyCode: 82, code: 'KeyR', shiftKey: 'R', key: 'r'}, 465 KeyS: {keyCode: 83, code: 'KeyS', shiftKey: 'S', key: 's'}, 466 KeyT: {keyCode: 84, code: 'KeyT', shiftKey: 'T', key: 't'}, 467 KeyU: {keyCode: 85, code: 'KeyU', shiftKey: 'U', key: 'u'}, 468 KeyV: {keyCode: 86, code: 'KeyV', shiftKey: 'V', key: 'v'}, 469 KeyW: {keyCode: 87, code: 'KeyW', shiftKey: 'W', key: 'w'}, 470 KeyX: {keyCode: 88, code: 'KeyX', shiftKey: 'X', key: 'x'}, 471 KeyY: {keyCode: 89, code: 'KeyY', shiftKey: 'Y', key: 'y'}, 472 KeyZ: {keyCode: 90, code: 'KeyZ', shiftKey: 'Z', key: 'z'}, 473 MetaLeft: {keyCode: 91, code: 'MetaLeft', key: 'Meta', location: 1}, 474 MetaRight: {keyCode: 92, code: 'MetaRight', key: 'Meta', location: 2}, 475 ContextMenu: {keyCode: 93, code: 'ContextMenu', key: 'ContextMenu'}, 476 NumpadMultiply: { 477 keyCode: 106, 478 code: 'NumpadMultiply', 479 key: '*', 480 location: 3, 481 }, 482 NumpadAdd: {keyCode: 107, code: 'NumpadAdd', key: '+', location: 3}, 483 NumpadSubtract: { 484 keyCode: 109, 485 code: 'NumpadSubtract', 486 key: '-', 487 location: 3, 488 }, 489 NumpadDivide: {keyCode: 111, code: 'NumpadDivide', key: '/', location: 3}, 490 F1: {keyCode: 112, code: 'F1', key: 'F1'}, 491 F2: {keyCode: 113, code: 'F2', key: 'F2'}, 492 F3: {keyCode: 114, code: 'F3', key: 'F3'}, 493 F4: {keyCode: 115, code: 'F4', key: 'F4'}, 494 F5: {keyCode: 116, code: 'F5', key: 'F5'}, 495 F6: {keyCode: 117, code: 'F6', key: 'F6'}, 496 F7: {keyCode: 118, code: 'F7', key: 'F7'}, 497 F8: {keyCode: 119, code: 'F8', key: 'F8'}, 498 F9: {keyCode: 120, code: 'F9', key: 'F9'}, 499 F10: {keyCode: 121, code: 'F10', key: 'F10'}, 500 F11: {keyCode: 122, code: 'F11', key: 'F11'}, 501 F12: {keyCode: 123, code: 'F12', key: 'F12'}, 502 F13: {keyCode: 124, code: 'F13', key: 'F13'}, 503 F14: {keyCode: 125, code: 'F14', key: 'F14'}, 504 F15: {keyCode: 126, code: 'F15', key: 'F15'}, 505 F16: {keyCode: 127, code: 'F16', key: 'F16'}, 506 F17: {keyCode: 128, code: 'F17', key: 'F17'}, 507 F18: {keyCode: 129, code: 'F18', key: 'F18'}, 508 F19: {keyCode: 130, code: 'F19', key: 'F19'}, 509 F20: {keyCode: 131, code: 'F20', key: 'F20'}, 510 F21: {keyCode: 132, code: 'F21', key: 'F21'}, 511 F22: {keyCode: 133, code: 'F22', key: 'F22'}, 512 F23: {keyCode: 134, code: 'F23', key: 'F23'}, 513 F24: {keyCode: 135, code: 'F24', key: 'F24'}, 514 NumLock: {keyCode: 144, code: 'NumLock', key: 'NumLock'}, 515 ScrollLock: {keyCode: 145, code: 'ScrollLock', key: 'ScrollLock'}, 516 AudioVolumeMute: { 517 keyCode: 173, 518 code: 'AudioVolumeMute', 519 key: 'AudioVolumeMute', 520 }, 521 AudioVolumeDown: { 522 keyCode: 174, 523 code: 'AudioVolumeDown', 524 key: 'AudioVolumeDown', 525 }, 526 AudioVolumeUp: {keyCode: 175, code: 'AudioVolumeUp', key: 'AudioVolumeUp'}, 527 MediaTrackNext: { 528 keyCode: 176, 529 code: 'MediaTrackNext', 530 key: 'MediaTrackNext', 531 }, 532 MediaTrackPrevious: { 533 keyCode: 177, 534 code: 'MediaTrackPrevious', 535 key: 'MediaTrackPrevious', 536 }, 537 MediaStop: {keyCode: 178, code: 'MediaStop', key: 'MediaStop'}, 538 MediaPlayPause: { 539 keyCode: 179, 540 code: 'MediaPlayPause', 541 key: 'MediaPlayPause', 542 }, 543 Semicolon: {keyCode: 186, code: 'Semicolon', shiftKey: ':', key: ';'}, 544 Equal: {keyCode: 187, code: 'Equal', shiftKey: '+', key: '='}, 545 NumpadEqual: {keyCode: 187, code: 'NumpadEqual', key: '=', location: 3}, 546 Comma: {keyCode: 188, code: 'Comma', shiftKey: '<', key: ','}, 547 Minus: {keyCode: 189, code: 'Minus', shiftKey: '_', key: '-'}, 548 Period: {keyCode: 190, code: 'Period', shiftKey: '>', key: '.'}, 549 Slash: {keyCode: 191, code: 'Slash', shiftKey: '?', key: '/'}, 550 Backquote: {keyCode: 192, code: 'Backquote', shiftKey: '~', key: '`'}, 551 BracketLeft: {keyCode: 219, code: 'BracketLeft', shiftKey: '{', key: '['}, 552 Backslash: {keyCode: 220, code: 'Backslash', shiftKey: '|', key: '\\'}, 553 BracketRight: {keyCode: 221, code: 'BracketRight', shiftKey: '}', key: ']'}, 554 Quote: {keyCode: 222, code: 'Quote', shiftKey: '"', key: "'"}, 555 AltGraph: {keyCode: 225, code: 'AltGraph', key: 'AltGraph'}, 556 Props: {keyCode: 247, code: 'Props', key: 'CrSel'}, 557 Cancel: {keyCode: 3, key: 'Cancel', code: 'Abort'}, 558 Clear: {keyCode: 12, key: 'Clear', code: 'Numpad5', location: 3}, 559 Shift: {keyCode: 16, key: 'Shift', code: 'ShiftLeft', location: 1}, 560 Control: {keyCode: 17, key: 'Control', code: 'ControlLeft', location: 1}, 561 Alt: {keyCode: 18, key: 'Alt', code: 'AltLeft', location: 1}, 562 Accept: {keyCode: 30, key: 'Accept'}, 563 ModeChange: {keyCode: 31, key: 'ModeChange'}, 564 ' ': {keyCode: 32, key: ' ', code: 'Space'}, 565 Print: {keyCode: 42, key: 'Print'}, 566 Execute: {keyCode: 43, key: 'Execute', code: 'Open'}, 567 '\u0000': {keyCode: 46, key: '\u0000', code: 'NumpadDecimal', location: 3}, 568 a: {keyCode: 65, key: 'a', code: 'KeyA'}, 569 b: {keyCode: 66, key: 'b', code: 'KeyB'}, 570 c: {keyCode: 67, key: 'c', code: 'KeyC'}, 571 d: {keyCode: 68, key: 'd', code: 'KeyD'}, 572 e: {keyCode: 69, key: 'e', code: 'KeyE'}, 573 f: {keyCode: 70, key: 'f', code: 'KeyF'}, 574 g: {keyCode: 71, key: 'g', code: 'KeyG'}, 575 h: {keyCode: 72, key: 'h', code: 'KeyH'}, 576 i: {keyCode: 73, key: 'i', code: 'KeyI'}, 577 j: {keyCode: 74, key: 'j', code: 'KeyJ'}, 578 k: {keyCode: 75, key: 'k', code: 'KeyK'}, 579 l: {keyCode: 76, key: 'l', code: 'KeyL'}, 580 m: {keyCode: 77, key: 'm', code: 'KeyM'}, 581 n: {keyCode: 78, key: 'n', code: 'KeyN'}, 582 o: {keyCode: 79, key: 'o', code: 'KeyO'}, 583 p: {keyCode: 80, key: 'p', code: 'KeyP'}, 584 q: {keyCode: 81, key: 'q', code: 'KeyQ'}, 585 r: {keyCode: 82, key: 'r', code: 'KeyR'}, 586 s: {keyCode: 83, key: 's', code: 'KeyS'}, 587 t: {keyCode: 84, key: 't', code: 'KeyT'}, 588 u: {keyCode: 85, key: 'u', code: 'KeyU'}, 589 v: {keyCode: 86, key: 'v', code: 'KeyV'}, 590 w: {keyCode: 87, key: 'w', code: 'KeyW'}, 591 x: {keyCode: 88, key: 'x', code: 'KeyX'}, 592 y: {keyCode: 89, key: 'y', code: 'KeyY'}, 593 z: {keyCode: 90, key: 'z', code: 'KeyZ'}, 594 Meta: {keyCode: 91, key: 'Meta', code: 'MetaLeft', location: 1}, 595 '*': {keyCode: 106, key: '*', code: 'NumpadMultiply', location: 3}, 596 '+': {keyCode: 107, key: '+', code: 'NumpadAdd', location: 3}, 597 '-': {keyCode: 109, key: '-', code: 'NumpadSubtract', location: 3}, 598 '/': {keyCode: 111, key: '/', code: 'NumpadDivide', location: 3}, 599 ';': {keyCode: 186, key: ';', code: 'Semicolon'}, 600 '=': {keyCode: 187, key: '=', code: 'Equal'}, 601 ',': {keyCode: 188, key: ',', code: 'Comma'}, 602 '.': {keyCode: 190, key: '.', code: 'Period'}, 603 '`': {keyCode: 192, key: '`', code: 'Backquote'}, 604 '[': {keyCode: 219, key: '[', code: 'BracketLeft'}, 605 '\\': {keyCode: 220, key: '\\', code: 'Backslash'}, 606 ']': {keyCode: 221, key: ']', code: 'BracketRight'}, 607 "'": {keyCode: 222, key: "'", code: 'Quote'}, 608 Attn: {keyCode: 246, key: 'Attn'}, 609 CrSel: {keyCode: 247, key: 'CrSel', code: 'Props'}, 610 ExSel: {keyCode: 248, key: 'ExSel'}, 611 EraseEof: {keyCode: 249, key: 'EraseEof'}, 612 Play: {keyCode: 250, key: 'Play'}, 613 ZoomOut: {keyCode: 251, key: 'ZoomOut'}, 614 ')': {keyCode: 48, key: ')', code: 'Digit0'}, 615 '!': {keyCode: 49, key: '!', code: 'Digit1'}, 616 '@': {keyCode: 50, key: '@', code: 'Digit2'}, 617 '#': {keyCode: 51, key: '#', code: 'Digit3'}, 618 $: {keyCode: 52, key: '$', code: 'Digit4'}, 619 '%': {keyCode: 53, key: '%', code: 'Digit5'}, 620 '^': {keyCode: 54, key: '^', code: 'Digit6'}, 621 '&': {keyCode: 55, key: '&', code: 'Digit7'}, 622 '(': {keyCode: 57, key: '(', code: 'Digit9'}, 623 A: {keyCode: 65, key: 'A', code: 'KeyA'}, 624 B: {keyCode: 66, key: 'B', code: 'KeyB'}, 625 C: {keyCode: 67, key: 'C', code: 'KeyC'}, 626 D: {keyCode: 68, key: 'D', code: 'KeyD'}, 627 E: {keyCode: 69, key: 'E', code: 'KeyE'}, 628 F: {keyCode: 70, key: 'F', code: 'KeyF'}, 629 G: {keyCode: 71, key: 'G', code: 'KeyG'}, 630 H: {keyCode: 72, key: 'H', code: 'KeyH'}, 631 I: {keyCode: 73, key: 'I', code: 'KeyI'}, 632 J: {keyCode: 74, key: 'J', code: 'KeyJ'}, 633 K: {keyCode: 75, key: 'K', code: 'KeyK'}, 634 L: {keyCode: 76, key: 'L', code: 'KeyL'}, 635 M: {keyCode: 77, key: 'M', code: 'KeyM'}, 636 N: {keyCode: 78, key: 'N', code: 'KeyN'}, 637 O: {keyCode: 79, key: 'O', code: 'KeyO'}, 638 P: {keyCode: 80, key: 'P', code: 'KeyP'}, 639 Q: {keyCode: 81, key: 'Q', code: 'KeyQ'}, 640 R: {keyCode: 82, key: 'R', code: 'KeyR'}, 641 S: {keyCode: 83, key: 'S', code: 'KeyS'}, 642 T: {keyCode: 84, key: 'T', code: 'KeyT'}, 643 U: {keyCode: 85, key: 'U', code: 'KeyU'}, 644 V: {keyCode: 86, key: 'V', code: 'KeyV'}, 645 W: {keyCode: 87, key: 'W', code: 'KeyW'}, 646 X: {keyCode: 88, key: 'X', code: 'KeyX'}, 647 Y: {keyCode: 89, key: 'Y', code: 'KeyY'}, 648 Z: {keyCode: 90, key: 'Z', code: 'KeyZ'}, 649 ':': {keyCode: 186, key: ':', code: 'Semicolon'}, 650 '<': {keyCode: 188, key: '<', code: 'Comma'}, 651 _: {keyCode: 189, key: '_', code: 'Minus'}, 652 '>': {keyCode: 190, key: '>', code: 'Period'}, 653 '?': {keyCode: 191, key: '?', code: 'Slash'}, 654 '~': {keyCode: 192, key: '~', code: 'Backquote'}, 655 '{': {keyCode: 219, key: '{', code: 'BracketLeft'}, 656 '|': {keyCode: 220, key: '|', code: 'Backslash'}, 657 '}': {keyCode: 221, key: '}', code: 'BracketRight'}, 658 '"': {keyCode: 222, key: '"', code: 'Quote'}, 659 SoftLeft: {key: 'SoftLeft', code: 'SoftLeft', location: 4}, 660 SoftRight: {key: 'SoftRight', code: 'SoftRight', location: 4}, 661 Camera: {keyCode: 44, key: 'Camera', code: 'Camera', location: 4}, 662 Call: {key: 'Call', code: 'Call', location: 4}, 663 EndCall: {keyCode: 95, key: 'EndCall', code: 'EndCall', location: 4}, 664 VolumeDown: { 665 keyCode: 182, 666 key: 'VolumeDown', 667 code: 'VolumeDown', 668 location: 4, 669 }, 670 VolumeUp: {keyCode: 183, key: 'VolumeUp', code: 'VolumeUp', location: 4}, 671 };