diff --git a/src/vs/base/browser/keyboardEvent.ts b/src/vs/base/browser/keyboardEvent.ts index ca3450b61b495eb4ce03767d651fc50bced48dda..6f90f1b1b07518b53a641a1f6359a7cb0f0419fa 100644 --- a/src/vs/base/browser/keyboardEvent.ts +++ b/src/vs/base/browser/keyboardEvent.ts @@ -120,6 +120,8 @@ let KEY_CODE_MAP: { [keyCode: number]: KeyCode } = {}; KEY_CODE_MAP[190] = KeyCode.US_DOT; KEY_CODE_MAP[191] = KeyCode.US_SLASH; KEY_CODE_MAP[192] = KeyCode.US_BACKTICK; + KEY_CODE_MAP[193] = KeyCode.ABNT_C1; + KEY_CODE_MAP[194] = KeyCode.ABNT_C2; KEY_CODE_MAP[219] = KeyCode.US_OPEN_SQUARE_BRACKET; KEY_CODE_MAP[220] = KeyCode.US_BACKSLASH; KEY_CODE_MAP[221] = KeyCode.US_CLOSE_SQUARE_BRACKET; diff --git a/src/vs/base/common/keyCodes.ts b/src/vs/base/common/keyCodes.ts index ff89f086e5783a28128ec37b20ca475cb432f2d7..c2b5c9d519aafb423f5e2771c65f6e00a70f12b8 100644 --- a/src/vs/base/common/keyCodes.ts +++ b/src/vs/base/common/keyCodes.ts @@ -190,6 +190,9 @@ export const enum KeyCode { */ KEY_IN_COMPOSITION = 109, + ABNT_C1 = 110, // Brazilian (ABNT) Keyboard + ABNT_C2 = 111, // Brazilian (ABNT) Keyboard + /** * Placed last to cover the length of the enum. * Please do not depend on this value! @@ -344,6 +347,8 @@ let STRING = createMapping((TO_STRING_MAP) => { TO_STRING_MAP[KeyCode.US_DOT] = '.'; TO_STRING_MAP[KeyCode.US_SLASH] = '/'; TO_STRING_MAP[KeyCode.US_BACKTICK] = '`'; + TO_STRING_MAP[KeyCode.ABNT_C1] = 'ABNT_C1'; + TO_STRING_MAP[KeyCode.ABNT_C2] = 'ABNT_C2'; TO_STRING_MAP[KeyCode.US_OPEN_SQUARE_BRACKET] = '['; TO_STRING_MAP[KeyCode.US_BACKSLASH] = '\\'; TO_STRING_MAP[KeyCode.US_CLOSE_SQUARE_BRACKET] = ']'; @@ -395,6 +400,8 @@ export let USER_SETTINGS = createMapping((TO_USER_SETTINGS_MAP) => { FROM_USER_SETTINGS_MAP['OEM_PERIOD'] = KeyCode.US_DOT; FROM_USER_SETTINGS_MAP['OEM_2'] = KeyCode.US_SLASH; FROM_USER_SETTINGS_MAP['OEM_3'] = KeyCode.US_BACKTICK; + FROM_USER_SETTINGS_MAP['ABNT_C1'] = KeyCode.ABNT_C1; + FROM_USER_SETTINGS_MAP['ABNT_C2'] = KeyCode.ABNT_C2; FROM_USER_SETTINGS_MAP['OEM_4'] = KeyCode.US_OPEN_SQUARE_BRACKET; FROM_USER_SETTINGS_MAP['OEM_5'] = KeyCode.US_BACKSLASH; FROM_USER_SETTINGS_MAP['OEM_6'] = KeyCode.US_CLOSE_SQUARE_BRACKET; diff --git a/src/vs/editor/common/standalone/standaloneBase.ts b/src/vs/editor/common/standalone/standaloneBase.ts index fcab19ff6e82d048ed8afb862a30b1acabed3034..695aa77b9bfdb0e7006675e890a78cead7b530cf 100644 --- a/src/vs/editor/common/standalone/standaloneBase.ts +++ b/src/vs/editor/common/standalone/standaloneBase.ts @@ -16,6 +16,7 @@ import URI from 'vs/base/common/uri'; // -------------------------------------------- // This is repeated here so it can be exported +// because TS inlines const enums // -------------------------------------------- export enum Severity { Ignore = 0, @@ -26,6 +27,7 @@ export enum Severity { // -------------------------------------------- // This is repeated here so it can be exported +// because TS inlines const enums // -------------------------------------------- export class KeyMod { public static readonly CtrlCmd: number = ConstKeyMod.CtrlCmd; @@ -40,6 +42,7 @@ export class KeyMod { // -------------------------------------------- // This is repeated here so it can be exported +// because TS inlines const enums // -------------------------------------------- /** * Virtual Key Codes, the value does not hold any inherent meaning. @@ -213,6 +216,8 @@ export enum KeyCode { * Cover all key codes when IME is processing input. */ KEY_IN_COMPOSITION = 109, + ABNT_C1 = 110, + ABNT_C2 = 111, /** * Placed last to cover the length of the enum. * Please do not depend on this value! diff --git a/src/vs/editor/test/common/standalone/standaloneBase.test.ts b/src/vs/editor/test/common/standalone/standaloneBase.test.ts index c26df8b28e662c87dd32594936afb8cb61189a96..64849eb80cb62b50bdcc854c12a2691e78551822 100644 --- a/src/vs/editor/test/common/standalone/standaloneBase.test.ts +++ b/src/vs/editor/test/common/standalone/standaloneBase.test.ts @@ -135,6 +135,8 @@ suite('KeyCode', () => { assertKeyCode(StandaloneKeyCode.NUMPAD_DECIMAL, RuntimeKeyCode.NUMPAD_DECIMAL); assertKeyCode(StandaloneKeyCode.NUMPAD_DIVIDE, RuntimeKeyCode.NUMPAD_DIVIDE); assertKeyCode(StandaloneKeyCode.KEY_IN_COMPOSITION, RuntimeKeyCode.KEY_IN_COMPOSITION); + assertKeyCode(StandaloneKeyCode.ABNT_C1, RuntimeKeyCode.ABNT_C1); + assertKeyCode(StandaloneKeyCode.ABNT_C2, RuntimeKeyCode.ABNT_C2); assertKeyCode(StandaloneKeyCode.MAX_VALUE, RuntimeKeyCode.MAX_VALUE); }); }); diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index d846cf7556be4aac399e43b04a5e5028d8d5c46e..4b12abd41b63c0c2d08f3abe456fd23b61e63b76 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -357,11 +357,13 @@ declare module monaco { * Cover all key codes when IME is processing input. */ KEY_IN_COMPOSITION = 109, + ABNT_C1 = 110, + ABNT_C2 = 111, /** * Placed last to cover the length of the enum. * Please do not depend on this value! */ - MAX_VALUE = 110, + MAX_VALUE = 112, } export class KeyMod { diff --git a/src/vs/platform/keybinding/common/keybindingsRegistry.ts b/src/vs/platform/keybinding/common/keybindingsRegistry.ts index 91440e9307f7b077b78bee748ba13a0314d5d82b..46bdac8acc98b85108c1cb3f1fc05de5aa93a4ce 100644 --- a/src/vs/platform/keybinding/common/keybindingsRegistry.ts +++ b/src/vs/platform/keybinding/common/keybindingsRegistry.ts @@ -180,6 +180,8 @@ class KeybindingsRegistryImpl implements IKeybindingsRegistry { || keyCode === KeyCode.US_DOT || keyCode === KeyCode.US_SLASH || keyCode === KeyCode.US_BACKTICK + || keyCode === KeyCode.ABNT_C1 + || keyCode === KeyCode.ABNT_C2 || keyCode === KeyCode.US_OPEN_SQUARE_BRACKET || keyCode === KeyCode.US_BACKSLASH || keyCode === KeyCode.US_CLOSE_SQUARE_BRACKET diff --git a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts index a6e058cb850d80e72f7701a6a647400afe941c5c..800741404399328bb417d451ab823011607db359 100644 --- a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts @@ -301,11 +301,21 @@ export class WindowsKeyboardMapper implements IKeyboardMapper { log(`Unknown scanCode ${strCode} in mapping.`); continue; } - if (IMMUTABLE_CODE_TO_KEY_CODE[scanCode] !== -1) { - continue; + const rawMapping = rawMappings[strCode]; + + const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[scanCode]; + if (immutableKeyCode !== -1) { + const keyCode = NATIVE_KEY_CODE_TO_KEY_CODE[rawMapping.vkey] || KeyCode.Unknown; + if (keyCode === KeyCode.Unknown || immutableKeyCode === keyCode) { + continue; + } + if (scanCode !== ScanCode.NumpadComma) { + // Looks like ScanCode.NumpadComma doesn't always map to KeyCode.NUMPAD_SEPARATOR + // e.g. on POR - PTB + continue; + } } - const rawMapping = rawMappings[strCode]; const value = rawMapping.value; const withShift = rawMapping.withShift; const withAltGr = rawMapping.withAltGr; @@ -625,6 +635,8 @@ function _getNativeMap() { VK_OEM_PERIOD: KeyCode.US_DOT, VK_OEM_2: KeyCode.US_SLASH, VK_OEM_3: KeyCode.US_BACKTICK, + VK_ABNT_C1: KeyCode.ABNT_C1, + VK_ABNT_C2: KeyCode.ABNT_C2, VK_OEM_4: KeyCode.US_OPEN_SQUARE_BRACKET, VK_OEM_5: KeyCode.US_BACKSLASH, VK_OEM_6: KeyCode.US_CLOSE_SQUARE_BRACKET, diff --git a/src/vs/workbench/services/keybinding/test/keybindingIO.test.ts b/src/vs/workbench/services/keybinding/test/keybindingIO.test.ts index 2a9f0cb3f9c6a9b5a919332a9844f9716a2879e2..c3fd1c5d78d245601f8c94818df4d146c5949ac6 100644 --- a/src/vs/workbench/services/keybinding/test/keybindingIO.test.ts +++ b/src/vs/workbench/services/keybinding/test/keybindingIO.test.ts @@ -84,6 +84,8 @@ suite('keybindingIO', () => { testRoundtrip(KeyCode.US_DOT, '.', '.', '.'); testRoundtrip(KeyCode.US_SLASH, '/', '/', '/'); testRoundtrip(KeyCode.US_BACKTICK, '`', '`', '`'); + testRoundtrip(KeyCode.ABNT_C1, 'abnt_c1', 'abnt_c1', 'abnt_c1'); + testRoundtrip(KeyCode.ABNT_C2, 'abnt_c2', 'abnt_c2', 'abnt_c2'); testRoundtrip(KeyCode.US_OPEN_SQUARE_BRACKET, '[', '[', '['); testRoundtrip(KeyCode.US_BACKSLASH, '\\', '\\', '\\'); testRoundtrip(KeyCode.US_CLOSE_SQUARE_BRACKET, ']', ']', ']'); @@ -99,6 +101,8 @@ suite('keybindingIO', () => { testDeserialization('OEM_PERIOD', 'OEM_PERIOD', 'OEM_PERIOD', KeyCode.US_DOT); testDeserialization('OEM_2', 'OEM_2', 'OEM_2', KeyCode.US_SLASH); testDeserialization('OEM_3', 'OEM_3', 'OEM_3', KeyCode.US_BACKTICK); + testDeserialization('ABNT_C1', 'ABNT_C1', 'ABNT_C1', KeyCode.ABNT_C1); + testDeserialization('ABNT_C2', 'ABNT_C2', 'ABNT_C2', KeyCode.ABNT_C2); testDeserialization('OEM_4', 'OEM_4', 'OEM_4', KeyCode.US_OPEN_SQUARE_BRACKET); testDeserialization('OEM_5', 'OEM_5', 'OEM_5', KeyCode.US_BACKSLASH); testDeserialization('OEM_6', 'OEM_6', 'OEM_6', KeyCode.US_CLOSE_SQUARE_BRACKET); diff --git a/src/vs/workbench/services/keybinding/test/win_por_ptb.js b/src/vs/workbench/services/keybinding/test/win_por_ptb.js new file mode 100644 index 0000000000000000000000000000000000000000..683b2e241134f45f27b4a0de604d19a7b313e7bc --- /dev/null +++ b/src/vs/workbench/services/keybinding/test/win_por_ptb.js @@ -0,0 +1,1093 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +define({ + Sleep: { + vkey: 'VK_SLEEP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + WakeUp: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + KeyA: { + vkey: 'VK_A', + value: 'a', + withShift: 'A', + withAltGr: '', + withShiftAltGr: '' + }, + KeyB: { + vkey: 'VK_B', + value: 'b', + withShift: 'B', + withAltGr: '', + withShiftAltGr: '' + }, + KeyC: { + vkey: 'VK_C', + value: 'c', + withShift: 'C', + withAltGr: '₢', + withShiftAltGr: '' + }, + KeyD: { + vkey: 'VK_D', + value: 'd', + withShift: 'D', + withAltGr: '', + withShiftAltGr: '' + }, + KeyE: { + vkey: 'VK_E', + value: 'e', + withShift: 'E', + withAltGr: '°', + withShiftAltGr: '' + }, + KeyF: { + vkey: 'VK_F', + value: 'f', + withShift: 'F', + withAltGr: '', + withShiftAltGr: '' + }, + KeyG: { + vkey: 'VK_G', + value: 'g', + withShift: 'G', + withAltGr: '', + withShiftAltGr: '' + }, + KeyH: { + vkey: 'VK_H', + value: 'h', + withShift: 'H', + withAltGr: '', + withShiftAltGr: '' + }, + KeyI: { + vkey: 'VK_I', + value: 'i', + withShift: 'I', + withAltGr: '', + withShiftAltGr: '' + }, + KeyJ: { + vkey: 'VK_J', + value: 'j', + withShift: 'J', + withAltGr: '', + withShiftAltGr: '' + }, + KeyK: { + vkey: 'VK_K', + value: 'k', + withShift: 'K', + withAltGr: '', + withShiftAltGr: '' + }, + KeyL: { + vkey: 'VK_L', + value: 'l', + withShift: 'L', + withAltGr: '', + withShiftAltGr: '' + }, + KeyM: { + vkey: 'VK_M', + value: 'm', + withShift: 'M', + withAltGr: '', + withShiftAltGr: '' + }, + KeyN: { + vkey: 'VK_N', + value: 'n', + withShift: 'N', + withAltGr: '', + withShiftAltGr: '' + }, + KeyO: { + vkey: 'VK_O', + value: 'o', + withShift: 'O', + withAltGr: '', + withShiftAltGr: '' + }, + KeyP: { + vkey: 'VK_P', + value: 'p', + withShift: 'P', + withAltGr: '', + withShiftAltGr: '' + }, + KeyQ: { + vkey: 'VK_Q', + value: 'q', + withShift: 'Q', + withAltGr: '/', + withShiftAltGr: '' + }, + KeyR: { + vkey: 'VK_R', + value: 'r', + withShift: 'R', + withAltGr: '', + withShiftAltGr: '' + }, + KeyS: { + vkey: 'VK_S', + value: 's', + withShift: 'S', + withAltGr: '', + withShiftAltGr: '' + }, + KeyT: { + vkey: 'VK_T', + value: 't', + withShift: 'T', + withAltGr: '', + withShiftAltGr: '' + }, + KeyU: { + vkey: 'VK_U', + value: 'u', + withShift: 'U', + withAltGr: '', + withShiftAltGr: '' + }, + KeyV: { + vkey: 'VK_V', + value: 'v', + withShift: 'V', + withAltGr: '', + withShiftAltGr: '' + }, + KeyW: { + vkey: 'VK_W', + value: 'w', + withShift: 'W', + withAltGr: '?', + withShiftAltGr: '' + }, + KeyX: { + vkey: 'VK_X', + value: 'x', + withShift: 'X', + withAltGr: '', + withShiftAltGr: '' + }, + KeyY: { + vkey: 'VK_Y', + value: 'y', + withShift: 'Y', + withAltGr: '', + withShiftAltGr: '' + }, + KeyZ: { + vkey: 'VK_Z', + value: 'z', + withShift: 'Z', + withAltGr: '', + withShiftAltGr: '' + }, + Digit1: { + vkey: 'VK_1', + value: '1', + withShift: '!', + withAltGr: '¹', + withShiftAltGr: '' + }, + Digit2: { + vkey: 'VK_2', + value: '2', + withShift: '@', + withAltGr: '²', + withShiftAltGr: '' + }, + Digit3: { + vkey: 'VK_3', + value: '3', + withShift: '#', + withAltGr: '³', + withShiftAltGr: '' + }, + Digit4: { + vkey: 'VK_4', + value: '4', + withShift: '$', + withAltGr: '£', + withShiftAltGr: '' + }, + Digit5: { + vkey: 'VK_5', + value: '5', + withShift: '%', + withAltGr: '¢', + withShiftAltGr: '' + }, + Digit6: { + vkey: 'VK_6', + value: '6', + withShift: '¨', + withAltGr: '¬', + withShiftAltGr: '' + }, + Digit7: { + vkey: 'VK_7', + value: '7', + withShift: '&', + withAltGr: '', + withShiftAltGr: '' + }, + Digit8: { + vkey: 'VK_8', + value: '8', + withShift: '*', + withAltGr: '', + withShiftAltGr: '' + }, + Digit9: { + vkey: 'VK_9', + value: '9', + withShift: '(', + withAltGr: '', + withShiftAltGr: '' + }, + Digit0: { + vkey: 'VK_0', + value: '0', + withShift: ')', + withAltGr: '', + withShiftAltGr: '' + }, + Enter: { + vkey: 'VK_RETURN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Escape: { + vkey: 'VK_ESCAPE', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Backspace: { + vkey: 'VK_BACK', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Tab: { + vkey: 'VK_TAB', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Space: { + vkey: 'VK_SPACE', + value: ' ', + withShift: ' ', + withAltGr: '', + withShiftAltGr: '' + }, + Minus: { + vkey: 'VK_OEM_MINUS', + value: '-', + withShift: '_', + withAltGr: '', + withShiftAltGr: '' + }, + Equal: { + vkey: 'VK_OEM_PLUS', + value: '=', + withShift: '+', + withAltGr: '§', + withShiftAltGr: '' + }, + BracketLeft: { + vkey: 'VK_OEM_4', + value: '´', + withShift: '`', + withAltGr: '', + withShiftAltGr: '' + }, + BracketRight: { + vkey: 'VK_OEM_6', + value: '[', + withShift: '{', + withAltGr: 'ª', + withShiftAltGr: '' + }, + Backslash: { + vkey: 'VK_OEM_5', + value: ']', + withShift: '}', + withAltGr: 'º', + withShiftAltGr: '' + }, + Semicolon: { + vkey: 'VK_OEM_1', + value: 'ç', + withShift: 'Ç', + withAltGr: '', + withShiftAltGr: '' + }, + Quote: { + vkey: 'VK_OEM_7', + value: '~', + withShift: '^', + withAltGr: '', + withShiftAltGr: '' + }, + Backquote: { + vkey: 'VK_OEM_3', + value: '\'', + withShift: '"', + withAltGr: '', + withShiftAltGr: '' + }, + Comma: { + vkey: 'VK_OEM_COMMA', + value: ',', + withShift: '<', + withAltGr: '', + withShiftAltGr: '' + }, + Period: { + vkey: 'VK_OEM_PERIOD', + value: '.', + withShift: '>', + withAltGr: '', + withShiftAltGr: '' + }, + Slash: { + vkey: 'VK_OEM_2', + value: ';', + withShift: ':', + withAltGr: '', + withShiftAltGr: '' + }, + CapsLock: { + vkey: 'VK_CAPITAL', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F1: { + vkey: 'VK_F1', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F2: { + vkey: 'VK_F2', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F3: { + vkey: 'VK_F3', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F4: { + vkey: 'VK_F4', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F5: { + vkey: 'VK_F5', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F6: { + vkey: 'VK_F6', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F7: { + vkey: 'VK_F7', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F8: { + vkey: 'VK_F8', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F9: { + vkey: 'VK_F9', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F10: { + vkey: 'VK_F10', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F11: { + vkey: 'VK_F11', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F12: { + vkey: 'VK_F12', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + PrintScreen: { + vkey: 'VK_SNAPSHOT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ScrollLock: { + vkey: 'VK_SCROLL', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Pause: { + vkey: 'VK_NUMLOCK', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Insert: { + vkey: 'VK_INSERT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Home: { + vkey: 'VK_HOME', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + PageUp: { + vkey: 'VK_PRIOR', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Delete: { + vkey: 'VK_DELETE', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + End: { + vkey: 'VK_END', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + PageDown: { + vkey: 'VK_NEXT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ArrowRight: { + vkey: 'VK_RIGHT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ArrowLeft: { + vkey: 'VK_LEFT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ArrowDown: { + vkey: 'VK_DOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ArrowUp: { + vkey: 'VK_UP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NumLock: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadDivide: { + vkey: 'VK_DIVIDE', + value: '/', + withShift: '/', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadMultiply: { + vkey: 'VK_MULTIPLY', + value: '*', + withShift: '*', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadSubtract: { + vkey: 'VK_SUBTRACT', + value: '-', + withShift: '-', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadAdd: { + vkey: 'VK_ADD', + value: '+', + withShift: '+', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadEnter: { + vkey: 'VK_RETURN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad1: { + vkey: 'VK_END', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad2: { + vkey: 'VK_DOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad3: { + vkey: 'VK_NEXT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad4: { + vkey: 'VK_LEFT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad5: { + vkey: 'VK_CLEAR', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad6: { + vkey: 'VK_RIGHT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad7: { + vkey: 'VK_HOME', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad8: { + vkey: 'VK_UP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad9: { + vkey: 'VK_PRIOR', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Numpad0: { + vkey: 'VK_INSERT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadDecimal: { + vkey: 'VK_DELETE', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + IntlBackslash: { + vkey: 'VK_OEM_102', + value: '\\', + withShift: '|', + withAltGr: '', + withShiftAltGr: '' + }, + ContextMenu: { + vkey: 'VK_APPS', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Power: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadEqual: { + vkey: 'VK_CLEAR', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F13: { + vkey: 'VK_F13', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F14: { + vkey: 'VK_F14', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F15: { + vkey: 'VK_F15', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F16: { + vkey: 'VK_F16', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F17: { + vkey: 'VK_F17', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F18: { + vkey: 'VK_F18', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F19: { + vkey: 'VK_F19', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F20: { + vkey: 'VK_F20', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F21: { + vkey: 'VK_F21', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F22: { + vkey: 'VK_F22', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F23: { + vkey: 'VK_F23', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + F24: { + vkey: 'VK_F24', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Help: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Undo: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Cut: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Copy: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Paste: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + AudioVolumeMute: { + vkey: 'VK_VOLUME_MUTE', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + AudioVolumeUp: { + vkey: 'VK_VOLUME_UP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + AudioVolumeDown: { + vkey: 'VK_VOLUME_DOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NumpadComma: { + vkey: 'VK_ABNT_C2', + value: '.', + withShift: '.', + withAltGr: '', + withShiftAltGr: '' + }, + IntlRo: { + vkey: 'VK_ABNT_C1', + value: '/', + withShift: '?', + withAltGr: '°', + withShiftAltGr: '' + }, + KanaMode: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + IntlYen: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Convert: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + NonConvert: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Lang1: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Lang2: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Lang3: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Lang4: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ControlLeft: { + vkey: 'VK_CONTROL', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ShiftLeft: { + vkey: 'VK_SHIFT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + AltLeft: { + vkey: 'VK_MENU', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MetaLeft: { + vkey: 'VK_LWIN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ControlRight: { + vkey: 'VK_CONTROL', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + ShiftRight: { + vkey: 'VK_SHIFT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + AltRight: { + vkey: 'VK_MENU', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MetaRight: { + vkey: 'VK_RWIN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MediaTrackNext: { + vkey: 'VK_MEDIA_NEXT_TRACK', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MediaTrackPrevious: { + vkey: 'VK_MEDIA_PREV_TRACK', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MediaStop: { + vkey: 'VK_MEDIA_STOP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + Eject: { + vkey: 'VK_UNKNOWN', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MediaPlayPause: { + vkey: 'VK_MEDIA_PLAY_PAUSE', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + MediaSelect: { + vkey: 'VK_LAUNCH_MEDIA_SELECT', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + LaunchMail: { + vkey: 'VK_LAUNCH_MAIL', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + LaunchApp2: { + vkey: 'VK_LAUNCH_APP2', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + LaunchApp1: { + vkey: 'VK_LAUNCH_APP1', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserSearch: { + vkey: 'VK_BROWSER_SEARCH', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserHome: { + vkey: 'VK_BROWSER_HOME', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserBack: { + vkey: 'VK_BROWSER_BACK', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserForward: { + vkey: 'VK_BROWSER_FORWARD', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserStop: { + vkey: 'VK_BROWSER_STOP', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserRefresh: { + vkey: 'VK_BROWSER_REFRESH', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + }, + BrowserFavorites: { + vkey: 'VK_BROWSER_FAVORITES', + value: '', + withShift: '', + withAltGr: '', + withShiftAltGr: '' + } +}); \ No newline at end of file diff --git a/src/vs/workbench/services/keybinding/test/win_por_ptb.txt b/src/vs/workbench/services/keybinding/test/win_por_ptb.txt new file mode 100644 index 0000000000000000000000000000000000000000..1a6f16fcbdc52d7a199e36fbab2b160cebfccba1 --- /dev/null +++ b/src/vs/workbench/services/keybinding/test/win_por_ptb.txt @@ -0,0 +1,284 @@ +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| KeyA | a | A | A | | +| Shift+KeyA | A | Shift+A | Shift+A | | +| Ctrl+Alt+KeyA | --- | Ctrl+Alt+A | Ctrl+Alt+A | | +| Ctrl+Shift+Alt+KeyA | --- | Ctrl+Shift+Alt+A | Ctrl+Shift+Alt+A | | +------------------------------------------------------------------------------------------------------------ +| KeyB | b | B | B | | +| Shift+KeyB | B | Shift+B | Shift+B | | +| Ctrl+Alt+KeyB | --- | Ctrl+Alt+B | Ctrl+Alt+B | | +| Ctrl+Shift+Alt+KeyB | --- | Ctrl+Shift+Alt+B | Ctrl+Shift+Alt+B | | +------------------------------------------------------------------------------------------------------------ +| KeyC | c | C | C | | +| Shift+KeyC | C | Shift+C | Shift+C | | +| Ctrl+Alt+KeyC | ₢ | Ctrl+Alt+C | Ctrl+Alt+C | | +| Ctrl+Shift+Alt+KeyC | --- | Ctrl+Shift+Alt+C | Ctrl+Shift+Alt+C | | +------------------------------------------------------------------------------------------------------------ +| KeyD | d | D | D | | +| Shift+KeyD | D | Shift+D | Shift+D | | +| Ctrl+Alt+KeyD | --- | Ctrl+Alt+D | Ctrl+Alt+D | | +| Ctrl+Shift+Alt+KeyD | --- | Ctrl+Shift+Alt+D | Ctrl+Shift+Alt+D | | +------------------------------------------------------------------------------------------------------------ +| KeyE | e | E | E | | +| Shift+KeyE | E | Shift+E | Shift+E | | +| Ctrl+Alt+KeyE | ° | Ctrl+Alt+E | Ctrl+Alt+E | | +| Ctrl+Shift+Alt+KeyE | --- | Ctrl+Shift+Alt+E | Ctrl+Shift+Alt+E | | +------------------------------------------------------------------------------------------------------------ +| KeyF | f | F | F | | +| Shift+KeyF | F | Shift+F | Shift+F | | +| Ctrl+Alt+KeyF | --- | Ctrl+Alt+F | Ctrl+Alt+F | | +| Ctrl+Shift+Alt+KeyF | --- | Ctrl+Shift+Alt+F | Ctrl+Shift+Alt+F | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| KeyG | g | G | G | | +| Shift+KeyG | G | Shift+G | Shift+G | | +| Ctrl+Alt+KeyG | --- | Ctrl+Alt+G | Ctrl+Alt+G | | +| Ctrl+Shift+Alt+KeyG | --- | Ctrl+Shift+Alt+G | Ctrl+Shift+Alt+G | | +------------------------------------------------------------------------------------------------------------ +| KeyH | h | H | H | | +| Shift+KeyH | H | Shift+H | Shift+H | | +| Ctrl+Alt+KeyH | --- | Ctrl+Alt+H | Ctrl+Alt+H | | +| Ctrl+Shift+Alt+KeyH | --- | Ctrl+Shift+Alt+H | Ctrl+Shift+Alt+H | | +------------------------------------------------------------------------------------------------------------ +| KeyI | i | I | I | | +| Shift+KeyI | I | Shift+I | Shift+I | | +| Ctrl+Alt+KeyI | --- | Ctrl+Alt+I | Ctrl+Alt+I | | +| Ctrl+Shift+Alt+KeyI | --- | Ctrl+Shift+Alt+I | Ctrl+Shift+Alt+I | | +------------------------------------------------------------------------------------------------------------ +| KeyJ | j | J | J | | +| Shift+KeyJ | J | Shift+J | Shift+J | | +| Ctrl+Alt+KeyJ | --- | Ctrl+Alt+J | Ctrl+Alt+J | | +| Ctrl+Shift+Alt+KeyJ | --- | Ctrl+Shift+Alt+J | Ctrl+Shift+Alt+J | | +------------------------------------------------------------------------------------------------------------ +| KeyK | k | K | K | | +| Shift+KeyK | K | Shift+K | Shift+K | | +| Ctrl+Alt+KeyK | --- | Ctrl+Alt+K | Ctrl+Alt+K | | +| Ctrl+Shift+Alt+KeyK | --- | Ctrl+Shift+Alt+K | Ctrl+Shift+Alt+K | | +------------------------------------------------------------------------------------------------------------ +| KeyL | l | L | L | | +| Shift+KeyL | L | Shift+L | Shift+L | | +| Ctrl+Alt+KeyL | --- | Ctrl+Alt+L | Ctrl+Alt+L | | +| Ctrl+Shift+Alt+KeyL | --- | Ctrl+Shift+Alt+L | Ctrl+Shift+Alt+L | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| KeyM | m | M | M | | +| Shift+KeyM | M | Shift+M | Shift+M | | +| Ctrl+Alt+KeyM | --- | Ctrl+Alt+M | Ctrl+Alt+M | | +| Ctrl+Shift+Alt+KeyM | --- | Ctrl+Shift+Alt+M | Ctrl+Shift+Alt+M | | +------------------------------------------------------------------------------------------------------------ +| KeyN | n | N | N | | +| Shift+KeyN | N | Shift+N | Shift+N | | +| Ctrl+Alt+KeyN | --- | Ctrl+Alt+N | Ctrl+Alt+N | | +| Ctrl+Shift+Alt+KeyN | --- | Ctrl+Shift+Alt+N | Ctrl+Shift+Alt+N | | +------------------------------------------------------------------------------------------------------------ +| KeyO | o | O | O | | +| Shift+KeyO | O | Shift+O | Shift+O | | +| Ctrl+Alt+KeyO | --- | Ctrl+Alt+O | Ctrl+Alt+O | | +| Ctrl+Shift+Alt+KeyO | --- | Ctrl+Shift+Alt+O | Ctrl+Shift+Alt+O | | +------------------------------------------------------------------------------------------------------------ +| KeyP | p | P | P | | +| Shift+KeyP | P | Shift+P | Shift+P | | +| Ctrl+Alt+KeyP | --- | Ctrl+Alt+P | Ctrl+Alt+P | | +| Ctrl+Shift+Alt+KeyP | --- | Ctrl+Shift+Alt+P | Ctrl+Shift+Alt+P | | +------------------------------------------------------------------------------------------------------------ +| KeyQ | q | Q | Q | | +| Shift+KeyQ | Q | Shift+Q | Shift+Q | | +| Ctrl+Alt+KeyQ | / | Ctrl+Alt+Q | Ctrl+Alt+Q | | +| Ctrl+Shift+Alt+KeyQ | --- | Ctrl+Shift+Alt+Q | Ctrl+Shift+Alt+Q | | +------------------------------------------------------------------------------------------------------------ +| KeyR | r | R | R | | +| Shift+KeyR | R | Shift+R | Shift+R | | +| Ctrl+Alt+KeyR | --- | Ctrl+Alt+R | Ctrl+Alt+R | | +| Ctrl+Shift+Alt+KeyR | --- | Ctrl+Shift+Alt+R | Ctrl+Shift+Alt+R | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| KeyS | s | S | S | | +| Shift+KeyS | S | Shift+S | Shift+S | | +| Ctrl+Alt+KeyS | --- | Ctrl+Alt+S | Ctrl+Alt+S | | +| Ctrl+Shift+Alt+KeyS | --- | Ctrl+Shift+Alt+S | Ctrl+Shift+Alt+S | | +------------------------------------------------------------------------------------------------------------ +| KeyT | t | T | T | | +| Shift+KeyT | T | Shift+T | Shift+T | | +| Ctrl+Alt+KeyT | --- | Ctrl+Alt+T | Ctrl+Alt+T | | +| Ctrl+Shift+Alt+KeyT | --- | Ctrl+Shift+Alt+T | Ctrl+Shift+Alt+T | | +------------------------------------------------------------------------------------------------------------ +| KeyU | u | U | U | | +| Shift+KeyU | U | Shift+U | Shift+U | | +| Ctrl+Alt+KeyU | --- | Ctrl+Alt+U | Ctrl+Alt+U | | +| Ctrl+Shift+Alt+KeyU | --- | Ctrl+Shift+Alt+U | Ctrl+Shift+Alt+U | | +------------------------------------------------------------------------------------------------------------ +| KeyV | v | V | V | | +| Shift+KeyV | V | Shift+V | Shift+V | | +| Ctrl+Alt+KeyV | --- | Ctrl+Alt+V | Ctrl+Alt+V | | +| Ctrl+Shift+Alt+KeyV | --- | Ctrl+Shift+Alt+V | Ctrl+Shift+Alt+V | | +------------------------------------------------------------------------------------------------------------ +| KeyW | w | W | W | | +| Shift+KeyW | W | Shift+W | Shift+W | | +| Ctrl+Alt+KeyW | ? | Ctrl+Alt+W | Ctrl+Alt+W | | +| Ctrl+Shift+Alt+KeyW | --- | Ctrl+Shift+Alt+W | Ctrl+Shift+Alt+W | | +------------------------------------------------------------------------------------------------------------ +| KeyX | x | X | X | | +| Shift+KeyX | X | Shift+X | Shift+X | | +| Ctrl+Alt+KeyX | --- | Ctrl+Alt+X | Ctrl+Alt+X | | +| Ctrl+Shift+Alt+KeyX | --- | Ctrl+Shift+Alt+X | Ctrl+Shift+Alt+X | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| KeyY | y | Y | Y | | +| Shift+KeyY | Y | Shift+Y | Shift+Y | | +| Ctrl+Alt+KeyY | --- | Ctrl+Alt+Y | Ctrl+Alt+Y | | +| Ctrl+Shift+Alt+KeyY | --- | Ctrl+Shift+Alt+Y | Ctrl+Shift+Alt+Y | | +------------------------------------------------------------------------------------------------------------ +| KeyZ | z | Z | Z | | +| Shift+KeyZ | Z | Shift+Z | Shift+Z | | +| Ctrl+Alt+KeyZ | --- | Ctrl+Alt+Z | Ctrl+Alt+Z | | +| Ctrl+Shift+Alt+KeyZ | --- | Ctrl+Shift+Alt+Z | Ctrl+Shift+Alt+Z | | +------------------------------------------------------------------------------------------------------------ +| Digit1 | 1 | 1 | 1 | | +| Shift+Digit1 | ! | Shift+1 | Shift+1 | | +| Ctrl+Alt+Digit1 | ¹ | Ctrl+Alt+1 | Ctrl+Alt+1 | | +| Ctrl+Shift+Alt+Digit1 | --- | Ctrl+Shift+Alt+1 | Ctrl+Shift+Alt+1 | | +------------------------------------------------------------------------------------------------------------ +| Digit2 | 2 | 2 | 2 | | +| Shift+Digit2 | @ | Shift+2 | Shift+2 | | +| Ctrl+Alt+Digit2 | ² | Ctrl+Alt+2 | Ctrl+Alt+2 | | +| Ctrl+Shift+Alt+Digit2 | --- | Ctrl+Shift+Alt+2 | Ctrl+Shift+Alt+2 | | +------------------------------------------------------------------------------------------------------------ +| Digit3 | 3 | 3 | 3 | | +| Shift+Digit3 | # | Shift+3 | Shift+3 | | +| Ctrl+Alt+Digit3 | ³ | Ctrl+Alt+3 | Ctrl+Alt+3 | | +| Ctrl+Shift+Alt+Digit3 | --- | Ctrl+Shift+Alt+3 | Ctrl+Shift+Alt+3 | | +------------------------------------------------------------------------------------------------------------ +| Digit4 | 4 | 4 | 4 | | +| Shift+Digit4 | $ | Shift+4 | Shift+4 | | +| Ctrl+Alt+Digit4 | £ | Ctrl+Alt+4 | Ctrl+Alt+4 | | +| Ctrl+Shift+Alt+Digit4 | --- | Ctrl+Shift+Alt+4 | Ctrl+Shift+Alt+4 | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| Digit5 | 5 | 5 | 5 | | +| Shift+Digit5 | % | Shift+5 | Shift+5 | | +| Ctrl+Alt+Digit5 | ¢ | Ctrl+Alt+5 | Ctrl+Alt+5 | | +| Ctrl+Shift+Alt+Digit5 | --- | Ctrl+Shift+Alt+5 | Ctrl+Shift+Alt+5 | | +------------------------------------------------------------------------------------------------------------ +| Digit6 | 6 | 6 | 6 | | +| Shift+Digit6 | ¨ | Shift+6 | Shift+6 | | +| Ctrl+Alt+Digit6 | ¬ | Ctrl+Alt+6 | Ctrl+Alt+6 | | +| Ctrl+Shift+Alt+Digit6 | --- | Ctrl+Shift+Alt+6 | Ctrl+Shift+Alt+6 | | +------------------------------------------------------------------------------------------------------------ +| Digit7 | 7 | 7 | 7 | | +| Shift+Digit7 | & | Shift+7 | Shift+7 | | +| Ctrl+Alt+Digit7 | --- | Ctrl+Alt+7 | Ctrl+Alt+7 | | +| Ctrl+Shift+Alt+Digit7 | --- | Ctrl+Shift+Alt+7 | Ctrl+Shift+Alt+7 | | +------------------------------------------------------------------------------------------------------------ +| Digit8 | 8 | 8 | 8 | | +| Shift+Digit8 | * | Shift+8 | Shift+8 | | +| Ctrl+Alt+Digit8 | --- | Ctrl+Alt+8 | Ctrl+Alt+8 | | +| Ctrl+Shift+Alt+Digit8 | --- | Ctrl+Shift+Alt+8 | Ctrl+Shift+Alt+8 | | +------------------------------------------------------------------------------------------------------------ +| Digit9 | 9 | 9 | 9 | | +| Shift+Digit9 | ( | Shift+9 | Shift+9 | | +| Ctrl+Alt+Digit9 | --- | Ctrl+Alt+9 | Ctrl+Alt+9 | | +| Ctrl+Shift+Alt+Digit9 | --- | Ctrl+Shift+Alt+9 | Ctrl+Shift+Alt+9 | | +------------------------------------------------------------------------------------------------------------ +| Digit0 | 0 | 0 | 0 | | +| Shift+Digit0 | ) | Shift+0 | Shift+0 | | +| Ctrl+Alt+Digit0 | --- | Ctrl+Alt+0 | Ctrl+Alt+0 | | +| Ctrl+Shift+Alt+Digit0 | --- | Ctrl+Shift+Alt+0 | Ctrl+Shift+Alt+0 | | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| Minus | - | - | - | | +| Shift+Minus | _ | Shift+- | Shift+- | | +| Ctrl+Alt+Minus | --- | Ctrl+Alt+- | Ctrl+Alt+- | | +| Ctrl+Shift+Alt+Minus | --- | Ctrl+Shift+Alt+- | Ctrl+Shift+Alt+- | | +------------------------------------------------------------------------------------------------------------ +| Equal | = | = | = | | +| Shift+Equal | + | Shift+= | Shift+= | | +| Ctrl+Alt+Equal | § | Ctrl+Alt+= | Ctrl+Alt+= | | +| Ctrl+Shift+Alt+Equal | --- | Ctrl+Shift+Alt+= | Ctrl+Shift+Alt+= | | +------------------------------------------------------------------------------------------------------------ +| BracketLeft | ´ | [ | ´ | NO | +| Shift+BracketLeft | ` | Shift+[ | Shift+´ | NO | +| Ctrl+Alt+BracketLeft | --- | Ctrl+Alt+[ | Ctrl+Alt+´ | NO | +| Ctrl+Shift+Alt+BracketLeft | --- | Ctrl+Shift+Alt+[ | Ctrl+Shift+Alt+´ | NO | +------------------------------------------------------------------------------------------------------------ +| BracketRight | [ | ] | [ | NO | +| Shift+BracketRight | { | Shift+] | Shift+[ | NO | +| Ctrl+Alt+BracketRight | ª | Ctrl+Alt+] | Ctrl+Alt+[ | NO | +| Ctrl+Shift+Alt+BracketRight | --- | Ctrl+Shift+Alt+] | Ctrl+Shift+Alt+[ | NO | +------------------------------------------------------------------------------------------------------------ +| Backslash | ] | \ | ] | NO | +| Shift+Backslash | } | Shift+\ | Shift+] | NO | +| Ctrl+Alt+Backslash | º | Ctrl+Alt+\ | Ctrl+Alt+] | NO | +| Ctrl+Shift+Alt+Backslash | --- | Ctrl+Shift+Alt+\ | Ctrl+Shift+Alt+] | NO | +------------------------------------------------------------------------------------------------------------ +| IntlHash | --- | null | null | NO | +| Shift+IntlHash | --- | null | null | NO | +| Ctrl+Alt+IntlHash | --- | null | null | NO | +| Ctrl+Shift+Alt+IntlHash | --- | null | null | NO | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| Semicolon | ç | ; | ç | NO | +| Shift+Semicolon | Ç | Shift+; | Shift+ç | NO | +| Ctrl+Alt+Semicolon | --- | Ctrl+Alt+; | Ctrl+Alt+ç | NO | +| Ctrl+Shift+Alt+Semicolon | --- | Ctrl+Shift+Alt+; | Ctrl+Shift+Alt+ç | NO | +------------------------------------------------------------------------------------------------------------ +| Quote | ~ | ' | ~ | NO | +| Shift+Quote | ^ | Shift+' | Shift+~ | NO | +| Ctrl+Alt+Quote | --- | Ctrl+Alt+' | Ctrl+Alt+~ | NO | +| Ctrl+Shift+Alt+Quote | --- | Ctrl+Shift+Alt+' | Ctrl+Shift+Alt+~ | NO | +------------------------------------------------------------------------------------------------------------ +| Backquote | ' | ` | ' | NO | +| Shift+Backquote | " | Shift+` | Shift+' | NO | +| Ctrl+Alt+Backquote | --- | Ctrl+Alt+` | Ctrl+Alt+' | NO | +| Ctrl+Shift+Alt+Backquote | --- | Ctrl+Shift+Alt+` | Ctrl+Shift+Alt+' | NO | +------------------------------------------------------------------------------------------------------------ +| Comma | , | , | , | | +| Shift+Comma | < | Shift+, | Shift+, | | +| Ctrl+Alt+Comma | --- | Ctrl+Alt+, | Ctrl+Alt+, | | +| Ctrl+Shift+Alt+Comma | --- | Ctrl+Shift+Alt+, | Ctrl+Shift+Alt+, | | +------------------------------------------------------------------------------------------------------------ +| Period | . | . | . | | +| Shift+Period | > | Shift+. | Shift+. | | +| Ctrl+Alt+Period | --- | Ctrl+Alt+. | Ctrl+Alt+. | | +| Ctrl+Shift+Alt+Period | --- | Ctrl+Shift+Alt+. | Ctrl+Shift+Alt+. | | +------------------------------------------------------------------------------------------------------------ +| Slash | ; | / | ; | NO | +| Shift+Slash | : | Shift+/ | Shift+; | NO | +| Ctrl+Alt+Slash | --- | Ctrl+Alt+/ | Ctrl+Alt+; | NO | +| Ctrl+Shift+Alt+Slash | --- | Ctrl+Shift+Alt+/ | Ctrl+Shift+Alt+; | NO | +------------------------------------------------------------------------------------------------------------ +| HW Code combination | Key | KeyCode combination | UI label | WYSIWYG | +------------------------------------------------------------------------------------------------------------ +| ArrowUp | --- | UpArrow | UpArrow | | +| Shift+ArrowUp | --- | Shift+UpArrow | Shift+UpArrow | | +| Ctrl+Alt+ArrowUp | --- | Ctrl+Alt+UpArrow | Ctrl+Alt+UpArrow | | +| Ctrl+Shift+Alt+ArrowUp | --- | Ctrl+Shift+Alt+UpArrow | Ctrl+Shift+Alt+UpArrow | | +------------------------------------------------------------------------------------------------------------ +| Numpad0 | --- | NumPad0 | NumPad0 | | +| Shift+Numpad0 | --- | Shift+NumPad0 | Shift+NumPad0 | | +| Ctrl+Alt+Numpad0 | --- | Ctrl+Alt+NumPad0 | Ctrl+Alt+NumPad0 | | +| Ctrl+Shift+Alt+Numpad0 | --- | Ctrl+Shift+Alt+NumPad0 | Ctrl+Shift+Alt+NumPad0 | | +------------------------------------------------------------------------------------------------------------ +| IntlBackslash | \ | OEM_102 | \ | NO | +| Shift+IntlBackslash | | | Shift+OEM_102 | Shift+\ | NO | +| Ctrl+Alt+IntlBackslash | --- | Ctrl+Alt+OEM_102 | Ctrl+Alt+\ | NO | +| Ctrl+Shift+Alt+IntlBackslash | --- | Ctrl+Shift+Alt+OEM_102 | Ctrl+Shift+Alt+\ | NO | +------------------------------------------------------------------------------------------------------------ +| IntlRo | / | ABNT_C1 | / | NO | +| Shift+IntlRo | ? | Shift+ABNT_C1 | Shift+/ | NO | +| Ctrl+Alt+IntlRo | ° | Ctrl+Alt+ABNT_C1 | Ctrl+Alt+/ | NO | +| Ctrl+Shift+Alt+IntlRo | --- | Ctrl+Shift+Alt+ABNT_C1 | Ctrl+Shift+Alt+/ | NO | +------------------------------------------------------------------------------------------------------------ +| IntlYen | --- | null | null | NO | +| Shift+IntlYen | --- | null | null | NO | +| Ctrl+Alt+IntlYen | --- | null | null | NO | +| Ctrl+Shift+Alt+IntlYen | --- | null | null | NO | +------------------------------------------------------------------------------------------------------------ \ No newline at end of file diff --git a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts index a2ff068f70ba21ed6450fd56d1695efcc20e0e74..431bfd0a20b51abe219b65ed017ea089b8d47c46 100644 --- a/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts +++ b/src/vs/workbench/services/keybinding/test/windowsKeyboardMapper.test.ts @@ -406,6 +406,69 @@ suite('keyboardMapper - WINDOWS en_us', () => { }); }); + +suite('keyboardMapper - WINDOWS por_ptb', () => { + + let mapper: WindowsKeyboardMapper; + + suiteSetup((done) => { + createKeyboardMapper('win_por_ptb').then((_mapper) => { + mapper = _mapper; + done(); + }, done); + }); + + test('mapping', (done) => { + assertMapping(WRITE_FILE_IF_DIFFERENT, mapper, 'win_por_ptb.txt', done); + }); + + test('resolveKeyboardEvent Ctrl+[IntlRo]', () => { + assertResolveKeyboardEvent( + mapper, + { + ctrlKey: true, + shiftKey: false, + altKey: false, + metaKey: false, + keyCode: KeyCode.ABNT_C1, + code: null + }, + { + label: 'Ctrl+/', + ariaLabel: 'Control+/', + electronAccelerator: 'Ctrl+ABNT_C1', + userSettingsLabel: 'ctrl+abnt_c1', + isWYSIWYG: false, + isChord: false, + dispatchParts: ['ctrl+ABNT_C1', null], + } + ); + }); + + test('resolveKeyboardEvent Ctrl+[NumpadComma]', () => { + assertResolveKeyboardEvent( + mapper, + { + ctrlKey: true, + shiftKey: false, + altKey: false, + metaKey: false, + keyCode: KeyCode.ABNT_C2, + code: null + }, + { + label: 'Ctrl+.', + ariaLabel: 'Control+.', + electronAccelerator: 'Ctrl+ABNT_C2', + userSettingsLabel: 'ctrl+abnt_c2', + isWYSIWYG: false, + isChord: false, + dispatchParts: ['ctrl+ABNT_C2', null], + } + ); + }); +}); + suite('misc', () => { test('issue #23513: Toggle Sidebar Visibility and Go to Line display same key mapping in Arabic keyboard', () => { const mapper = new WindowsKeyboardMapper({