| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { illegalArgument } from './errors.js';
- class KeyCodeStrMap {
- constructor() {
- this._keyCodeToStr = [];
- this._strToKeyCode = Object.create(null);
- }
- define(keyCode, str) {
- this._keyCodeToStr[keyCode] = str;
- this._strToKeyCode[str.toLowerCase()] = keyCode;
- }
- keyCodeToStr(keyCode) {
- return this._keyCodeToStr[keyCode];
- }
- strToKeyCode(str) {
- return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;
- }
- }
- const uiMap = new KeyCodeStrMap();
- const userSettingsUSMap = new KeyCodeStrMap();
- const userSettingsGeneralMap = new KeyCodeStrMap();
- (function () {
- function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {
- uiMap.define(keyCode, uiLabel);
- userSettingsUSMap.define(keyCode, usUserSettingsLabel);
- userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);
- }
- define(0 /* Unknown */, 'unknown');
- define(1 /* Backspace */, 'Backspace');
- define(2 /* Tab */, 'Tab');
- define(3 /* Enter */, 'Enter');
- define(4 /* Shift */, 'Shift');
- define(5 /* Ctrl */, 'Ctrl');
- define(6 /* Alt */, 'Alt');
- define(7 /* PauseBreak */, 'PauseBreak');
- define(8 /* CapsLock */, 'CapsLock');
- define(9 /* Escape */, 'Escape');
- define(10 /* Space */, 'Space');
- define(11 /* PageUp */, 'PageUp');
- define(12 /* PageDown */, 'PageDown');
- define(13 /* End */, 'End');
- define(14 /* Home */, 'Home');
- define(15 /* LeftArrow */, 'LeftArrow', 'Left');
- define(16 /* UpArrow */, 'UpArrow', 'Up');
- define(17 /* RightArrow */, 'RightArrow', 'Right');
- define(18 /* DownArrow */, 'DownArrow', 'Down');
- define(19 /* Insert */, 'Insert');
- define(20 /* Delete */, 'Delete');
- define(21 /* KEY_0 */, '0');
- define(22 /* KEY_1 */, '1');
- define(23 /* KEY_2 */, '2');
- define(24 /* KEY_3 */, '3');
- define(25 /* KEY_4 */, '4');
- define(26 /* KEY_5 */, '5');
- define(27 /* KEY_6 */, '6');
- define(28 /* KEY_7 */, '7');
- define(29 /* KEY_8 */, '8');
- define(30 /* KEY_9 */, '9');
- define(31 /* KEY_A */, 'A');
- define(32 /* KEY_B */, 'B');
- define(33 /* KEY_C */, 'C');
- define(34 /* KEY_D */, 'D');
- define(35 /* KEY_E */, 'E');
- define(36 /* KEY_F */, 'F');
- define(37 /* KEY_G */, 'G');
- define(38 /* KEY_H */, 'H');
- define(39 /* KEY_I */, 'I');
- define(40 /* KEY_J */, 'J');
- define(41 /* KEY_K */, 'K');
- define(42 /* KEY_L */, 'L');
- define(43 /* KEY_M */, 'M');
- define(44 /* KEY_N */, 'N');
- define(45 /* KEY_O */, 'O');
- define(46 /* KEY_P */, 'P');
- define(47 /* KEY_Q */, 'Q');
- define(48 /* KEY_R */, 'R');
- define(49 /* KEY_S */, 'S');
- define(50 /* KEY_T */, 'T');
- define(51 /* KEY_U */, 'U');
- define(52 /* KEY_V */, 'V');
- define(53 /* KEY_W */, 'W');
- define(54 /* KEY_X */, 'X');
- define(55 /* KEY_Y */, 'Y');
- define(56 /* KEY_Z */, 'Z');
- define(57 /* Meta */, 'Meta');
- define(58 /* ContextMenu */, 'ContextMenu');
- define(59 /* F1 */, 'F1');
- define(60 /* F2 */, 'F2');
- define(61 /* F3 */, 'F3');
- define(62 /* F4 */, 'F4');
- define(63 /* F5 */, 'F5');
- define(64 /* F6 */, 'F6');
- define(65 /* F7 */, 'F7');
- define(66 /* F8 */, 'F8');
- define(67 /* F9 */, 'F9');
- define(68 /* F10 */, 'F10');
- define(69 /* F11 */, 'F11');
- define(70 /* F12 */, 'F12');
- define(71 /* F13 */, 'F13');
- define(72 /* F14 */, 'F14');
- define(73 /* F15 */, 'F15');
- define(74 /* F16 */, 'F16');
- define(75 /* F17 */, 'F17');
- define(76 /* F18 */, 'F18');
- define(77 /* F19 */, 'F19');
- define(78 /* NumLock */, 'NumLock');
- define(79 /* ScrollLock */, 'ScrollLock');
- define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');
- define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');
- define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');
- define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');
- define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');
- define(85 /* US_SLASH */, '/', '/', 'OEM_2');
- define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');
- define(110 /* ABNT_C1 */, 'ABNT_C1');
- define(111 /* ABNT_C2 */, 'ABNT_C2');
- define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');
- define(88 /* US_BACKSLASH */, '\\', '\\', 'OEM_5');
- define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');
- define(90 /* US_QUOTE */, '\'', '\'', 'OEM_7');
- define(91 /* OEM_8 */, 'OEM_8');
- define(92 /* OEM_102 */, 'OEM_102');
- define(93 /* NUMPAD_0 */, 'NumPad0');
- define(94 /* NUMPAD_1 */, 'NumPad1');
- define(95 /* NUMPAD_2 */, 'NumPad2');
- define(96 /* NUMPAD_3 */, 'NumPad3');
- define(97 /* NUMPAD_4 */, 'NumPad4');
- define(98 /* NUMPAD_5 */, 'NumPad5');
- define(99 /* NUMPAD_6 */, 'NumPad6');
- define(100 /* NUMPAD_7 */, 'NumPad7');
- define(101 /* NUMPAD_8 */, 'NumPad8');
- define(102 /* NUMPAD_9 */, 'NumPad9');
- define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');
- define(104 /* NUMPAD_ADD */, 'NumPad_Add');
- define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');
- define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');
- define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');
- define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');
- })();
- export var KeyCodeUtils;
- (function (KeyCodeUtils) {
- function toString(keyCode) {
- return uiMap.keyCodeToStr(keyCode);
- }
- KeyCodeUtils.toString = toString;
- function fromString(key) {
- return uiMap.strToKeyCode(key);
- }
- KeyCodeUtils.fromString = fromString;
- function toUserSettingsUS(keyCode) {
- return userSettingsUSMap.keyCodeToStr(keyCode);
- }
- KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;
- function toUserSettingsGeneral(keyCode) {
- return userSettingsGeneralMap.keyCodeToStr(keyCode);
- }
- KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;
- function fromUserSettings(key) {
- return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);
- }
- KeyCodeUtils.fromUserSettings = fromUserSettings;
- })(KeyCodeUtils || (KeyCodeUtils = {}));
- export function KeyChord(firstPart, secondPart) {
- const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;
- return (firstPart | chordPart) >>> 0;
- }
- export function createKeybinding(keybinding, OS) {
- if (keybinding === 0) {
- return null;
- }
- const firstPart = (keybinding & 0x0000FFFF) >>> 0;
- const chordPart = (keybinding & 0xFFFF0000) >>> 16;
- if (chordPart !== 0) {
- return new ChordKeybinding([
- createSimpleKeybinding(firstPart, OS),
- createSimpleKeybinding(chordPart, OS)
- ]);
- }
- return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);
- }
- export function createSimpleKeybinding(keybinding, OS) {
- const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);
- const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);
- const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);
- const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);
- const altKey = (keybinding & 512 /* Alt */ ? true : false);
- const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);
- const keyCode = (keybinding & 255 /* KeyCode */);
- return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);
- }
- export class SimpleKeybinding {
- constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {
- this.ctrlKey = ctrlKey;
- this.shiftKey = shiftKey;
- this.altKey = altKey;
- this.metaKey = metaKey;
- this.keyCode = keyCode;
- }
- equals(other) {
- return (this.ctrlKey === other.ctrlKey
- && this.shiftKey === other.shiftKey
- && this.altKey === other.altKey
- && this.metaKey === other.metaKey
- && this.keyCode === other.keyCode);
- }
- isModifierKey() {
- return (this.keyCode === 0 /* Unknown */
- || this.keyCode === 5 /* Ctrl */
- || this.keyCode === 57 /* Meta */
- || this.keyCode === 6 /* Alt */
- || this.keyCode === 4 /* Shift */);
- }
- toChord() {
- return new ChordKeybinding([this]);
- }
- /**
- * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?
- */
- isDuplicateModifierCase() {
- return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)
- || (this.shiftKey && this.keyCode === 4 /* Shift */)
- || (this.altKey && this.keyCode === 6 /* Alt */)
- || (this.metaKey && this.keyCode === 57 /* Meta */));
- }
- }
- export class ChordKeybinding {
- constructor(parts) {
- if (parts.length === 0) {
- throw illegalArgument(`parts`);
- }
- this.parts = parts;
- }
- }
- export class ResolvedKeybindingPart {
- constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {
- this.ctrlKey = ctrlKey;
- this.shiftKey = shiftKey;
- this.altKey = altKey;
- this.metaKey = metaKey;
- this.keyLabel = kbLabel;
- this.keyAriaLabel = kbAriaLabel;
- }
- }
- /**
- * A resolved keybinding. Can be a simple keybinding or a chord keybinding.
- */
- export class ResolvedKeybinding {
- }
|