Path: blob/main/src/vs/workbench/services/keybinding/common/fallbackKeyboardMapper.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { ResolvedKeybinding, KeyCodeChord, Keybinding } from '../../../../base/common/keybindings.js';6import { OperatingSystem } from '../../../../base/common/platform.js';7import { IKeyboardEvent } from '../../../../platform/keybinding/common/keybinding.js';8import { USLayoutResolvedKeybinding } from '../../../../platform/keybinding/common/usLayoutResolvedKeybinding.js';9import { IKeyboardMapper } from '../../../../platform/keyboardLayout/common/keyboardMapper.js';1011/**12* A keyboard mapper to be used when reading the keymap from the OS fails.13*/14export class FallbackKeyboardMapper implements IKeyboardMapper {1516constructor(17private readonly _mapAltGrToCtrlAlt: boolean,18private readonly _OS: OperatingSystem,19) { }2021public dumpDebugInfo(): string {22return 'FallbackKeyboardMapper dispatching on keyCode';23}2425public resolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding {26const ctrlKey = keyboardEvent.ctrlKey || (this._mapAltGrToCtrlAlt && keyboardEvent.altGraphKey);27const altKey = keyboardEvent.altKey || (this._mapAltGrToCtrlAlt && keyboardEvent.altGraphKey);28const chord = new KeyCodeChord(29ctrlKey,30keyboardEvent.shiftKey,31altKey,32keyboardEvent.metaKey,33keyboardEvent.keyCode34);35const result = this.resolveKeybinding(new Keybinding([chord]));36return result[0];37}3839public resolveKeybinding(keybinding: Keybinding): ResolvedKeybinding[] {40return USLayoutResolvedKeybinding.resolveKeybinding(keybinding, this._OS);41}42}434445