| /** |
| * 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'}, |
| '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}, |
| }; |