import { Event } from '@vscode-alt/monaco-editor/esm/vs/base/common/event'; import { IKeyboardEvent } from '@vscode-alt/monaco-editor/esm/vs/platform/keybinding/common/keybinding'; import { Keybinding, ResolvedKeybinding, SimpleKeybinding } from '@vscode-alt/monaco-editor/esm/vs/base/common/keyCodes'; import { ScanCodeBinding } from '@vscode-alt/monaco-editor/esm/vs/base/common/scanCode'; export const enum DispatchConfig { Code, KeyCode, } export interface IMacKeyboardLayoutInfo { id: string; lang: string; localizedName?: string; } export type IKeyboardLayoutInfo = (IWindowsKeyboardLayoutInfo | ILinuxKeyboardLayoutInfo | IMacKeyboardLayoutInfo) & { isUserKeyboardLayout?: boolean; isUSStandard?: true }; export interface ILinuxKeyMapping { value: string; withShift: string; withAltGr: string; withShiftAltGr: string; } export interface ILinuxKeyboardMapping { [code: string]: ILinuxKeyMapping; } export interface ILinuxKeyboardLayoutInfo { model: string; layout: string; variant: string; options: string; rules: string; } export interface IMacKeyMapping { value: string; withShift: string; withAltGr: string; withShiftAltGr: string; valueIsDeadKey: boolean; withShiftIsDeadKey: boolean; withAltGrIsDeadKey: boolean; withShiftAltGrIsDeadKey: boolean; } export interface IMacKeyboardMapping { [code: string]: IMacKeyMapping; } export interface IWindowsKeyboardMapping { [scanCode: string]: IWindowsKeyMapping; } export interface IWindowsKeyMapping { vkey: string; value: string; withShift: string; withAltGr: string; withShiftAltGr: string; } export interface IWindowsKeyboardLayoutInfo { name: string; id: string; text: string; } export type IKeyboardMapping = IWindowsKeyboardMapping | ILinuxKeyboardMapping | IMacKeyboardMapping; export interface IKeyboardMapper { dumpDebugInfo(): string; resolveKeybinding(keybinding: Keybinding): ResolvedKeybinding[]; resolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding; resolveUserBinding(firstPart: (SimpleKeybinding | ScanCodeBinding)[]): ResolvedKeybinding[]; } export interface IKeymapService { _serviceBrand: undefined; onDidChangeKeyboardMapper: Event; getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper; getCurrentKeyboardLayout(): IKeyboardLayoutInfo | null; getAllKeyboardLayouts(): IKeyboardLayoutInfo[]; getRawKeyboardMapping(): IKeyboardMapping | null; validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): void; }