| /** |
| * Copyright 2023 Google LLC. |
| * Copyright (c) Microsoft Corporation. |
| * |
| * 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. |
| */ |
| /** |
| * Returns the normalized key value for a given key according to the table: |
| * https://w3c.github.io/webdriver/#dfn-normalized-key-value |
| */ |
| export function getNormalizedKey(value) { |
| switch (value) { |
| case '\uE000': |
| return 'Unidentified'; |
| case '\uE001': |
| return 'Cancel'; |
| case '\uE002': |
| return 'Help'; |
| case '\uE003': |
| return 'Backspace'; |
| case '\uE004': |
| return 'Tab'; |
| case '\uE005': |
| return 'Clear'; |
| // Specification declares the '\uE006' to be `Return`, but it is not supported by |
| // Chrome, so fall back to `Enter`, which aligns with WPT. |
| case '\uE006': |
| case '\uE007': |
| return 'Enter'; |
| case '\uE008': |
| return 'Shift'; |
| case '\uE009': |
| return 'Control'; |
| case '\uE00A': |
| return 'Alt'; |
| case '\uE00B': |
| return 'Pause'; |
| case '\uE00C': |
| return 'Escape'; |
| case '\uE00D': |
| return ' '; |
| case '\uE00E': |
| return 'PageUp'; |
| case '\uE00F': |
| return 'PageDown'; |
| case '\uE010': |
| return 'End'; |
| case '\uE011': |
| return 'Home'; |
| case '\uE012': |
| return 'ArrowLeft'; |
| case '\uE013': |
| return 'ArrowUp'; |
| case '\uE014': |
| return 'ArrowRight'; |
| case '\uE015': |
| return 'ArrowDown'; |
| case '\uE016': |
| return 'Insert'; |
| case '\uE017': |
| return 'Delete'; |
| case '\uE018': |
| return ';'; |
| case '\uE019': |
| return '='; |
| case '\uE01A': |
| return '0'; |
| case '\uE01B': |
| return '1'; |
| case '\uE01C': |
| return '2'; |
| case '\uE01D': |
| return '3'; |
| case '\uE01E': |
| return '4'; |
| case '\uE01F': |
| return '5'; |
| case '\uE020': |
| return '6'; |
| case '\uE021': |
| return '7'; |
| case '\uE022': |
| return '8'; |
| case '\uE023': |
| return '9'; |
| case '\uE024': |
| return '*'; |
| case '\uE025': |
| return '+'; |
| case '\uE026': |
| return ','; |
| case '\uE027': |
| return '-'; |
| case '\uE028': |
| return '.'; |
| case '\uE029': |
| return '/'; |
| case '\uE031': |
| return 'F1'; |
| case '\uE032': |
| return 'F2'; |
| case '\uE033': |
| return 'F3'; |
| case '\uE034': |
| return 'F4'; |
| case '\uE035': |
| return 'F5'; |
| case '\uE036': |
| return 'F6'; |
| case '\uE037': |
| return 'F7'; |
| case '\uE038': |
| return 'F8'; |
| case '\uE039': |
| return 'F9'; |
| case '\uE03A': |
| return 'F10'; |
| case '\uE03B': |
| return 'F11'; |
| case '\uE03C': |
| return 'F12'; |
| case '\uE03D': |
| return 'Meta'; |
| case '\uE040': |
| return 'ZenkakuHankaku'; |
| case '\uE050': |
| return 'Shift'; |
| case '\uE051': |
| return 'Control'; |
| case '\uE052': |
| return 'Alt'; |
| case '\uE053': |
| return 'Meta'; |
| case '\uE054': |
| return 'PageUp'; |
| case '\uE055': |
| return 'PageDown'; |
| case '\uE056': |
| return 'End'; |
| case '\uE057': |
| return 'Home'; |
| case '\uE058': |
| return 'ArrowLeft'; |
| case '\uE059': |
| return 'ArrowUp'; |
| case '\uE05A': |
| return 'ArrowRight'; |
| case '\uE05B': |
| return 'ArrowDown'; |
| case '\uE05C': |
| return 'Insert'; |
| case '\uE05D': |
| return 'Delete'; |
| default: |
| return value; |
| } |
| } |
| /** |
| * Returns the key code for a given key according to the table: |
| * https://w3c.github.io/webdriver/#dfn-shifted-character |
| */ |
| export function getKeyCode(key) { |
| switch (key) { |
| case '`': |
| case '~': |
| return 'Backquote'; |
| case '\\': |
| case '|': |
| return 'Backslash'; |
| case '\uE003': |
| return 'Backspace'; |
| case '[': |
| case '{': |
| return 'BracketLeft'; |
| case ']': |
| case '}': |
| return 'BracketRight'; |
| case ',': |
| case '<': |
| return 'Comma'; |
| case '0': |
| case ')': |
| return 'Digit0'; |
| case '1': |
| case '!': |
| return 'Digit1'; |
| case '2': |
| case '@': |
| return 'Digit2'; |
| case '3': |
| case '#': |
| return 'Digit3'; |
| case '4': |
| case '$': |
| return 'Digit4'; |
| case '5': |
| case '%': |
| return 'Digit5'; |
| case '6': |
| case '^': |
| return 'Digit6'; |
| case '7': |
| case '&': |
| return 'Digit7'; |
| case '8': |
| case '*': |
| return 'Digit8'; |
| case '9': |
| case '(': |
| return 'Digit9'; |
| case '=': |
| case '+': |
| return 'Equal'; |
| // The spec declares the '<' to be `IntlBackslash` as well, but it is already covered |
| // in the `Comma` above. |
| case '>': |
| return 'IntlBackslash'; |
| case 'a': |
| case 'A': |
| return 'KeyA'; |
| case 'b': |
| case 'B': |
| return 'KeyB'; |
| case 'c': |
| case 'C': |
| return 'KeyC'; |
| case 'd': |
| case 'D': |
| return 'KeyD'; |
| case 'e': |
| case 'E': |
| return 'KeyE'; |
| case 'f': |
| case 'F': |
| return 'KeyF'; |
| case 'g': |
| case 'G': |
| return 'KeyG'; |
| case 'h': |
| case 'H': |
| return 'KeyH'; |
| case 'i': |
| case 'I': |
| return 'KeyI'; |
| case 'j': |
| case 'J': |
| return 'KeyJ'; |
| case 'k': |
| case 'K': |
| return 'KeyK'; |
| case 'l': |
| case 'L': |
| return 'KeyL'; |
| case 'm': |
| case 'M': |
| return 'KeyM'; |
| case 'n': |
| case 'N': |
| return 'KeyN'; |
| case 'o': |
| case 'O': |
| return 'KeyO'; |
| case 'p': |
| case 'P': |
| return 'KeyP'; |
| case 'q': |
| case 'Q': |
| return 'KeyQ'; |
| case 'r': |
| case 'R': |
| return 'KeyR'; |
| case 's': |
| case 'S': |
| return 'KeyS'; |
| case 't': |
| case 'T': |
| return 'KeyT'; |
| case 'u': |
| case 'U': |
| return 'KeyU'; |
| case 'v': |
| case 'V': |
| return 'KeyV'; |
| case 'w': |
| case 'W': |
| return 'KeyW'; |
| case 'x': |
| case 'X': |
| return 'KeyX'; |
| case 'y': |
| case 'Y': |
| return 'KeyY'; |
| case 'z': |
| case 'Z': |
| return 'KeyZ'; |
| case '-': |
| case '_': |
| return 'Minus'; |
| case '.': |
| return 'Period'; |
| case "'": |
| case '"': |
| return 'Quote'; |
| case ';': |
| case ':': |
| return 'Semicolon'; |
| case '/': |
| case '?': |
| return 'Slash'; |
| case '\uE00A': |
| return 'AltLeft'; |
| case '\uE052': |
| return 'AltRight'; |
| case '\uE009': |
| return 'ControlLeft'; |
| case '\uE051': |
| return 'ControlRight'; |
| case '\uE006': |
| return 'Enter'; |
| case '\uE00B': |
| return 'Pause'; |
| case '\uE03D': |
| return 'MetaLeft'; |
| case '\uE053': |
| return 'MetaRight'; |
| case '\uE008': |
| return 'ShiftLeft'; |
| case '\uE050': |
| return 'ShiftRight'; |
| case ' ': |
| case '\uE00D': |
| return 'Space'; |
| case '\uE004': |
| return 'Tab'; |
| case '\uE017': |
| return 'Delete'; |
| case '\uE010': |
| return 'End'; |
| case '\uE002': |
| return 'Help'; |
| case '\uE011': |
| return 'Home'; |
| case '\uE016': |
| return 'Insert'; |
| case '\uE00F': |
| return 'PageDown'; |
| case '\uE00E': |
| return 'PageUp'; |
| case '\uE015': |
| return 'ArrowDown'; |
| case '\uE012': |
| return 'ArrowLeft'; |
| case '\uE014': |
| return 'ArrowRight'; |
| case '\uE013': |
| return 'ArrowUp'; |
| case '\uE00C': |
| return 'Escape'; |
| case '\uE031': |
| return 'F1'; |
| case '\uE032': |
| return 'F2'; |
| case '\uE033': |
| return 'F3'; |
| case '\uE034': |
| return 'F4'; |
| case '\uE035': |
| return 'F5'; |
| case '\uE036': |
| return 'F6'; |
| case '\uE037': |
| return 'F7'; |
| case '\uE038': |
| return 'F8'; |
| case '\uE039': |
| return 'F9'; |
| case '\uE03A': |
| return 'F10'; |
| case '\uE03B': |
| return 'F11'; |
| case '\uE03C': |
| return 'F12'; |
| case '\uE019': |
| return 'NumpadEqual'; |
| case '\uE01A': |
| case '\uE05C': |
| return 'Numpad0'; |
| case '\uE01B': |
| case '\uE056': |
| return 'Numpad1'; |
| case '\uE01C': |
| case '\uE05B': |
| return 'Numpad2'; |
| case '\uE01D': |
| case '\uE055': |
| return 'Numpad3'; |
| case '\uE01E': |
| case '\uE058': |
| return 'Numpad4'; |
| case '\uE01F': |
| return 'Numpad5'; |
| case '\uE020': |
| case '\uE05A': |
| return 'Numpad6'; |
| case '\uE021': |
| case '\uE057': |
| return 'Numpad7'; |
| case '\uE022': |
| case '\uE059': |
| return 'Numpad8'; |
| case '\uE023': |
| case '\uE054': |
| return 'Numpad9'; |
| case '\uE025': |
| return 'NumpadAdd'; |
| case '\uE026': |
| return 'NumpadComma'; |
| case '\uE028': |
| case '\uE05D': |
| return 'NumpadDecimal'; |
| case '\uE029': |
| return 'NumpadDivide'; |
| case '\uE007': |
| return 'NumpadEnter'; |
| case '\uE024': |
| return 'NumpadMultiply'; |
| case '\uE027': |
| return 'NumpadSubtract'; |
| default: |
| return; |
| } |
| } |
| /** |
| * Returns the location of the key according to the table: |
| * https://w3c.github.io/webdriver/#dfn-key-location |
| */ |
| export function getKeyLocation(key) { |
| switch (key) { |
| case '\uE007': |
| case '\uE008': |
| case '\uE009': |
| case '\uE00A': |
| case '\uE03D': |
| return 1; |
| case '\uE019': |
| case '\uE01A': |
| case '\uE01B': |
| case '\uE01C': |
| case '\uE01D': |
| case '\uE01E': |
| case '\uE01F': |
| case '\uE020': |
| case '\uE021': |
| case '\uE022': |
| case '\uE023': |
| case '\uE024': |
| case '\uE025': |
| case '\uE026': |
| case '\uE027': |
| case '\uE028': |
| case '\uE029': |
| case '\uE054': |
| case '\uE055': |
| case '\uE056': |
| case '\uE057': |
| case '\uE058': |
| case '\uE059': |
| case '\uE05A': |
| case '\uE05B': |
| case '\uE05C': |
| case '\uE05D': |
| return 3; |
| case '\uE050': |
| case '\uE051': |
| case '\uE052': |
| case '\uE053': |
| return 2; |
| default: |
| return 0; |
| } |
| } |
| //# sourceMappingURL=keyUtils.js.map |