Path: blob/main/src/vs/platform/keyboardLayout/common/keyboardConfig.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 * as nls from '../../../nls.js';6import { IConfigurationService } from '../../configuration/common/configuration.js';7import { OS, OperatingSystem } from '../../../base/common/platform.js';8import { ConfigurationScope, Extensions as ConfigExtensions, IConfigurationNode, IConfigurationRegistry } from '../../configuration/common/configurationRegistry.js';9import { Registry } from '../../registry/common/platform.js';1011export const enum DispatchConfig {12Code,13KeyCode14}1516export interface IKeyboardConfig {17dispatch: DispatchConfig;18mapAltGrToCtrlAlt: boolean;19}2021export function readKeyboardConfig(configurationService: IConfigurationService): IKeyboardConfig {22const keyboard = configurationService.getValue<{ dispatch: any; mapAltGrToCtrlAlt: any } | undefined>('keyboard');23const dispatch = (keyboard?.dispatch === 'keyCode' ? DispatchConfig.KeyCode : DispatchConfig.Code);24const mapAltGrToCtrlAlt = Boolean(keyboard?.mapAltGrToCtrlAlt);25return { dispatch, mapAltGrToCtrlAlt };26}2728const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigExtensions.Configuration);29const keyboardConfiguration: IConfigurationNode = {30'id': 'keyboard',31'order': 15,32'type': 'object',33'title': nls.localize('keyboardConfigurationTitle', "Keyboard"),34'properties': {35'keyboard.dispatch': {36scope: ConfigurationScope.APPLICATION,37type: 'string',38enum: ['code', 'keyCode'],39default: 'code',40markdownDescription: nls.localize('dispatch', "Controls the dispatching logic for key presses to use either `code` (recommended) or `keyCode`."),41included: OS === OperatingSystem.Macintosh || OS === OperatingSystem.Linux42},43'keyboard.mapAltGrToCtrlAlt': {44scope: ConfigurationScope.APPLICATION,45type: 'boolean',46default: false,47markdownDescription: nls.localize('mapAltGrToCtrlAlt', "Controls if the AltGraph+ modifier should be treated as Ctrl+Alt+."),48included: OS === OperatingSystem.Windows49}50}51};5253configurationRegistry.registerConfiguration(keyboardConfiguration);545556