From 88f09bd5f255be4d7333b01d606dc3b33dba3640 Mon Sep 17 00:00:00 2001 From: Alexandru Dima Date: Tue, 8 Dec 2020 17:58:54 +0100 Subject: [PATCH] Move `getElectronAcceleratorForKeyBinding` to `WindowsKeyboardMapper` (#101754) --- .../common/windowsKeyboardMapper.ts | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts index 4def8127598..c3990c4f0e6 100644 --- a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts @@ -66,32 +66,11 @@ export class WindowsNativeResolvedKeybinding extends BaseResolvedKeybinding= KeyCode.NUMPAD_0 && keyCode <= KeyCode.NUMPAD_DIVIDE) { - // Electron cannot handle numpad keys - return null; - } - - switch (keyCode) { - case KeyCode.UpArrow: - return 'Up'; - case KeyCode.DownArrow: - return 'Down'; - case KeyCode.LeftArrow: - return 'Left'; - case KeyCode.RightArrow: - return 'Right'; - } - - // electron menus always do the correct rendering on Windows - return KeyCodeUtils.toString(keyCode); - } - protected _getElectronAccelerator(keybinding: SimpleKeybinding): string | null { if (keybinding.isDuplicateModifierCase()) { return null; } - return this._keyCodeToElectronAccelerator(keybinding.keyCode); + return this._mapper.getElectronAcceleratorForKeyBinding(keybinding); } protected _getUserSettingsLabel(keybinding: SimpleKeybinding): string | null { @@ -409,6 +388,31 @@ export class WindowsKeyboardMapper implements IKeyboardMapper { return KeyCodeUtils.toUserSettingsGeneral(keyCode); } + public getElectronAcceleratorForKeyBinding(keybinding: SimpleKeybinding): string | null { + return this._keyCodeToElectronAccelerator(keybinding.keyCode); + } + + private _keyCodeToElectronAccelerator(keyCode: KeyCode): string | null { + if (keyCode >= KeyCode.NUMPAD_0 && keyCode <= KeyCode.NUMPAD_DIVIDE) { + // Electron cannot handle numpad keys + return null; + } + + switch (keyCode) { + case KeyCode.UpArrow: + return 'Up'; + case KeyCode.DownArrow: + return 'Down'; + case KeyCode.LeftArrow: + return 'Left'; + case KeyCode.RightArrow: + return 'Right'; + } + + // electron menus always do the correct rendering on Windows + return KeyCodeUtils.toString(keyCode); + } + private _getLabelForKeyCode(keyCode: KeyCode): string { return this._keyCodeToLabel[keyCode] || KeyCodeUtils.toString(KeyCode.Unknown); } -- GitLab