提交 f0f71be9 编写于 作者: A Alex Dima

Fixes #983: Add support for numpad keys

上级 646343c5
......@@ -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;
......
......@@ -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;
}
})();
......
......@@ -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) => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册