diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts index 0b9f8842f3a1f260144974d049daef7053089a12..d65685d2b00687be43f1899308b2d216d8689981 100644 --- a/src/vs/base/browser/keyboardEvent.ts +++ b/src/vs/base/browser/keyboardEvent.ts @@ -72,6 +72,22 @@ let KEY_CODE_MAP: {[keyCode:number]:KeyCode} = {}; KEY_CODE_MAP[93] = KeyCode.ContextMenu; + KEY_CODE_MAP[96] = KeyCode.NUMPAD_0; + KEY_CODE_MAP[97] = KeyCode.NUMPAD_1; + KEY_CODE_MAP[98] = KeyCode.NUMPAD_2; + KEY_CODE_MAP[99] = KeyCode.NUMPAD_3; + KEY_CODE_MAP[100] = KeyCode.NUMPAD_4; + KEY_CODE_MAP[101] = KeyCode.NUMPAD_5; + KEY_CODE_MAP[102] = KeyCode.NUMPAD_6; + KEY_CODE_MAP[103] = KeyCode.NUMPAD_7; + KEY_CODE_MAP[104] = KeyCode.NUMPAD_8; + KEY_CODE_MAP[105] = KeyCode.NUMPAD_9; + KEY_CODE_MAP[106] = KeyCode.NUMPAD_MULTIPLY; + KEY_CODE_MAP[107] = KeyCode.NUMPAD_ADD; + KEY_CODE_MAP[109] = KeyCode.NUMPAD_SUBTRACT; + KEY_CODE_MAP[110] = KeyCode.NUMPAD_DECIMAL; + KEY_CODE_MAP[111] = KeyCode.NUMPAD_DIVIDE; + KEY_CODE_MAP[112] = KeyCode.F1; KEY_CODE_MAP[113] = KeyCode.F2; KEY_CODE_MAP[114] = KeyCode.F3; diff --git a/src/vs/base/common/keyCodes.ts b/src/vs/base/common/keyCodes.ts index c2dcc38ef861286037bfca90b43d110a76e044f2..f3c933f0d8b44134161c451184702b47d6b45e72 100644 --- a/src/vs/base/common/keyCodes.ts +++ b/src/vs/base/common/keyCodes.ts @@ -142,6 +142,24 @@ export enum KeyCode { */ US_QUOTE, + NUMPAD_0, // VK_NUMPAD0, 0x60, Numeric keypad 0 key + NUMPAD_1, // VK_NUMPAD1, 0x61, Numeric keypad 1 key + NUMPAD_2, // VK_NUMPAD2, 0x62, Numeric keypad 2 key + NUMPAD_3, // VK_NUMPAD3, 0x63, Numeric keypad 3 key + NUMPAD_4, // VK_NUMPAD4, 0x64, Numeric keypad 4 key + NUMPAD_5, // VK_NUMPAD5, 0x65, Numeric keypad 5 key + NUMPAD_6, // VK_NUMPAD6, 0x66, Numeric keypad 6 key + NUMPAD_7, // VK_NUMPAD7, 0x67, Numeric keypad 7 key + NUMPAD_8, // VK_NUMPAD8, 0x68, Numeric keypad 8 key + NUMPAD_9, // VK_NUMPAD9, 0x69, Numeric keypad 9 key + + NUMPAD_MULTIPLY, // VK_MULTIPLY, 0x6A, Multiply key + NUMPAD_ADD, // VK_ADD, 0x6B, Add key + // NUMPAD_SEPARATOR, // VK_SEPARATOR, 0x6C, Separator key + NUMPAD_SUBTRACT, // VK_SUBTRACT, 0x6D, Subtract key + NUMPAD_DECIMAL, // VK_DECIMAL, 0x6E, Decimal key + NUMPAD_DIVIDE, // VK_DIVIDE, 0x6F, + /** * Placed last to cover the length of the enum. */ @@ -240,13 +258,40 @@ let TO_STRING_MAP: string[] = []; TO_STRING_MAP[KeyCode.US_BACKSLASH] = '\\'; TO_STRING_MAP[KeyCode.US_CLOSE_SQUARE_BRACKET] = ']'; TO_STRING_MAP[KeyCode.US_QUOTE] = '\''; + + TO_STRING_MAP[KeyCode.NUMPAD_0] = 'NumPad0'; + TO_STRING_MAP[KeyCode.NUMPAD_1] = 'NumPad1'; + TO_STRING_MAP[KeyCode.NUMPAD_2] = 'NumPad2'; + TO_STRING_MAP[KeyCode.NUMPAD_3] = 'NumPad3'; + TO_STRING_MAP[KeyCode.NUMPAD_4] = 'NumPad4'; + TO_STRING_MAP[KeyCode.NUMPAD_5] = 'NumPad5'; + TO_STRING_MAP[KeyCode.NUMPAD_6] = 'NumPad6'; + TO_STRING_MAP[KeyCode.NUMPAD_7] = 'NumPad7'; + TO_STRING_MAP[KeyCode.NUMPAD_8] = 'NumPad8'; + TO_STRING_MAP[KeyCode.NUMPAD_9] = 'NumPad9'; + + TO_STRING_MAP[KeyCode.NUMPAD_MULTIPLY] = 'NumPad_Multiply'; + TO_STRING_MAP[KeyCode.NUMPAD_ADD] = 'NumPad_Add'; + TO_STRING_MAP[KeyCode.NUMPAD_SUBTRACT] = 'NumPad_Subtract'; + TO_STRING_MAP[KeyCode.NUMPAD_DECIMAL] = 'NumPad_Decimal'; + TO_STRING_MAP[KeyCode.NUMPAD_DIVIDE] = 'NumPad_Divide'; + + // for (let i = 0; i < KeyCode.MAX_VALUE; i++) { + // if (!TO_STRING_MAP[i]) { + // console.warn('Missing string representation for ' + KeyCode[i]); + // } + // } })(); let FROM_STRING_MAP: {[str:string]:KeyCode;} = {}; FROM_STRING_MAP['\r'] = KeyCode.Enter; (function() { for (let i = 0, len = TO_STRING_MAP.length; i < len; i++) { + if (!TO_STRING_MAP[i]) { + continue; + } FROM_STRING_MAP[TO_STRING_MAP[i]] = i; + FROM_STRING_MAP[TO_STRING_MAP[i].toLowerCase()] = i; } })(); diff --git a/src/vs/platform/keybinding/common/commonKeybindingResolver.ts b/src/vs/platform/keybinding/common/commonKeybindingResolver.ts index e0ffc6af39d079f35bfd539cad99a7ee2d180c7e..e64a44e30ed9ff0ceff52f06f5105de89036bb21 100644 --- a/src/vs/platform/keybinding/common/commonKeybindingResolver.ts +++ b/src/vs/platform/keybinding/common/commonKeybindingResolver.ts @@ -478,7 +478,7 @@ export class IOSupport { key = input; } - let keyCode = KeyCode.fromString(IOSupport.capitalizeKey(key)); + let keyCode = KeyCode.fromString(key); let result = 0; if (ctrlCmd) { @@ -497,39 +497,6 @@ export class IOSupport { return KeyMod.chord(result, chord); } - private static capitalizeKey(key: string): string { - if (!key || key.length === 0) { - return key; - } - - switch (key) { - case 'pausebreak': - return 'PauseBreak'; - case 'capslock': - return 'CapsLock'; - case 'pageup': - return 'PageUp'; - case 'pagedown': - return 'PageDown'; - case 'leftarrow': - return 'LeftArrow'; - case 'uparrow': - return 'UpArrow'; - case 'rightarrow': - return 'RightArrow'; - case 'downarrow': - return 'DownArrow'; - case 'contextmenu': - return 'ContextMenu'; - case 'numlock': - return 'NumLock'; - case 'scrolllock': - return 'ScrollLock'; - } - - return key.charAt(0).toUpperCase() + key.substr(1); - } - private static writeKeybindingContexts(out: OutputBuilder, context: IKeybindingContextRule[]): void { var lastCtxIndex = context.length - 1; context.forEach((c, i) => {