From 7bbc15a60e0adfdeae901bf149f56c72c83a9a65 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 30 Mar 2021 13:19:45 -0700 Subject: [PATCH] Replace -1 constant in keycode with enum value (#120126) Tthe key code logic uses the constant `-1` in a number of places. With the latest TS 4.3 nightly build, this causes a compile error since there is no overlap between `-1` and the `KeyCode` enum This change adds a `-1` value to the `KeyCode` and `ScanCode` enums --- src/vs/base/common/keyCodes.ts | 2 ++ src/vs/base/common/scanCode.ts | 5 ++-- .../common/standalone/standaloneEnums.ts | 1 + src/vs/monaco.d.ts | 1 + .../common/macLinuxFallbackKeyboardMapper.ts | 2 +- .../common/macLinuxKeyboardMapper.ts | 26 +++++++++---------- .../common/windowsKeyboardMapper.ts | 6 ++--- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/vs/base/common/keyCodes.ts b/src/vs/base/common/keyCodes.ts index 1406c4536fb..8d02df82932 100644 --- a/src/vs/base/common/keyCodes.ts +++ b/src/vs/base/common/keyCodes.ts @@ -12,6 +12,8 @@ import { illegalArgument } from 'vs/base/common/errors'; * But these are "more general", as they should work across browsers & OS`s. */ export const enum KeyCode { + DependsOnKbLayout = -1, + /** * Placed first to cover the 0 value of the enum. */ diff --git a/src/vs/base/common/scanCode.ts b/src/vs/base/common/scanCode.ts index a021562b874..b0547e05bd4 100644 --- a/src/vs/base/common/scanCode.ts +++ b/src/vs/base/common/scanCode.ts @@ -9,6 +9,7 @@ import { KeyCode } from 'vs/base/common/keyCodes'; * keyboardEvent.code */ export const enum ScanCode { + DependsOnKbLayout = -1, None, Hyper, @@ -468,11 +469,11 @@ export class ScanCodeBinding { (function () { for (let i = 0; i <= ScanCode.MAX_VALUE; i++) { - IMMUTABLE_CODE_TO_KEY_CODE[i] = -1; + IMMUTABLE_CODE_TO_KEY_CODE[i] = KeyCode.DependsOnKbLayout; } for (let i = 0; i <= KeyCode.MAX_VALUE; i++) { - IMMUTABLE_KEY_CODE_TO_CODE[i] = -1; + IMMUTABLE_KEY_CODE_TO_CODE[i] = ScanCode.DependsOnKbLayout; } function define(code: ScanCode, keyCode: KeyCode): void { diff --git a/src/vs/editor/common/standalone/standaloneEnums.ts b/src/vs/editor/common/standalone/standaloneEnums.ts index 0425aad4fd6..9860ffa9285 100644 --- a/src/vs/editor/common/standalone/standaloneEnums.ts +++ b/src/vs/editor/common/standalone/standaloneEnums.ts @@ -365,6 +365,7 @@ export enum InlineHintKind { * But these are "more general", as they should work across browsers & OS`s. */ export enum KeyCode { + DependsOnKbLayout = -1, /** * Placed first to cover the 0 value of the enum. */ diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index c7c68daeda8..f08c6a728aa 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -218,6 +218,7 @@ declare namespace monaco { * But these are "more general", as they should work across browsers & OS`s. */ export enum KeyCode { + DependsOnKbLayout = -1, /** * Placed first to cover the 0 value of the enum. */ diff --git a/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts index eff466f8cc2..b76f69253e4 100644 --- a/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper.ts @@ -46,7 +46,7 @@ export class MacLinuxFallbackKeyboardMapper implements IKeyboardMapper { private _scanCodeToKeyCode(scanCode: ScanCode): KeyCode { const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[scanCode]; - if (immutableKeyCode !== -1) { + if (immutableKeyCode !== KeyCode.DependsOnKbLayout) { return immutableKeyCode; } diff --git a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts index 79e6c4cf9c9..b4062798117 100644 --- a/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper.ts @@ -49,7 +49,7 @@ export class NativeResolvedKeybinding extends BaseResolvedKeybinding= 0) { const immutableScanCode = IMMUTABLE_KEY_CODE_TO_CODE[keyCode]; - if (immutableScanCode !== -1) { + if (immutableScanCode !== ScanCode.DependsOnKbLayout) { code = immutableScanCode; } } diff --git a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts index ccca77c4740..cc5d83b76d5 100644 --- a/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts +++ b/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper.ts @@ -180,7 +180,7 @@ export class WindowsKeyboardMapper implements IKeyboardMapper { for (let scanCode = ScanCode.None; scanCode < ScanCode.MAX_VALUE; scanCode++) { const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[scanCode]; - if (immutableKeyCode !== -1) { + if (immutableKeyCode !== KeyCode.DependsOnKbLayout) { this._scanCodeToKeyCode[scanCode] = immutableKeyCode; this._keyCodeToLabel[immutableKeyCode] = KeyCodeUtils.toString(immutableKeyCode); this._keyCodeExists[immutableKeyCode] = true; @@ -201,7 +201,7 @@ export class WindowsKeyboardMapper implements IKeyboardMapper { const rawMapping = rawMappings[strCode]; const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[scanCode]; - if (immutableKeyCode !== -1) { + if (immutableKeyCode !== KeyCode.DependsOnKbLayout) { const keyCode = NATIVE_KEY_CODE_TO_KEY_CODE[rawMapping.vkey] || KeyCode.Unknown; if (keyCode === KeyCode.Unknown || immutableKeyCode === keyCode) { continue; @@ -337,7 +337,7 @@ export class WindowsKeyboardMapper implements IKeyboardMapper { let cnt = 0; result.push(`-----------------------------------------------------------------------------------------------------------------------------------------`); for (let scanCode = ScanCode.None; scanCode < ScanCode.MAX_VALUE; scanCode++) { - if (IMMUTABLE_CODE_TO_KEY_CODE[scanCode] !== -1) { + if (IMMUTABLE_CODE_TO_KEY_CODE[scanCode] !== KeyCode.DependsOnKbLayout) { if (immutableSamples.indexOf(scanCode) === -1) { continue; }