Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 (#6381)

* Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973

* disable strict null check
This commit is contained in:
Anthony Dresser
2019-07-15 22:35:46 -07:00
committed by GitHub
parent f720ec642f
commit 0b7e7ddbf9
2406 changed files with 59140 additions and 35464 deletions

View File

@@ -4,17 +4,14 @@
*--------------------------------------------------------------------------------------------*/
import * as nls from 'vs/nls';
import * as nativeKeymap from 'native-keymap';
import { release } from 'os';
import * as browser from 'vs/base/browser/browser';
import * as dom from 'vs/base/browser/dom';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { onUnexpectedError } from 'vs/base/common/errors';
import { Emitter, Event } from 'vs/base/common/event';
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { Keybinding, ResolvedKeybinding } from 'vs/base/common/keyCodes';
import { Keybinding, ResolvedKeybinding, KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { KeybindingParser } from 'vs/base/common/keybindingParser';
import { OS, OperatingSystem } from 'vs/base/common/platform';
import { ConfigWatcher } from 'vs/base/node/config';
import { OS, OperatingSystem, isWeb } from 'vs/base/common/platform';
import { ICommandService, CommandsRegistry } from 'vs/platform/commands/common/commands';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { Extensions as ConfigExtensions, IConfigurationNode, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
@@ -22,140 +19,34 @@ import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/commo
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { Extensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
import { AbstractKeybindingService } from 'vs/platform/keybinding/common/abstractKeybindingService';
import { IKeybindingEvent, IKeyboardEvent, IUserFriendlyKeybinding, KeybindingSource, IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { IKeyboardEvent, IUserFriendlyKeybinding, KeybindingSource, IKeybindingService, IKeybindingEvent } from 'vs/platform/keybinding/common/keybinding';
import { KeybindingResolver } from 'vs/platform/keybinding/common/keybindingResolver';
import { IKeybindingItem, IKeybindingRule2, KeybindingWeight, KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { Registry } from 'vs/platform/registry/common/platform';
import { IStatusbarService } from 'vs/platform/statusbar/common/statusbar';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { keybindingsTelemetry } from 'vs/platform/telemetry/common/telemetryUtils';
import { ExtensionMessageCollector, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IUserKeybindingItem, KeybindingIO, OutputBuilder } from 'vs/workbench/services/keybinding/common/keybindingIO';
import { CachedKeyboardMapper, IKeyboardMapper } from 'vs/workbench/services/keybinding/common/keyboardMapper';
import { MacLinuxFallbackKeyboardMapper } from 'vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper';
import { IMacLinuxKeyboardMapping, MacLinuxKeyboardMapper, macLinuxKeyboardMappingEquals } from 'vs/workbench/services/keybinding/common/macLinuxKeyboardMapper';
import { IWindowsKeyboardMapping, WindowsKeyboardMapper, windowsKeyboardMappingEquals } from 'vs/workbench/services/keybinding/common/windowsKeyboardMapper';
import { IKeyboardMapper } from 'vs/workbench/services/keybinding/common/keyboardMapper';
import { IWindowService } from 'vs/platform/windows/common/windows';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { MenuRegistry } from 'vs/platform/actions/common/actions';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
export class KeyboardMapperFactory {
public static readonly INSTANCE = new KeyboardMapperFactory();
private _layoutInfo: nativeKeymap.IKeyboardLayoutInfo | null;
private _rawMapping: nativeKeymap.IKeyboardMapping | null;
private _keyboardMapper: IKeyboardMapper | null;
private _initialized: boolean;
private readonly _onDidChangeKeyboardMapper = new Emitter<void>();
public readonly onDidChangeKeyboardMapper: Event<void> = this._onDidChangeKeyboardMapper.event;
private constructor() {
this._layoutInfo = null;
this._rawMapping = null;
this._keyboardMapper = null;
this._initialized = false;
}
public _onKeyboardLayoutChanged(): void {
if (this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
}
public getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
if (dispatchConfig === DispatchConfig.KeyCode) {
// Forcefully set to use keyCode
return new MacLinuxFallbackKeyboardMapper(OS);
}
return this._keyboardMapper!;
}
public getCurrentKeyboardLayout(): nativeKeymap.IKeyboardLayoutInfo | null {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
return this._layoutInfo;
}
private static _isUSStandard(_kbInfo: nativeKeymap.IKeyboardLayoutInfo): boolean {
if (OS === OperatingSystem.Linux) {
const kbInfo = <nativeKeymap.ILinuxKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.layout === 'us');
}
if (OS === OperatingSystem.Macintosh) {
const kbInfo = <nativeKeymap.IMacKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.id === 'com.apple.keylayout.US');
}
if (OS === OperatingSystem.Windows) {
const kbInfo = <nativeKeymap.IWindowsKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.name === '00000409');
}
return false;
}
public getRawKeyboardMapping(): nativeKeymap.IKeyboardMapping | null {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
return this._rawMapping;
}
private _setKeyboardData(layoutInfo: nativeKeymap.IKeyboardLayoutInfo, rawMapping: nativeKeymap.IKeyboardMapping): void {
this._layoutInfo = layoutInfo;
if (this._initialized && KeyboardMapperFactory._equals(this._rawMapping, rawMapping)) {
// nothing to do...
return;
}
this._initialized = true;
this._rawMapping = rawMapping;
this._keyboardMapper = new CachedKeyboardMapper(
KeyboardMapperFactory._createKeyboardMapper(this._layoutInfo, this._rawMapping)
);
this._onDidChangeKeyboardMapper.fire();
}
private static _createKeyboardMapper(layoutInfo: nativeKeymap.IKeyboardLayoutInfo, rawMapping: nativeKeymap.IKeyboardMapping): IKeyboardMapper {
const isUSStandard = KeyboardMapperFactory._isUSStandard(layoutInfo);
if (OS === OperatingSystem.Windows) {
return new WindowsKeyboardMapper(isUSStandard, <IWindowsKeyboardMapping>rawMapping);
}
if (Object.keys(rawMapping).length === 0) {
// Looks like reading the mappings failed (most likely Mac + Japanese/Chinese keyboard layouts)
return new MacLinuxFallbackKeyboardMapper(OS);
}
if (OS === OperatingSystem.Macintosh) {
const kbInfo = <nativeKeymap.IMacKeyboardLayoutInfo>layoutInfo;
if (kbInfo.id === 'com.apple.keylayout.DVORAK-QWERTYCMD') {
// Use keyCode based dispatching for DVORAK - QWERTY ⌘
return new MacLinuxFallbackKeyboardMapper(OS);
}
}
return new MacLinuxKeyboardMapper(isUSStandard, <IMacLinuxKeyboardMapping>rawMapping, OS);
}
private static _equals(a: nativeKeymap.IKeyboardMapping | null, b: nativeKeymap.IKeyboardMapping | null): boolean {
if (OS === OperatingSystem.Windows) {
return windowsKeyboardMappingEquals(<IWindowsKeyboardMapping>a, <IWindowsKeyboardMapping>b);
}
return macLinuxKeyboardMappingEquals(<IMacLinuxKeyboardMapping>a, <IMacLinuxKeyboardMapping>b);
}
}
// tslint:disable-next-line: import-patterns
import { commandsExtensionPoint } from 'vs/workbench/api/common/menusExtensionPoint';
import { Disposable } from 'vs/base/common/lifecycle';
import { RunOnceScheduler } from 'vs/base/common/async';
import { URI } from 'vs/base/common/uri';
import { IFileService } from 'vs/platform/files/common/files';
import { parse } from 'vs/base/common/json';
import * as objects from 'vs/base/common/objects';
import { IKeymapService } from 'vs/workbench/services/keybinding/common/keymapInfo';
import { getDispatchConfig } from 'vs/workbench/services/keybinding/common/dispatchConfig';
import { isArray } from 'vs/base/common/types';
import { INavigatorWithKeyboard } from 'vs/workbench/services/keybinding/common/navigatorKeyboard';
import { ScanCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from 'vs/base/common/scanCode';
interface ContributedKeyBinding {
command: string;
@@ -215,7 +106,7 @@ let keybindingType: IJSONSchema = {
description: nls.localize('vscode.extension.contributes.keybindings.args', "Arguments to pass to the command to execute.")
},
key: {
description: nls.localize('vscode.extension.contributes.keybindings.key', 'Key or key sequence (separate keys with plus-sign and sequences with space, e.g Ctrl+O and Ctrl+L L for a chord).'),
description: nls.localize('vscode.extension.contributes.keybindings.key', 'Key or key sequence (separate keys with plus-sign and sequences with space, e.g. Ctrl+O and Ctrl+L L for a chord).'),
type: 'string'
},
mac: {
@@ -239,6 +130,7 @@ let keybindingType: IJSONSchema = {
const keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<ContributedKeyBinding | ContributedKeyBinding[]>({
extensionPoint: 'keybindings',
deps: [commandsExtensionPoint],
jsonSchema: {
description: nls.localize('vscode.extension.contributes.keybindings', "Contributes keybindings."),
oneOf: [
@@ -251,23 +143,11 @@ const keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<Contribute
}
});
export const enum DispatchConfig {
Code,
KeyCode
}
function getDispatchConfig(configurationService: IConfigurationService): DispatchConfig {
const keyboard = configurationService.getValue('keyboard');
const r = (keyboard ? (<any>keyboard).dispatch : null);
return (r === 'keyCode' ? DispatchConfig.KeyCode : DispatchConfig.Code);
}
export class WorkbenchKeybindingService extends AbstractKeybindingService {
private _keyboardMapper: IKeyboardMapper;
private _cachedResolver: KeybindingResolver | null;
private _firstTimeComputingResolver: boolean;
private userKeybindings: ConfigWatcher<IUserFriendlyKeybinding[]>;
private userKeybindings: UserKeybindings;
constructor(
@IContextKeyService contextKeyService: IContextKeyService,
@@ -275,12 +155,13 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
@ITelemetryService telemetryService: ITelemetryService,
@INotificationService notificationService: INotificationService,
@IEnvironmentService environmentService: IEnvironmentService,
@IStatusbarService statusBarService: IStatusbarService,
@IConfigurationService configurationService: IConfigurationService,
@IWindowService private readonly windowService: IWindowService,
@IExtensionService extensionService: IExtensionService
@IExtensionService extensionService: IExtensionService,
@IFileService fileService: IFileService,
@IKeymapService private readonly keymapService: IKeymapService
) {
super(contextKeyService, commandService, telemetryService, notificationService, statusBarService);
super(contextKeyService, commandService, telemetryService, notificationService);
updateSchema();
@@ -292,20 +173,37 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
}
dispatchConfig = newDispatchConfig;
this._keyboardMapper = KeyboardMapperFactory.INSTANCE.getKeyboardMapper(dispatchConfig);
this._keyboardMapper = this.keymapService.getKeyboardMapper(dispatchConfig);
this.updateResolver({ source: KeybindingSource.Default });
});
this._keyboardMapper = KeyboardMapperFactory.INSTANCE.getKeyboardMapper(dispatchConfig);
KeyboardMapperFactory.INSTANCE.onDidChangeKeyboardMapper(() => {
this._keyboardMapper = KeyboardMapperFactory.INSTANCE.getKeyboardMapper(dispatchConfig);
this._keyboardMapper = this.keymapService.getKeyboardMapper(dispatchConfig);
this.keymapService.onDidChangeKeyboardMapper(() => {
this._keyboardMapper = this.keymapService.getKeyboardMapper(dispatchConfig);
this.updateResolver({ source: KeybindingSource.Default });
});
this._cachedResolver = null;
this._firstTimeComputingResolver = true;
this.userKeybindings = this._register(new ConfigWatcher(environmentService.appKeybindingsPath, { defaultConfig: [], onError: error => onUnexpectedError(error) }));
this.userKeybindings = this._register(new UserKeybindings(environmentService.keybindingsResource, fileService));
this.userKeybindings.initialize().then(() => {
if (this.userKeybindings.keybindings.length) {
this.updateResolver({ source: KeybindingSource.User });
}
});
this._register(this.userKeybindings.onDidChange(() => {
type CustomKeybindingsChangedClassification = {
keyCount: { classification: 'SystemMetaData', purpose: 'FeatureInsight', isMeasurement: true }
};
this._telemetryService.publicLog2<{ keyCount: number }, CustomKeybindingsChangedClassification>('customKeybindingsChanged', {
keyCount: this.userKeybindings.keybindings.length
});
this.updateResolver({
source: KeybindingSource.User,
keybindings: this.userKeybindings.keybindings
});
}));
keybindingsExtPoint.setHandler((extensions) => {
@@ -321,11 +219,6 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
updateSchema();
this._register(extensionService.onDidRegisterExtensions(() => updateSchema()));
this._register(this.userKeybindings.onDidUpdateConfiguration(event => this.updateResolver({
source: KeybindingSource.User,
keybindings: event.config
})));
this._register(dom.addDisposableListener(window, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => {
let keyEvent = new StandardKeyboardEvent(e);
let shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target);
@@ -335,7 +228,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
}));
keybindingsTelemetry(telemetryService, this);
let data = KeyboardMapperFactory.INSTANCE.getCurrentKeyboardLayout();
let data = this.keymapService.getCurrentKeyboardLayout();
/* __GDPR__
"keyboardLayout" : {
"currentKeyboardLayout": { "${inline}": [ "${IKeyboardLayoutInfo}" ] }
@@ -344,27 +237,43 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
telemetryService.publicLog('keyboardLayout', {
currentKeyboardLayout: data
});
this._register(browser.onDidChangeFullscreen(() => {
const keyboard = (<INavigatorWithKeyboard>navigator).keyboard;
if (!keyboard) {
return;
}
if (browser.isFullscreen()) {
keyboard.lock(['Escape']);
} else {
keyboard.unlock();
}
// update resolver which will bring back all unbound keyboard shortcuts
this._cachedResolver = null;
this._onDidUpdateKeybindings.fire({ source: KeybindingSource.User });
}));
}
public _dumpDebugInfo(): string {
const layoutInfo = JSON.stringify(KeyboardMapperFactory.INSTANCE.getCurrentKeyboardLayout(), null, '\t');
const layoutInfo = JSON.stringify(this.keymapService.getCurrentKeyboardLayout(), null, '\t');
const mapperInfo = this._keyboardMapper.dumpDebugInfo();
const rawMapping = JSON.stringify(KeyboardMapperFactory.INSTANCE.getRawKeyboardMapping(), null, '\t');
const rawMapping = JSON.stringify(this.keymapService.getRawKeyboardMapping(), null, '\t');
return `Layout info:\n${layoutInfo}\n${mapperInfo}\n\nRaw mapping:\n${rawMapping}`;
}
private _safeGetConfig(): IUserFriendlyKeybinding[] {
let rawConfig = this.userKeybindings.getConfig();
if (Array.isArray(rawConfig)) {
return rawConfig;
}
return [];
public _dumpDebugInfoJSON(): string {
const info = {
layout: this.keymapService.getCurrentKeyboardLayout(),
rawMapping: this.keymapService.getRawKeyboardMapping()
};
return JSON.stringify(info, null, '\t');
}
public customKeybindingsCount(): number {
let userKeybindings = this._safeGetConfig();
return userKeybindings.length;
return this.userKeybindings.keybindings.length;
}
private updateResolver(event: IKeybindingEvent): void {
@@ -375,9 +284,8 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
protected _getResolver(): KeybindingResolver {
if (!this._cachedResolver) {
const defaults = this._resolveKeybindingItems(KeybindingsRegistry.getDefaultKeybindings(), true);
const overrides = this._resolveUserKeybindingItems(this._getExtraKeybindings(this._firstTimeComputingResolver), false);
const overrides = this._resolveUserKeybindingItems(this.userKeybindings.keybindings.map((k) => KeybindingIO.readUserKeybindingItem(k)), false);
this._cachedResolver = new KeybindingResolver(defaults, overrides);
this._firstTimeComputingResolver = false;
}
return this._cachedResolver;
}
@@ -398,6 +306,10 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
// This might be a removal keybinding item in user settings => accept it
result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault);
} else {
if (this._assertBrowserConflicts(keybinding, item.command)) {
continue;
}
const resolvedKeybindings = this.resolveKeybinding(keybinding);
for (const resolvedKeybinding of resolvedKeybindings) {
result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault);
@@ -427,22 +339,75 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
return result;
}
private _getExtraKeybindings(isFirstTime: boolean): IUserKeybindingItem[] {
let extraUserKeybindings: IUserFriendlyKeybinding[] = this._safeGetConfig();
if (!isFirstTime) {
let cnt = extraUserKeybindings.length;
/* __GDPR__
"customKeybindingsChanged" : {
"keyCount" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true }
}
*/
this._telemetryService.publicLog('customKeybindingsChanged', {
keyCount: cnt
});
private _assertBrowserConflicts(kb: Keybinding, commandId: string): boolean {
if (!isWeb) {
return false;
}
return extraUserKeybindings.map((k) => KeybindingIO.readUserKeybindingItem(k));
if (browser.isStandalone) {
return false;
}
if (browser.isFullscreen() && (<any>navigator).keyboard) {
return false;
}
for (let part of kb.parts) {
if (!part.metaKey && !part.altKey && !part.ctrlKey && !part.shiftKey) {
continue;
}
const modifiersMask = KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift;
let partModifiersMask = 0;
if (part.metaKey) {
partModifiersMask |= KeyMod.CtrlCmd;
}
if (part.shiftKey) {
partModifiersMask |= KeyMod.Shift;
}
if (part.altKey) {
partModifiersMask |= KeyMod.Alt;
}
if (part.ctrlKey && OS === OperatingSystem.Macintosh) {
partModifiersMask |= KeyMod.WinCtrl;
}
if ((partModifiersMask & modifiersMask) === KeyMod.CtrlCmd && part.keyCode === KeyCode.KEY_W) {
// console.warn('Ctrl/Cmd+W keybindings should not be used by default in web. Offender: ', kb.getHashCode(), ' for ', commandId);
return true;
}
if ((partModifiersMask & modifiersMask) === KeyMod.CtrlCmd && part.keyCode === KeyCode.KEY_N) {
// console.warn('Ctrl/Cmd+N keybindings should not be used by default in web. Offender: ', kb.getHashCode(), ' for ', commandId);
return true;
}
if ((partModifiersMask & modifiersMask) === KeyMod.CtrlCmd && part.keyCode === KeyCode.KEY_T) {
// console.warn('Ctrl/Cmd+T keybindings should not be used by default in web. Offender: ', kb.getHashCode(), ' for ', commandId);
return true;
}
if ((partModifiersMask & modifiersMask) === (KeyMod.CtrlCmd | KeyMod.Alt) && (part.keyCode === KeyCode.LeftArrow || part.keyCode === KeyCode.RightArrow)) {
// console.warn('Ctrl/Cmd+Arrow keybindings should not be used by default in web. Offender: ', kb.getHashCode(), ' for ', commandId);
return true;
}
if ((partModifiersMask & modifiersMask) === KeyMod.CtrlCmd && part.keyCode >= KeyCode.KEY_0 && part.keyCode <= KeyCode.KEY_9) {
// console.warn('Ctrl/Cmd+Num keybindings should not be used by default in web. Offender: ', kb.getHashCode(), ' for ', commandId);
return true;
}
}
return false;
}
public resolveKeybinding(kb: Keybinding): ResolvedKeybinding[] {
@@ -450,6 +415,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
}
public resolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding {
this.keymapService.validateCurrentKeyboardMapping(keyboardEvent);
return this._keyboardMapper.resolveKeyboardEvent(keyboardEvent);
}
@@ -500,10 +466,21 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
weight = KeybindingWeight.ExternalExtension + idx;
}
let commandAction = MenuRegistry.getCommand(command);
let precondition = commandAction && commandAction.precondition;
let fullWhen: ContextKeyExpr | undefined;
if (when && precondition) {
fullWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(when));
} else if (when) {
fullWhen = ContextKeyExpr.deserialize(when);
} else if (precondition) {
fullWhen = precondition;
}
let desc: IKeybindingRule2 = {
id: command,
args,
when: ContextKeyExpr.deserialize(when),
when: fullWhen,
weight: weight,
primary: KeybindingParser.parseKeybinding(key, OS),
mac: mac ? { primary: KeybindingParser.parseKeybinding(mac, OS) } : null,
@@ -553,13 +530,19 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
}
mightProducePrintableCharacter(event: IKeyboardEvent): boolean {
if (event.ctrlKey || event.metaKey) {
// ignore ctrl/cmd-combination but not shift/alt-combinatios
if (event.ctrlKey || event.metaKey || event.altKey) {
// ignore ctrl/cmd/alt-combination but not shift-combinatios
return false;
}
const code = ScanCodeUtils.toEnum(event.code);
const keycode = IMMUTABLE_CODE_TO_KEY_CODE[code];
if (keycode !== -1) {
// https://github.com/microsoft/vscode/issues/74934
return false;
}
// consult the KeyboardMapperFactory to check the given event for
// a printable value.
const mapping = KeyboardMapperFactory.INSTANCE.getRawKeyboardMapping();
const mapping = this.keymapService.getRawKeyboardMapping();
if (!mapping) {
return false;
}
@@ -574,6 +557,47 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
}
}
class UserKeybindings extends Disposable {
private _keybindings: IUserFriendlyKeybinding[] = [];
get keybindings(): IUserFriendlyKeybinding[] { return this._keybindings; }
private readonly reloadConfigurationScheduler: RunOnceScheduler;
private readonly _onDidChange: Emitter<void> = this._register(new Emitter<void>());
readonly onDidChange: Event<void> = this._onDidChange.event;
constructor(
private readonly keybindingsResource: URI,
private readonly fileService: IFileService
) {
super();
this.reloadConfigurationScheduler = this._register(new RunOnceScheduler(() => this.reload().then(changed => {
if (changed) {
this._onDidChange.fire();
}
}), 50));
this._register(Event.filter(this.fileService.onFileChanges, e => e.contains(this.keybindingsResource))(() => this.reloadConfigurationScheduler.schedule()));
}
async initialize(): Promise<void> {
await this.reload();
}
private async reload(): Promise<boolean> {
const existing = this._keybindings;
try {
const content = await this.fileService.readFile(this.keybindingsResource);
const value = parse(content.value.toString());
this._keybindings = isArray(value) ? value : [];
} catch (e) {
this._keybindings = [];
}
return existing ? !objects.equals(existing, this._keybindings) : true;
}
}
let schemaId = 'vscode://schemas/keybindings';
let commandsSchemas: IJSONSchema[] = [];
let commandsEnum: string[] = [];
@@ -652,8 +676,8 @@ function updateSchema() {
};
const allCommands = CommandsRegistry.getCommands();
for (let commandId in allCommands) {
const commandDescription = allCommands[commandId].description;
for (const [commandId, command] of allCommands) {
const commandDescription = command.description;
addKnownCommand(commandId, commandDescription ? commandDescription.description : undefined);
@@ -681,7 +705,7 @@ function updateSchema() {
}
const menuCommands = MenuRegistry.getCommands();
for (let commandId in menuCommands) {
for (const commandId of menuCommands.keys()) {
addKnownCommand(commandId);
}
}
@@ -700,16 +724,11 @@ const keyboardConfiguration: IConfigurationNode = {
'default': 'code',
'markdownDescription': nls.localize('dispatch', "Controls the dispatching logic for key presses to use either `code` (recommended) or `keyCode`."),
'included': OS === OperatingSystem.Macintosh || OS === OperatingSystem.Linux
},
'keyboard.touchbar.enabled': {
'type': 'boolean',
'default': true,
'description': nls.localize('touchbar.enabled', "Enables the macOS touchbar buttons on the keyboard if available."),
'included': OS === OperatingSystem.Macintosh && parseFloat(release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x)
}
// no touch bar support
}
};
configurationRegistry.registerConfiguration(keyboardConfiguration);
registerSingleton(IKeybindingService, WorkbenchKeybindingService);
registerSingleton(IKeybindingService, WorkbenchKeybindingService);

View File

@@ -0,0 +1,23 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IKeymapInfo } from 'vs/workbench/services/keybinding/common/keymapInfo';
export class KeyboardLayoutContribution {
public static readonly INSTANCE: KeyboardLayoutContribution = new KeyboardLayoutContribution();
private _layoutInfos: IKeymapInfo[] = [];
get layoutInfos() {
return this._layoutInfos;
}
private constructor() {
}
registerKeyboardLayout(layout: IKeymapInfo) {
this._layoutInfos.push(layout);
}
}

View File

@@ -0,0 +1,168 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000405', id: '', text: 'Czech' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '{', '', 0, 'VK_B'],
KeyC: ['c', 'C', '&', '', 0, 'VK_C'],
KeyD: ['d', 'D', 'Đ', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '[', '', 0, 'VK_F'],
KeyG: ['g', 'G', ']', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', 'ł', '', 0, 'VK_K'],
KeyL: ['l', 'L', 'Ł', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '}', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '\\', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', 'đ', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '@', '', 0, 'VK_V'],
KeyW: ['w', 'W', '|', '', 0, 'VK_W'],
KeyX: ['x', 'X', '#', '', 0, 'VK_X'],
KeyY: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyZ: ['y', 'Y', '', '', 0, 'VK_Y'],
Digit1: ['+', '1', '~', '', 0, 'VK_1'],
Digit2: ['ě', '2', 'ˇ', '', 0, 'VK_2'],
Digit3: ['š', '3', '^', '', 0, 'VK_3'],
Digit4: ['č', '4', '˘', '', 0, 'VK_4'],
Digit5: ['ř', '5', '°', '', 0, 'VK_5'],
Digit6: ['ž', '6', '˛', '', 0, 'VK_6'],
Digit7: ['ý', '7', '`', '', 0, 'VK_7'],
Digit8: ['á', '8', '˙', '', 0, 'VK_8'],
Digit9: ['í', '9', '´', '', 0, 'VK_9'],
Digit0: ['é', '0', '˝', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['=', '%', '¨', '', 0, 'VK_OEM_PLUS'],
Equal: ['´', 'ˇ', '¸', '', 0, 'VK_OEM_2'],
BracketLeft: ['ú', '/', '÷', '', 0, 'VK_OEM_4'],
BracketRight: [')', '(', '×', '', 0, 'VK_OEM_6'],
Backslash: ['¨', '\'', '¤', '', 0, 'VK_OEM_5'],
Semicolon: ['ů', '"', '$', '', 0, 'VK_OEM_1'],
Quote: ['§', '!', 'ß', '', 0, 'VK_OEM_7'],
Backquote: [';', '°', '', '', 0, 'VK_OEM_3'],
Comma: [',', '?', '<', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '>', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '*', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000807', id: '', text: 'Swiss German' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyZ: ['y', 'Y', '', '', 0, 'VK_Y'],
Digit1: ['1', '+', '¦', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '*', '#', '', 0, 'VK_3'],
Digit4: ['4', 'ç', '°', '', 0, 'VK_4'],
Digit5: ['5', '%', '§', '', 0, 'VK_5'],
Digit6: ['6', '&', '¬', '', 0, 'VK_6'],
Digit7: ['7', '/', '|', '', 0, 'VK_7'],
Digit8: ['8', '(', '¢', '', 0, 'VK_8'],
Digit9: ['9', ')', '', '', 0, 'VK_9'],
Digit0: ['0', '=', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['\'', '?', '´', '', 0, 'VK_OEM_4'],
Equal: ['^', '`', '~', '', 0, 'VK_OEM_6'],
BracketLeft: ['ü', 'è', '[', '', 0, 'VK_OEM_1'],
BracketRight: ['¨', '!', ']', '', 0, 'VK_OEM_3'],
Backslash: ['$', '£', '}', '', 0, 'VK_OEM_8'],
Semicolon: ['ö', 'é', '', '', 0, 'VK_OEM_7'],
Quote: ['ä', 'à', '{', '', 0, 'VK_OEM_5'],
Backquote: ['§', '°', '', '', 0, 'VK_OEM_2'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '\\', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.German', lang: 'de', localizedName: 'German' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', '', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', '™', 0],
KeyE: ['e', 'E', '€', '‰', 0],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', 'Ì', 0],
KeyH: ['h', 'H', 'ª', 'Ó', 0],
KeyI: ['i', 'I', '', 'Û', 0],
KeyJ: ['j', 'J', 'º', 'ı', 0],
KeyK: ['k', 'K', '∆', 'ˆ', 0],
KeyL: ['l', 'L', '@', 'fl', 0],
KeyM: ['m', 'M', 'µ', '˘', 0],
KeyN: ['n', 'N', '~', '', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', '«', '»', 0],
KeyR: ['r', 'R', '®', '¸', 0],
KeyS: ['s', 'S', '', 'Í', 0],
KeyT: ['t', 'T', '†', '˝', 0],
KeyU: ['u', 'U', '¨', 'Á', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', 'Ù', 0],
KeyY: ['z', 'Z', 'Ω', 'ˇ', 0],
KeyZ: ['y', 'Y', '¥', '‡', 0],
Digit1: ['1', '!', '¡', '¬', 0],
Digit2: ['2', '"', '“', '”', 0],
Digit3: ['3', '§', '¶', '#', 0],
Digit4: ['4', '$', '¢', '£', 0],
Digit5: ['5', '%', '[', 'fi', 0],
Digit6: ['6', '&', ']', '^', 8],
Digit7: ['7', '/', '|', '\\', 0],
Digit8: ['8', '(', '{', '˜', 0],
Digit9: ['9', ')', '}', '·', 0],
Digit0: ['0', '=', '≠', '¯', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['ß', '?', '¿', '˙', 0],
Equal: ['´', '`', '\'', '˚', 3],
BracketLeft: ['ü', 'Ü', '•', '°', 0],
BracketRight: ['+', '*', '±', '', 0],
Backslash: ['#', '\'', '', '', 0],
Semicolon: ['ö', 'Ö', 'œ', 'Œ', 0],
Quote: ['ä', 'Ä', 'æ', 'Æ', 0],
Backquote: ['<', '>', '≤', '≥', 0],
Comma: [',', ';', '∞', '˛', 0],
Period: ['.', ':', '…', '÷', 0],
Slash: ['-', '_', '', '—', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', ',', '.', '.', 0],
IntlBackslash: ['^', '°', '„', '“', 1],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,187 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { model: 'pc104', layout: 'de', variant: '', options: '', rules: 'base' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'æ', 'Æ', 0],
KeyB: ['b', 'B', '“', '', 0],
KeyC: ['c', 'C', '¢', '©', 0],
KeyD: ['d', 'D', 'ð', 'Ð', 0],
KeyE: ['e', 'E', '€', '€', 0],
KeyF: ['f', 'F', 'đ', 'ª', 0],
KeyG: ['g', 'G', 'ŋ', 'Ŋ', 0],
KeyH: ['h', 'H', 'ħ', 'Ħ', 0],
KeyI: ['i', 'I', '→', 'ı', 0],
KeyJ: ['j', 'J', '̣', '̇', 0],
KeyK: ['k', 'K', 'ĸ', '&', 0],
KeyL: ['l', 'L', 'ł', 'Ł', 0],
KeyM: ['m', 'M', 'µ', 'º', 0],
KeyN: ['n', 'N', '”', '', 0],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'þ', 'Þ', 0],
KeyQ: ['q', 'Q', '@', 'Ω', 0],
KeyR: ['r', 'R', '¶', '®', 0],
KeyS: ['s', 'S', 'ſ', 'ẞ', 0],
KeyT: ['t', 'T', 'ŧ', 'Ŧ', 0],
KeyU: ['u', 'U', '↓', '↑', 0],
KeyV: ['v', 'V', '„', '', 0],
KeyW: ['w', 'W', 'ł', 'Ł', 0],
KeyX: ['x', 'X', '«', '', 0],
KeyY: ['z', 'Z', '←', '¥', 0],
KeyZ: ['y', 'Y', '»', '', 0],
Digit1: ['1', '!', '¹', '¡', 0],
Digit2: ['2', '"', '²', '⅛', 0],
Digit3: ['3', '§', '³', '£', 0],
Digit4: ['4', '$', '¼', '¤', 0],
Digit5: ['5', '%', '½', '⅜', 0],
Digit6: ['6', '&', '¬', '⅝', 0],
Digit7: ['7', '/', '{', '⅞', 0],
Digit8: ['8', '(', '[', '™', 0],
Digit9: ['9', ')', ']', '±', 0],
Digit0: ['0', '=', '}', '°', 0],
Enter: ['\r', '\r', '\r', '\r', 0],
Escape: ['\u001b', '\u001b', '\u001b', '\u001b', 0],
Backspace: ['\b', '\b', '\b', '\b', 0],
Tab: ['\t', '', '\t', '', 0],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['ß', '?', '\\', '¿', 0],
Equal: ['́', '̀', '̧', '̨', 0],
BracketLeft: ['ü', 'Ü', '̈', '̊', 0],
BracketRight: ['+', '*', '~', '¯', 0],
Backslash: ['#', '\'', '', '̆', 0],
Semicolon: ['ö', 'Ö', '̋', '̣', 0],
Quote: ['ä', 'Ä', '̂', '̌', 0],
Backquote: ['̂', '°', '', '″', 0],
Comma: [',', ';', '·', '×', 0],
Period: ['.', ':', '…', '÷', 0],
Slash: ['-', '_', '', '—', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: ['', '', '', '', 0],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: ['/', '/', '/', '/', 0],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: [],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['', '1', '', '1', 0],
Numpad2: ['', '2', '', '2', 0],
Numpad3: ['', '3', '', '3', 0],
Numpad4: ['', '4', '', '4', 0],
Numpad5: ['', '5', '', '5', 0],
Numpad6: ['', '6', '', '6', 0],
Numpad7: ['', '7', '', '7', 0],
Numpad8: ['', '8', '', '8', 0],
Numpad9: ['', '9', '', '9', 0],
Numpad0: ['', '0', '', '0', 0],
NumpadDecimal: ['', ',', '', ',', 0],
IntlBackslash: ['<', '>', '|', '̱', 0],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Open: [],
Help: [],
Select: [],
Again: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
Find: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
Lang5: [],
NumpadParenLeft: [],
NumpadParenRight: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: ['\r', '\r', '\r', '\r', 0],
MetaRight: ['.', '.', '.', '.', 0],
BrightnessUp: [],
BrightnessDown: [],
MediaPlay: [],
MediaRecord: [],
MediaFastForward: [],
MediaRewind: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
SelectTask: [],
LaunchScreenSaver: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: [],
MailReply: [],
MailForward: [],
MailSend: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000407', id: '', text: 'German' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', 'µ', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '@', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyZ: ['y', 'Y', '', '', 0, 'VK_Y'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '²', '', 0, 'VK_2'],
Digit3: ['3', '§', '³', '', 0, 'VK_3'],
Digit4: ['4', '$', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['ß', '?', '\\', 'ẞ', 0, 'VK_OEM_4'],
Equal: ['´', '`', '', '', 0, 'VK_OEM_6'],
BracketLeft: ['ü', 'Ü', '', '', 0, 'VK_OEM_1'],
BracketRight: ['+', '*', '~', '', 0, 'VK_OEM_PLUS'],
Backslash: ['#', '\'', '', '', 0, 'VK_OEM_2'],
Semicolon: ['ö', 'Ö', '', '', 0, 'VK_OEM_3'],
Quote: ['ä', 'Ä', '', '', 0, 'VK_OEM_7'],
Backquote: ['^', '°', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '|', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000406', id: '', text: 'Danish' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', 'µ', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '#', '£', '', 0, 'VK_3'],
Digit4: ['4', '¤', '$', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['+', '?', '', '', 0, 'VK_OEM_PLUS'],
Equal: ['´', '`', '|', '', 0, 'VK_OEM_4'],
BracketLeft: ['å', 'Å', '', '', 0, 'VK_OEM_6'],
BracketRight: ['¨', '^', '~', '', 0, 'VK_OEM_1'],
Backslash: ['\'', '*', '', '', 0, 'VK_OEM_2'],
Semicolon: ['æ', 'Æ', '', '', 0, 'VK_OEM_3'],
Quote: ['ø', 'Ø', '', '', 0, 'VK_OEM_7'],
Backquote: ['½', '§', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '\\', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000813', id: '', text: 'Belgian (Period)' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: [',', '?', '', '', 0, 'VK_OEM_COMMA'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['a', 'A', '', '', 0, 'VK_A'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['w', 'W', '', '', 0, 'VK_W'],
Digit1: ['&', '1', '|', '', 0, 'VK_1'],
Digit2: ['é', '2', '@', '', 0, 'VK_2'],
Digit3: ['"', '3', '#', '', 0, 'VK_3'],
Digit4: ['\'', '4', '{', '', 0, 'VK_4'],
Digit5: ['(', '5', '[', '', 0, 'VK_5'],
Digit6: ['§', '6', '^', '', 0, 'VK_6'],
Digit7: ['è', '7', '', '', 0, 'VK_7'],
Digit8: ['!', '8', '', '', 0, 'VK_8'],
Digit9: ['ç', '9', '{', '', 0, 'VK_9'],
Digit0: ['à', '0', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: [')', '°', '', '', 0, 'VK_OEM_4'],
Equal: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
BracketLeft: ['^', '¨', '[', '', 0, 'VK_OEM_6'],
BracketRight: ['$', '*', ']', '', 0, 'VK_OEM_1'],
Backslash: ['µ', '£', '`', '`', 0, 'VK_OEM_5'],
Semicolon: ['m', 'M', '', '', 0, 'VK_M'],
Quote: ['ù', '%', '´', '´', 0, 'VK_OEM_3'],
Backquote: ['²', '³', '', '', 0, 'VK_OEM_7'],
Comma: [';', '.', '', '', 0, 'VK_OEM_PERIOD'],
Period: [':', '/', '', '', 0, 'VK_OEM_2'],
Slash: ['=', '+', '~', '~', 0, 'VK_OEM_PLUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '\\', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.USExtended', lang: 'en', localizedName: 'ABC - Extended' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', '¯', '̄', 4],
KeyB: ['b', 'B', '˘', '̆', 4],
KeyC: ['c', 'C', '¸', '̧', 4],
KeyD: ['d', 'D', 'ð', 'Ð', 0],
KeyE: ['e', 'E', '´', '́', 4],
KeyF: ['f', 'F', 'ƒ', '', 0],
KeyG: ['g', 'G', '©', '‸', 8],
KeyH: ['h', 'H', 'ˍ', '̱', 4],
KeyI: ['i', 'I', 'ʼ', '̛', 4],
KeyJ: ['j', 'J', '˝', '̋', 4],
KeyK: ['k', 'K', '˚', '̊', 4],
KeyL: ['l', 'L', '-', '̵', 4],
KeyM: ['m', 'M', '˛', '̨', 4],
KeyN: ['n', 'N', '˜', '̃', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', ',', '̦', 4],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', '', 0],
KeyT: ['t', 'T', 'þ', 'Þ', 0],
KeyU: ['u', 'U', '¨', '̈', 4],
KeyV: ['v', 'V', 'ˇ', '̌', 4],
KeyW: ['w', 'W', '˙', '̇', 4],
KeyX: ['x', 'X', '.', '̣', 4],
KeyY: ['y', 'Y', '¥', '', 0],
KeyZ: ['z', 'Z', 'ˀ', '̉', 4],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '§', '†', 0],
Digit6: ['6', '^', 'ˆ', '̂', 4],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', '№', 8],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['`', '~', '`', '̀', 4],
Comma: [',', '<', '≤', '„', 0],
Period: ['.', '>', '≥', 'ʔ', 8],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00004009', id: '', text: 'India' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'ā', 'Ā', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', 'ḍ', 'Ḍ', 0, 'VK_D'],
KeyE: ['e', 'E', 'ē', 'Ē', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', 'ṅ', 'Ṅ', 0, 'VK_G'],
KeyH: ['h', 'H', 'ḥ', 'Ḥ', 0, 'VK_H'],
KeyI: ['i', 'I', 'ī', 'Ī', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', 'l̥', 'L̥', 0, 'VK_L'],
KeyM: ['m', 'M', 'ṁ', 'Ṁ', 0, 'VK_M'],
KeyN: ['n', 'N', 'ṇ', 'Ṇ', 0, 'VK_N'],
KeyO: ['o', 'O', 'ō', 'Ō', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', 'æ', 'Æ', 0, 'VK_Q'],
KeyR: ['r', 'R', 'r̥', 'R̥', 0, 'VK_R'],
KeyS: ['s', 'S', 'ś', 'Ś', 0, 'VK_S'],
KeyT: ['t', 'T', 'ṭ', 'Ṭ', 0, 'VK_T'],
KeyU: ['u', 'U', 'ū', 'Ū', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', 'ṣ', 'Ṣ', 0, 'VK_X'],
KeyY: ['y', 'Y', 'ñ', 'Ñ', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '@', '', '', 0, 'VK_2'],
Digit3: ['3', '#', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '₹', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '^', '', 'ˆ', 0, 'VK_6'],
Digit7: ['7', '&', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '˘', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '-', 'ˍ', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['[', '{', '', '', 0, 'VK_OEM_4'],
BracketRight: [']', '}', '', '', 0, 'VK_OEM_6'],
Backslash: ['\\', '|', '', '', 0, 'VK_OEM_5'],
Semicolon: [';', ':', '', '', 0, 'VK_OEM_1'],
Quote: ['\'', '"', '', '', 0, 'VK_OEM_7'],
Backquote: ['`', '~', '', '~', 0, 'VK_OEM_3'],
Comma: [',', '<', ',', '<', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '.', '', 0, 'VK_OEM_PERIOD'],
Slash: ['/', '?', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.USInternational-PC', lang: 'en', localizedName: 'U.S. International - PC' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '´', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', '˝', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', 'ˆ', 'ˆ', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', 'Â', 0],
KeyN: ['n', 'N', '˜', '˜', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'ˇ', 0],
KeyU: ['u', 'U', '¨', '¨', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', '˛', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', '¸', 0],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', 'ˆ', '§', 'fl', 2],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 3],
Backquote: ['`', '˜', '`', '`', 7],
Comma: [',', '<', '≤', '¯', 0],
Period: ['.', '>', '≥', '˘', 0],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00020409', id: '0001', text: 'United States-International' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'á', 'Á', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '©', '¢', 0, 'VK_C'],
KeyD: ['d', 'D', 'ð', 'Ð', 0, 'VK_D'],
KeyE: ['e', 'E', 'é', 'É', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', 'í', 'Í', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', 'ø', 'Ø', 0, 'VK_L'],
KeyM: ['m', 'M', 'µ', '', 0, 'VK_M'],
KeyN: ['n', 'N', 'ñ', 'Ñ', 0, 'VK_N'],
KeyO: ['o', 'O', 'ó', 'Ó', 0, 'VK_O'],
KeyP: ['p', 'P', 'ö', 'Ö', 0, 'VK_P'],
KeyQ: ['q', 'Q', 'ä', 'Ä', 0, 'VK_Q'],
KeyR: ['r', 'R', '®', '', 0, 'VK_R'],
KeyS: ['s', 'S', 'ß', '§', 0, 'VK_S'],
KeyT: ['t', 'T', 'þ', 'Þ', 0, 'VK_T'],
KeyU: ['u', 'U', 'ú', 'Ú', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', 'å', 'Å', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', 'ü', 'Ü', 0, 'VK_Y'],
KeyZ: ['z', 'Z', 'æ', 'Æ', 0, 'VK_Z'],
Digit1: ['1', '!', '¡', '¹', 0, 'VK_1'],
Digit2: ['2', '@', '²', '', 0, 'VK_2'],
Digit3: ['3', '#', '³', '', 0, 'VK_3'],
Digit4: ['4', '$', '¤', '£', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '^', '¼', '', 0, 'VK_6'],
Digit7: ['7', '&', '½', '', 0, 'VK_7'],
Digit8: ['8', '*', '¾', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '¥', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '×', '÷', 0, 'VK_OEM_PLUS'],
BracketLeft: ['[', '{', '«', '', 0, 'VK_OEM_4'],
BracketRight: [']', '}', '»', '', 0, 'VK_OEM_6'],
Backslash: ['\\', '|', '¬', '¦', 0, 'VK_OEM_5'],
Semicolon: [';', ':', '¶', '°', 0, 'VK_OEM_1'],
Quote: ['\'', '"', '´', '¨', 0, 'VK_OEM_7'],
Backquote: ['`', '~', '', '', 0, 'VK_OEM_3'],
Comma: [',', '<', 'ç', 'Ç', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['/', '?', '¿', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,131 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.British', lang: 'en', localizedName: 'British' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '‰', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', 'Ì', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', '^', 'È', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', '˜', 0],
KeyN: ['n', 'N', '~', 'ˆ', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', 'Â', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'Ê', 0],
KeyU: ['u', 'U', '¨', 'Ë', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', 'Ù', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', 'Û', 0],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '€', '™', 0],
Digit3: ['3', '£', '#', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', '^', '§', 'fl', 0],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['`', '~', '`', 'Ÿ', 4],
Comma: [',', '<', '≤', '¯', 0],
Period: ['.', '>', '≥', '˘', 0],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '', '', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000809', id: '', text: 'United Kingdom' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'á', 'Á', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', 'é', 'É', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', 'í', 'Í', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', 'ó', 'Ó', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', 'ú', 'Ú', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '', '', 0, 'VK_2'],
Digit3: ['3', '£', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '€', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '^', '', '', 0, 'VK_6'],
Digit7: ['7', '&', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['[', '{', '', '', 0, 'VK_OEM_4'],
BracketRight: [']', '}', '', '', 0, 'VK_OEM_6'],
Backslash: ['#', '~', '\\', '|', 0, 'VK_OEM_7'],
Semicolon: [';', ':', '', '', 0, 'VK_OEM_1'],
Quote: ['\'', '@', '', '', 0, 'VK_OEM_3'],
Backquote: ['`', '¬', '¦', '', 0, 'VK_OEM_8'],
Comma: [',', '<', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['/', '?', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_5'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,140 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.US', lang: 'en', localizedName: 'U.S.', isUSStandard: true },
secondaryLayouts: [
{ id: 'com.apple.keylayout.ABC', lang: 'en', localizedName: 'ABC' },
{ id: 'com.sogou.inputmethod.sogou.pinyin', lang: 'zh-Hans', localizedName: 'Pinyin - Simplified' },
{ id: 'com.apple.inputmethod.Kotoeri.Roman', lang: 'en', localizedName: 'Romaji' },
{ id: 'com.apple.inputmethod.Kotoeri.Japanese', lang: 'ja', localizedName: 'Hiragana' },
{ id: 'com.apple.keylayout.Australian', lang: 'en', localizedName: 'Australian' },
{ id: 'com.apple.keylayout.Canadian', lang: 'en', localizedName: 'Canadian English' },
{ id: 'com.apple.keylayout.Brazilian', lang: 'pt', localizedName: 'Brazilian' },
],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '´', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', '˝', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', 'ˆ', 'ˆ', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', 'Â', 0],
KeyN: ['n', 'N', '˜', '˜', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'ˇ', 0],
KeyU: ['u', 'U', '¨', '¨', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', '˛', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', '¸', 0],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', '^', '§', 'fl', 0],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['`', '~', '`', '`', 4],
Comma: [',', '<', '≤', '¯', 0],
Period: ['.', '>', '≥', '˘', 0],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,190 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { model: 'pc105', layout: 'us', variant: '', options: '', rules: 'evdev', isUSStandard: true },
secondaryLayouts: [
{ model: 'pc105', layout: 'cn', variant: '', options: '', rules: 'evdev' },
],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'a', 'A', 0],
KeyB: ['b', 'B', 'b', 'B', 0],
KeyC: ['c', 'C', 'c', 'C', 0],
KeyD: ['d', 'D', 'd', 'D', 0],
KeyE: ['e', 'E', 'e', 'E', 0],
KeyF: ['f', 'F', 'f', 'F', 0],
KeyG: ['g', 'G', 'g', 'G', 0],
KeyH: ['h', 'H', 'h', 'H', 0],
KeyI: ['i', 'I', 'i', 'I', 0],
KeyJ: ['j', 'J', 'j', 'J', 0],
KeyK: ['k', 'K', 'k', 'K', 0],
KeyL: ['l', 'L', 'l', 'L', 0],
KeyM: ['m', 'M', 'm', 'M', 0],
KeyN: ['n', 'N', 'n', 'N', 0],
KeyO: ['o', 'O', 'o', 'O', 0],
KeyP: ['p', 'P', 'p', 'P', 0],
KeyQ: ['q', 'Q', 'q', 'Q', 0],
KeyR: ['r', 'R', 'r', 'R', 0],
KeyS: ['s', 'S', 's', 'S', 0],
KeyT: ['t', 'T', 't', 'T', 0],
KeyU: ['u', 'U', 'u', 'U', 0],
KeyV: ['v', 'V', 'v', 'V', 0],
KeyW: ['w', 'W', 'w', 'W', 0],
KeyX: ['x', 'X', 'x', 'X', 0],
KeyY: ['y', 'Y', 'y', 'Y', 0],
KeyZ: ['z', 'Z', 'z', 'Z', 0],
Digit1: ['1', '!', '1', '!', 0],
Digit2: ['2', '@', '2', '@', 0],
Digit3: ['3', '#', '3', '#', 0],
Digit4: ['4', '$', '4', '$', 0],
Digit5: ['5', '%', '5', '%', 0],
Digit6: ['6', '^', '6', '^', 0],
Digit7: ['7', '&', '7', '&', 0],
Digit8: ['8', '*', '8', '*', 0],
Digit9: ['9', '(', '9', '(', 0],
Digit0: ['0', ')', '0', ')', 0],
Enter: ['\r', '\r', '\r', '\r', 0],
Escape: ['\u001b', '\u001b', '\u001b', '\u001b', 0],
Backspace: ['\b', '\b', '\b', '\b', 0],
Tab: ['\t', '', '\t', '', 0],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '-', '_', 0],
Equal: ['=', '+', '=', '+', 0],
BracketLeft: ['[', '{', '[', '{', 0],
BracketRight: [']', '}', ']', '}', 0],
Backslash: ['\\', '|', '\\', '|', 0],
Semicolon: [';', ':', ';', ':', 0],
Quote: ['\'', '"', '\'', '"', 0],
Backquote: ['`', '~', '`', '~', 0],
Comma: [',', '<', ',', '<', 0],
Period: ['.', '>', '.', '>', 0],
Slash: ['/', '?', '/', '?', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: ['', '', '', '', 0],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: ['\r', '\r', '\r', '\r', 0],
Numpad1: ['', '1', '', '1', 0],
Numpad2: ['', '2', '', '2', 0],
Numpad3: ['', '3', '', '3', 0],
Numpad4: ['', '4', '', '4', 0],
Numpad5: ['', '5', '', '5', 0],
Numpad6: ['', '6', '', '6', 0],
Numpad7: ['', '7', '', '7', 0],
Numpad8: ['', '8', '', '8', 0],
Numpad9: ['', '9', '', '9', 0],
Numpad0: ['', '0', '', '0', 0],
NumpadDecimal: ['', '.', '', '.', 0],
IntlBackslash: ['<', '>', '|', '¦', 0],
ContextMenu: [],
Power: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Open: [],
Help: [],
Select: [],
Again: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
Find: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: ['.', '.', '.', '.', 0],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
Lang5: [],
NumpadParenLeft: ['(', '(', '(', '(', 0],
NumpadParenRight: [')', ')', ')', ')', 0],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
BrightnessUp: [],
BrightnessDown: [],
MediaPlay: [],
MediaRecord: [],
MediaFastForward: [],
MediaRewind: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
SelectTask: [],
LaunchScreenSaver: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: [],
MailReply: [],
MailForward: [],
MailSend: []
}
});

View File

@@ -0,0 +1,174 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000409', id: '', text: 'US', isUSStandard: true },
secondaryLayouts: [
{ name: '00000804', id: '', text: 'Chinese (Simplified) - US Keyboard' },
{ name: '00000411', id: '', text: 'Japanese' },
{ name: '00000412', id: '', text: 'Korean' },
{ name: '00000404', id: '', text: 'Chinese (Traditional) - US Keyboard' }
],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '@', '', '', 0, 'VK_2'],
Digit3: ['3', '#', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '^', '', '', 0, 'VK_6'],
Digit7: ['7', '&', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['[', '{', '', '', 0, 'VK_OEM_4'],
BracketRight: [']', '}', '', '', 0, 'VK_OEM_6'],
Backslash: ['\\', '|', '', '', 0, 'VK_OEM_5'],
Semicolon: [';', ':', '', '', 0, 'VK_OEM_1'],
Quote: ['\'', '"', '', '', 0, 'VK_OEM_7'],
Backquote: ['`', '~', '', '', 0, 'VK_OEM_3'],
Comma: [',', '<', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['/', '?', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000080A', id: '', text: 'Latin American' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '@', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '', '', 0, 'VK_2'],
Digit3: ['3', '#', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '', '', 0, 'VK_7'],
Digit8: ['8', '(', '', '', 0, 'VK_8'],
Digit9: ['9', ')', '', '', 0, 'VK_9'],
Digit0: ['0', '=', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['\'', '?', '\\', '', 0, 'VK_OEM_4'],
Equal: ['¿', '¡', '', '', 0, 'VK_OEM_6'],
BracketLeft: ['´', '¨', '', '', 0, 'VK_OEM_1'],
BracketRight: ['+', '*', '~', '', 0, 'VK_OEM_PLUS'],
Backslash: ['}', ']', '`', '', 0, 'VK_OEM_2'],
Semicolon: ['ñ', 'Ñ', '', '', 0, 'VK_OEM_3'],
Quote: ['{', '[', '^', '', 0, 'VK_OEM_7'],
Backquote: ['|', '°', '¬', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.Spanish-ISO', lang: 'es', localizedName: 'Spanish - ISO' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', 'ß', '', 0],
KeyC: ['c', 'C', '©', ' ', 0],
KeyD: ['d', 'D', '∂', '∆', 0],
KeyE: ['e', 'E', '€', '€', 0],
KeyF: ['f', 'F', 'ƒ', 'fi', 0],
KeyG: ['g', 'G', '', 'fl', 0],
KeyH: ['h', 'H', '™', ' ', 0],
KeyI: ['i', 'I', ' ', ' ', 0],
KeyJ: ['j', 'J', '¶', '¯', 0],
KeyK: ['k', 'K', '§', 'ˇ', 0],
KeyL: ['l', 'L', ' ', '˘', 0],
KeyM: ['m', 'M', 'µ', '˚', 0],
KeyN: ['n', 'N', ' ', '˙', 0],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', ' ', 0],
KeyS: ['s', 'S', '∫', ' ', 0],
KeyT: ['t', 'T', '†', '‡', 0],
KeyU: ['u', 'U', ' ', ' ', 0],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', 'æ', 'Æ', 0],
KeyX: ['x', 'X', '∑', '', 0],
KeyY: ['y', 'Y', '¥', ' ', 0],
KeyZ: ['z', 'Z', 'Ω', '', 0],
Digit1: ['1', '!', '|', 'ı', 0],
Digit2: ['2', '"', '@', '˝', 0],
Digit3: ['3', '·', '#', '•', 0],
Digit4: ['4', '$', '¢', '£', 0],
Digit5: ['5', '%', '∞', '‰', 0],
Digit6: ['6', '&', '¬', ' ', 0],
Digit7: ['7', '/', '÷', '', 0],
Digit8: ['8', '(', '“', '', 0],
Digit9: ['9', ')', '”', '', 0],
Digit0: ['0', '=', '≠', '≈', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['\'', '?', '´', '¸', 0],
Equal: ['¡', '¿', '', '˛', 0],
BracketLeft: ['`', '^', '[', 'ˆ', 3],
BracketRight: ['+', '*', ']', '±', 0],
Backslash: ['ç', 'Ç', '}', '»', 0],
Semicolon: ['ñ', 'Ñ', '~', '˜', 4],
Quote: ['´', '¨', '{', '«', 3],
Backquote: ['<', '>', '≤', '≥', 0],
Comma: [',', ';', '„', '', 0],
Period: ['.', ':', '…', '…', 0],
Slash: ['-', '_', '', '—', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', ',', ',', ',', 0],
IntlBackslash: ['º', 'ª', '\\', '°', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,187 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { model: 'pc105', layout: 'es', variant: '', options: '', rules: 'evdev' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'æ', 'Æ', 0],
KeyB: ['b', 'B', '”', '', 0],
KeyC: ['c', 'C', '¢', '©', 0],
KeyD: ['d', 'D', 'ð', 'Ð', 0],
KeyE: ['e', 'E', '€', '¢', 0],
KeyF: ['f', 'F', 'đ', 'ª', 0],
KeyG: ['g', 'G', 'ŋ', 'Ŋ', 0],
KeyH: ['h', 'H', 'ħ', 'Ħ', 0],
KeyI: ['i', 'I', '→', 'ı', 0],
KeyJ: ['j', 'J', '̉', '̛', 0],
KeyK: ['k', 'K', 'ĸ', '&', 0],
KeyL: ['l', 'L', 'ł', 'Ł', 0],
KeyM: ['m', 'M', 'µ', 'º', 0],
KeyN: ['n', 'N', 'n', 'N', 0],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'þ', 'Þ', 0],
KeyQ: ['q', 'Q', '@', 'Ω', 0],
KeyR: ['r', 'R', '¶', '®', 0],
KeyS: ['s', 'S', 'ß', '§', 0],
KeyT: ['t', 'T', 'ŧ', 'Ŧ', 0],
KeyU: ['u', 'U', '↓', '↑', 0],
KeyV: ['v', 'V', '“', '', 0],
KeyW: ['w', 'W', 'ł', 'Ł', 0],
KeyX: ['x', 'X', '»', '>', 0],
KeyY: ['y', 'Y', '←', '¥', 0],
KeyZ: ['z', 'Z', '«', '<', 0],
Digit1: ['1', '!', '|', '¡', 0],
Digit2: ['2', '"', '@', '⅛', 0],
Digit3: ['3', '·', '#', '£', 0],
Digit4: ['4', '$', '~', '$', 0],
Digit5: ['5', '%', '½', '⅜', 0],
Digit6: ['6', '&', '¬', '⅝', 0],
Digit7: ['7', '/', '{', '⅞', 0],
Digit8: ['8', '(', '[', '™', 0],
Digit9: ['9', ')', ']', '±', 0],
Digit0: ['0', '=', '}', '°', 0],
Enter: ['\r', '\r', '\r', '\r', 0],
Escape: ['\u001b', '\u001b', '\u001b', '\u001b', 0],
Backspace: ['\b', '\b', '\b', '\b', 0],
Tab: ['\t', '', '\t', '', 0],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['\'', '?', '\\', '¿', 0],
Equal: ['¡', '¿', '̃', '~', 0],
BracketLeft: ['̀', '̂', '[', '̊', 0],
BracketRight: ['+', '*', ']', '̄', 0],
Backslash: ['ç', 'Ç', '}', '̆', 0],
Semicolon: ['ñ', 'Ñ', '~', '̋', 0],
Quote: ['́', '̈', '{', '{', 0],
Backquote: ['º', 'ª', '\\', '\\', 0],
Comma: [',', ';', '─', '×', 0],
Period: ['.', ':', '·', '÷', 0],
Slash: ['-', '_', '̣', '̇', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: ['', '', '', '', 0],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: ['\r', '\r', '\r', '\r', 0],
Numpad1: ['', '1', '', '1', 0],
Numpad2: ['', '2', '', '2', 0],
Numpad3: ['', '3', '', '3', 0],
Numpad4: ['', '4', '', '4', 0],
Numpad5: ['', '5', '', '5', 0],
Numpad6: ['', '6', '', '6', 0],
Numpad7: ['', '7', '', '7', 0],
Numpad8: ['', '8', '', '8', 0],
Numpad9: ['', '9', '', '9', 0],
Numpad0: ['', '0', '', '0', 0],
NumpadDecimal: ['', '.', '', '.', 0],
IntlBackslash: ['<', '>', '|', '¦', 0],
ContextMenu: [],
Power: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Open: [],
Help: [],
Select: [],
Again: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
Find: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: ['.', '.', '.', '.', 0],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
Lang5: [],
NumpadParenLeft: ['(', '(', '(', '(', 0],
NumpadParenRight: [')', ')', ')', ')', 0],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
BrightnessUp: [],
BrightnessDown: [],
MediaPlay: [],
MediaRecord: [],
MediaFastForward: [],
MediaRewind: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
SelectTask: [],
LaunchScreenSaver: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: [],
MailReply: [],
MailForward: [],
MailSend: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000040A', id: '', text: 'Spanish' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '|', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '·', '#', '', 0, 'VK_3'],
Digit4: ['4', '$', '~', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '¬', '', 0, 'VK_6'],
Digit7: ['7', '/', '', '', 0, 'VK_7'],
Digit8: ['8', '(', '', '', 0, 'VK_8'],
Digit9: ['9', ')', '', '', 0, 'VK_9'],
Digit0: ['0', '=', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['\'', '?', '', '', 0, 'VK_OEM_4'],
Equal: ['¡', '¿', '', '', 0, 'VK_OEM_6'],
BracketLeft: ['`', '^', '[', '', 0, 'VK_OEM_1'],
BracketRight: ['+', '*', ']', '', 0, 'VK_OEM_PLUS'],
Backslash: ['ç', 'Ç', '}', '', 0, 'VK_OEM_2'],
Semicolon: ['ñ', 'Ñ', '', '', 0, 'VK_OEM_3'],
Quote: ['´', '¨', '{', '', 0, 'VK_OEM_7'],
Backquote: ['º', 'ª', '\\', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.French', lang: 'fr', localizedName: 'French' },
secondaryLayouts: [],
mapping: {
KeyA: ['q', 'Q', '‡', 'Ω', 0],
KeyB: ['b', 'B', 'ß', '∫', 0],
KeyC: ['c', 'C', '©', '¢', 0],
KeyD: ['d', 'D', '∂', '∆', 0],
KeyE: ['e', 'E', 'ê', 'Ê', 0],
KeyF: ['f', 'F', 'ƒ', '·', 0],
KeyG: ['g', 'G', 'fi', 'fl', 0],
KeyH: ['h', 'H', 'Ì', 'Î', 0],
KeyI: ['i', 'I', 'î', 'ï', 0],
KeyJ: ['j', 'J', 'Ï', 'Í', 0],
KeyK: ['k', 'K', 'È', 'Ë', 0],
KeyL: ['l', 'L', '¬', '|', 0],
KeyM: [',', '?', '∞', '¿', 0],
KeyN: ['n', 'N', '~', 'ı', 4],
KeyO: ['o', 'O', 'œ', 'Œ', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['a', 'A', 'æ', 'Æ', 0],
KeyR: ['r', 'R', '®', '', 0],
KeyS: ['s', 'S', 'Ò', '∑', 0],
KeyT: ['t', 'T', '†', '™', 0],
KeyU: ['u', 'U', 'º', 'ª', 0],
KeyV: ['v', 'V', '◊', '√', 0],
KeyW: ['z', 'Z', 'Â', 'Å', 0],
KeyX: ['x', 'X', '≈', '', 0],
KeyY: ['y', 'Y', 'Ú', 'Ÿ', 0],
KeyZ: ['w', 'W', '', '', 0],
Digit1: ['&', '1', '', '´', 8],
Digit2: ['é', '2', 'ë', '„', 0],
Digit3: ['"', '3', '“', '”', 0],
Digit4: ['\'', '4', '', '', 0],
Digit5: ['(', '5', '{', '[', 0],
Digit6: ['§', '6', '¶', 'å', 0],
Digit7: ['è', '7', '«', '»', 0],
Digit8: ['!', '8', '¡', 'Û', 0],
Digit9: ['ç', '9', 'Ç', 'Á', 0],
Digit0: ['à', '0', 'ø', 'Ø', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: [')', '°', '}', ']', 0],
Equal: ['-', '_', '—', '', 0],
BracketLeft: ['^', '¨', 'ô', 'Ô', 3],
BracketRight: ['$', '*', '€', '¥', 0],
Backslash: ['`', '£', '@', '#', 1],
Semicolon: ['m', 'M', 'µ', 'Ó', 0],
Quote: ['ù', '%', 'Ù', '‰', 0],
Backquote: ['<', '>', '≤', '≥', 0],
Comma: [';', '.', '…', '•', 0],
Period: [':', '/', '÷', '\\', 0],
Slash: ['=', '+', '≠', '±', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', '.', ',', '.', 0],
IntlBackslash: ['@', '#', '•', 'Ÿ', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,187 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { model: 'pc104', layout: 'fr', variant: '', options: '', rules: 'base' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['q', 'Q', '@', 'Ω', 0],
KeyB: ['b', 'B', '”', '', 0],
KeyC: ['c', 'C', '¢', '©', 0],
KeyD: ['d', 'D', 'ð', 'Ð', 0],
KeyE: ['e', 'E', '€', '¢', 0],
KeyF: ['f', 'F', 'đ', 'ª', 0],
KeyG: ['g', 'G', 'ŋ', 'Ŋ', 0],
KeyH: ['h', 'H', 'ħ', 'Ħ', 0],
KeyI: ['i', 'I', '→', 'ı', 0],
KeyJ: ['j', 'J', '̉', '̛', 0],
KeyK: ['k', 'K', 'ĸ', '&', 0],
KeyL: ['l', 'L', 'ł', 'Ł', 0],
KeyM: [',', '?', '́', '̋', 0],
KeyN: ['n', 'N', 'n', 'N', 0],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'þ', 'Þ', 0],
KeyQ: ['a', 'A', 'æ', 'Æ', 0],
KeyR: ['r', 'R', '¶', '®', 0],
KeyS: ['s', 'S', 'ß', '§', 0],
KeyT: ['t', 'T', 'ŧ', 'Ŧ', 0],
KeyU: ['u', 'U', '↓', '↑', 0],
KeyV: ['v', 'V', '“', '', 0],
KeyW: ['z', 'Z', '«', '<', 0],
KeyX: ['x', 'X', '»', '>', 0],
KeyY: ['y', 'Y', '←', '¥', 0],
KeyZ: ['w', 'W', 'ł', 'Ł', 0],
Digit1: ['&', '1', '¹', '¡', 0],
Digit2: ['é', '2', '~', '⅛', 0],
Digit3: ['"', '3', '#', '£', 0],
Digit4: ['\'', '4', '{', '$', 0],
Digit5: ['(', '5', '[', '⅜', 0],
Digit6: ['-', '6', '|', '⅝', 0],
Digit7: ['è', '7', '`', '⅞', 0],
Digit8: ['_', '8', '\\', '™', 0],
Digit9: ['ç', '9', '^', '±', 0],
Digit0: ['à', '0', '@', '°', 0],
Enter: ['\r', '\r', '\r', '\r', 0],
Escape: ['\u001b', '\u001b', '\u001b', '\u001b', 0],
Backspace: ['\b', '\b', '\b', '\b', 0],
Tab: ['\t', '', '\t', '', 0],
Space: [' ', ' ', ' ', ' ', 0],
Minus: [')', '°', ']', '¿', 0],
Equal: ['=', '+', '}', '̨', 0],
BracketLeft: ['̂', '̈', '̈', '̊', 0],
BracketRight: ['$', '£', '¤', '̄', 0],
Backslash: ['*', 'µ', '̀', '̆', 0],
Semicolon: ['m', 'M', 'µ', 'º', 0],
Quote: ['ù', '%', '̂', '̌', 0],
Backquote: ['²', '~', '¬', '¬', 0],
Comma: [';', '.', '─', '×', 0],
Period: [':', '/', '·', '÷', 0],
Slash: ['!', '§', '̣', '̇', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: ['', '', '', '', 0],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: ['/', '/', '/', '/', 0],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: [],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['', '1', '', '1', 0],
Numpad2: ['', '2', '', '2', 0],
Numpad3: ['', '3', '', '3', 0],
Numpad4: ['', '4', '', '4', 0],
Numpad5: ['', '5', '', '5', 0],
Numpad6: ['', '6', '', '6', 0],
Numpad7: ['', '7', '', '7', 0],
Numpad8: ['', '8', '', '8', 0],
Numpad9: ['', '9', '', '9', 0],
Numpad0: ['', '0', '', '0', 0],
NumpadDecimal: ['', '.', '', '.', 0],
IntlBackslash: ['<', '>', '|', '¦', 0],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Open: [],
Help: [],
Select: [],
Again: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
Find: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
Lang5: [],
NumpadParenLeft: [],
NumpadParenRight: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: ['\r', '\r', '\r', '\r', 0],
MetaRight: ['.', '.', '.', '.', 0],
BrightnessUp: [],
BrightnessDown: [],
MediaPlay: [],
MediaRecord: [],
MediaFastForward: [],
MediaRewind: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
SelectTask: [],
LaunchScreenSaver: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: [],
MailReply: [],
MailForward: [],
MailSend: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000040C', id: '', text: 'French' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: [',', '?', '', '', 0, 'VK_OEM_COMMA'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['a', 'A', '', '', 0, 'VK_A'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['w', 'W', '', '', 0, 'VK_W'],
Digit1: ['&', '1', '', '', 0, 'VK_1'],
Digit2: ['é', '2', '~', '', 0, 'VK_2'],
Digit3: ['"', '3', '#', '', 0, 'VK_3'],
Digit4: ['\'', '4', '{', '', 0, 'VK_4'],
Digit5: ['(', '5', '[', '', 0, 'VK_5'],
Digit6: ['-', '6', '|', '', 0, 'VK_6'],
Digit7: ['è', '7', '`', '', 0, 'VK_7'],
Digit8: ['_', '8', '\\', '', 0, 'VK_8'],
Digit9: ['ç', '9', '^', '', 0, 'VK_9'],
Digit0: ['à', '0', '@', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: [')', '°', ']', '', 0, 'VK_OEM_4'],
Equal: ['=', '+', '}', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['^', '¨', '', '', 0, 'VK_OEM_6'],
BracketRight: ['$', '£', '¤', '', 0, 'VK_OEM_1'],
Backslash: ['*', 'µ', '', '', 0, 'VK_OEM_5'],
Semicolon: ['m', 'M', '', '', 0, 'VK_M'],
Quote: ['ù', '%', '', '', 0, 'VK_OEM_3'],
Backquote: ['²', '', '', '', 0, 'VK_OEM_7'],
Comma: [';', '.', '', '', 0, 'VK_OEM_PERIOD'],
Period: [':', '/', '', '', 0, 'VK_OEM_2'],
Slash: ['!', '§', '', '', 0, 'VK_OEM_8'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000040E', id: '', text: 'Hungarian' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'ä', '', 0, 'VK_A'],
KeyB: ['b', 'B', '{', '', 0, 'VK_B'],
KeyC: ['c', 'C', '&', '', 0, 'VK_C'],
KeyD: ['d', 'D', 'Đ', '', 0, 'VK_D'],
KeyE: ['e', 'E', 'Ä', '', 0, 'VK_E'],
KeyF: ['f', 'F', '[', '', 0, 'VK_F'],
KeyG: ['g', 'G', ']', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', 'Í', '', 0, 'VK_I'],
KeyJ: ['j', 'J', 'í', '', 0, 'VK_J'],
KeyK: ['k', 'K', 'ł', '', 0, 'VK_K'],
KeyL: ['l', 'L', 'Ł', '', 0, 'VK_L'],
KeyM: ['m', 'M', '<', '', 0, 'VK_M'],
KeyN: ['n', 'N', '}', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '\\', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', 'đ', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '€', '', 0, 'VK_U'],
KeyV: ['v', 'V', '@', '', 0, 'VK_V'],
KeyW: ['w', 'W', '|', '', 0, 'VK_W'],
KeyX: ['x', 'X', '#', '', 0, 'VK_X'],
KeyY: ['z', 'Z', '', '', 0, 'VK_Z'],
KeyZ: ['y', 'Y', '>', '', 0, 'VK_Y'],
Digit1: ['1', '\'', '~', '', 0, 'VK_1'],
Digit2: ['2', '"', 'ˇ', '', 0, 'VK_2'],
Digit3: ['3', '+', '^', '', 0, 'VK_3'],
Digit4: ['4', '!', '˘', '', 0, 'VK_4'],
Digit5: ['5', '%', '°', '', 0, 'VK_5'],
Digit6: ['6', '/', '˛', '', 0, 'VK_6'],
Digit7: ['7', '=', '`', '', 0, 'VK_7'],
Digit8: ['8', '(', '˙', '', 0, 'VK_8'],
Digit9: ['9', ')', '´', '', 0, 'VK_9'],
Digit0: ['ö', 'Ö', '˝', '', 0, 'VK_OEM_3'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['ü', 'Ü', '¨', '', 0, 'VK_OEM_2'],
Equal: ['ó', 'Ó', '¸', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['ő', 'Ő', '÷', '', 0, 'VK_OEM_4'],
BracketRight: ['ú', 'Ú', '×', '', 0, 'VK_OEM_6'],
Backslash: ['ű', 'Ű', '¤', '', 0, 'VK_OEM_5'],
Semicolon: ['é', 'É', '$', '', 0, 'VK_OEM_1'],
Quote: ['á', 'Á', 'ß', '', 0, 'VK_OEM_7'],
Backquote: ['0', '§', '', '', 0, 'VK_0'],
Comma: [',', '?', ';', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '>', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '*', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['í', 'Í', '<', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.Italian-Pro', lang: 'it', localizedName: 'Italian' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'Í', 0],
KeyC: ['c', 'C', '©', 'Á', 0],
KeyD: ['d', 'D', '∂', '˘', 0],
KeyE: ['e', 'E', '€', 'È', 0],
KeyF: ['f', 'F', 'ƒ', '˙', 0],
KeyG: ['g', 'G', '∞', '˚', 0],
KeyH: ['h', 'H', '∆', '¸', 0],
KeyI: ['i', 'I', 'œ', 'Œ', 0],
KeyJ: ['j', 'J', 'ª', '˝', 0],
KeyK: ['k', 'K', 'º', '˛', 0],
KeyL: ['l', 'L', '¬', 'ˇ', 0],
KeyM: ['m', 'M', 'µ', 'Ú', 0],
KeyN: ['n', 'N', '˜', 'Ó', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', '„', '', 0],
KeyR: ['r', 'R', '®', 'Ì', 0],
KeyS: ['s', 'S', 'ß', '¯', 0],
KeyT: ['t', 'T', '™', 'Ò', 0],
KeyU: ['u', 'U', '¨', 'Ù', 4],
KeyV: ['v', 'V', '√', 'É', 0],
KeyW: ['w', 'W', 'Ω', 'À', 0],
KeyX: ['x', 'X', '†', '‡', 0],
KeyY: ['y', 'Y', 'æ', 'Æ', 0],
KeyZ: ['z', 'Z', '∑', ' ', 0],
Digit1: ['1', '!', '«', '»', 0],
Digit2: ['2', '"', '“', '”', 0],
Digit3: ['3', '£', '', '', 0],
Digit4: ['4', '$', '¥', '¢', 0],
Digit5: ['5', '%', '~', '‰', 0],
Digit6: ['6', '&', '', '', 0],
Digit7: ['7', '/', '÷', '', 0],
Digit8: ['8', '(', '´', '', 4],
Digit9: ['9', ')', '`', ' ', 4],
Digit0: ['0', '=', '≠', '≈', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['\'', '?', '¡', '¿', 0],
Equal: ['ì', '^', 'ˆ', '±', 4],
BracketLeft: ['è', 'é', '[', '{', 0],
BracketRight: ['+', '*', ']', '}', 0],
Backslash: ['ù', '§', '¶', '◊', 0],
Semicolon: ['ò', 'ç', '@', 'Ç', 0],
Quote: ['à', '°', '#', '∞', 0],
Backquote: ['<', '>', '≤', '≥', 0],
Comma: [',', ';', '…', ' ', 0],
Period: ['.', ':', '•', '·', 0],
Slash: ['-', '_', '', '—', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', '.', ',', '.', 0],
IntlBackslash: ['\\', '|', '`', 'ı', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000410', id: '', text: 'Italian' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '', '', 0, 'VK_2'],
Digit3: ['3', '£', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '', '', 0, 'VK_7'],
Digit8: ['8', '(', '', '', 0, 'VK_8'],
Digit9: ['9', ')', '', '', 0, 'VK_9'],
Digit0: ['0', '=', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['\'', '?', '', '', 0, 'VK_OEM_4'],
Equal: ['ì', '^', '', '', 0, 'VK_OEM_6'],
BracketLeft: ['è', 'é', '[', '{', 0, 'VK_OEM_1'],
BracketRight: ['+', '*', ']', '}', 0, 'VK_OEM_PLUS'],
Backslash: ['ù', '§', '', '', 0, 'VK_OEM_2'],
Semicolon: ['ò', 'ç', '@', '', 0, 'VK_OEM_3'],
Quote: ['à', '°', '#', '', 0, 'VK_OEM_7'],
Backquote: ['\\', '|', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.google.inputmethod.Japanese.Roman', lang: 'en', localizedName: 'Alphanumeric (Google)' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', '¯', '̄', 4],
KeyB: ['b', 'B', '˘', '̆', 4],
KeyC: ['c', 'C', '¸', '̧', 4],
KeyD: ['d', 'D', 'ð', 'Ð', 0],
KeyE: ['e', 'E', '´', '́', 4],
KeyF: ['f', 'F', 'ƒ', '', 0],
KeyG: ['g', 'G', '©', '‸', 8],
KeyH: ['h', 'H', 'ˍ', '̱', 4],
KeyI: ['i', 'I', 'ʼ', '̛', 4],
KeyJ: ['j', 'J', '˝', '̋', 4],
KeyK: ['k', 'K', '˚', '̊', 4],
KeyL: ['l', 'L', '-', '̵', 4],
KeyM: ['m', 'M', '˛', '̨', 4],
KeyN: ['n', 'N', '˜', '̃', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', ',', '̦', 4],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', '', 0],
KeyT: ['t', 'T', 'þ', 'Þ', 0],
KeyU: ['u', 'U', '¨', '̈', 4],
KeyV: ['v', 'V', 'ˇ', '̌', 4],
KeyW: ['w', 'W', '˙', '̇', 4],
KeyX: ['x', 'X', '.', '̣', 4],
KeyY: ['y', 'Y', '¥', '', 0],
KeyZ: ['z', 'Z', 'ˀ', '̉', 4],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '§', '†', 0],
Digit6: ['6', '^', 'ˆ', '̂', 4],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', '№', 8],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['`', '~', '`', '̀', 4],
Comma: [',', '<', '≤', '„', 0],
Period: ['.', '>', '≥', 'ʔ', 8],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.inputmethod.Kotoeri.Japanese', lang: 'ja', localizedName: 'Hiragana' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '´', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', '˝', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', 'ˆ', 'ˆ', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', 'Â', 0],
KeyN: ['n', 'N', '˜', '˜', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'ˇ', 0],
KeyU: ['u', 'U', '¨', '¨', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', '˛', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', '¸', 0],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', '^', '§', 'fl', 0],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['`', '~', '`', '`', 4],
Comma: [',', '<', '≤', '¯', 0],
Period: ['.', '>', '≥', '˘', 0],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.inputmethod.Korean.2SetKorean', lang: 'ko', localizedName: '2-Set Korean' },
secondaryLayouts: [],
mapping: {
KeyA: ['ㅁ', 'ㅁ', 'a', 'A', 0],
KeyB: ['ㅠ', 'ㅠ', 'b', 'B', 0],
KeyC: ['ㅊ', 'ㅊ', 'c', 'C', 0],
KeyD: ['ㅇ', 'ㅇ', 'd', 'D', 0],
KeyE: ['ㄷ', 'ㄸ', 'e', 'E', 0],
KeyF: ['ㄹ', 'ㄹ', 'f', 'F', 0],
KeyG: ['ㅎ', 'ㅎ', 'g', 'G', 0],
KeyH: ['ㅗ', 'ㅗ', 'h', 'H', 0],
KeyI: ['ㅑ', 'ㅑ', 'i', 'I', 0],
KeyJ: ['ㅓ', 'ㅓ', 'j', 'J', 0],
KeyK: ['ㅏ', 'ㅏ', 'k', 'K', 0],
KeyL: ['ㅣ', 'ㅣ', 'l', 'L', 0],
KeyM: ['ㅡ', 'ㅡ', 'm', 'M', 0],
KeyN: ['ㅜ', 'ㅜ', 'n', 'N', 0],
KeyO: ['ㅐ', 'ㅒ', 'o', 'O', 0],
KeyP: ['ㅔ', 'ㅖ', 'p', 'P', 0],
KeyQ: ['ㅂ', 'ㅃ', 'q', 'Q', 0],
KeyR: ['ㄱ', 'ㄲ', 'r', 'R', 0],
KeyS: ['ㄴ', 'ㄴ', 's', 'S', 0],
KeyT: ['ㅅ', 'ㅆ', 't', 'T', 0],
KeyU: ['ㅕ', 'ㅕ', 'u', 'U', 0],
KeyV: ['ㅍ', 'ㅍ', 'v', 'V', 0],
KeyW: ['ㅈ', 'ㅉ', 'w', 'W', 0],
KeyX: ['ㅌ', 'ㅌ', 'x', 'X', 0],
KeyY: ['ㅛ', 'ㅛ', 'y', 'Y', 0],
KeyZ: ['ㅋ', 'ㅋ', 'z', 'Z', 0],
Digit1: ['1', '!', '1', '!', 0],
Digit2: ['2', '@', '2', '@', 0],
Digit3: ['3', '#', '3', '#', 0],
Digit4: ['4', '$', '4', '$', 0],
Digit5: ['5', '%', '5', '%', 0],
Digit6: ['6', '^', '6', '^', 0],
Digit7: ['7', '&', '7', '&', 0],
Digit8: ['8', '*', '8', '*', 0],
Digit9: ['9', '(', '9', '(', 0],
Digit0: ['0', ')', '0', ')', 0],
Enter: [],
Escape: ['', '', '', '', 0],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '-', '_', 0],
Equal: ['=', '+', '=', '+', 0],
BracketLeft: ['[', '{', '[', '{', 0],
BracketRight: [']', '}', ']', '}', 0],
Backslash: ['\\', '|', '\\', '|', 0],
Semicolon: [';', ':', ';', ':', 0],
Quote: ['\'', '"', '\'', '"', 0],
Backquote: ['₩', '~', '`', '~', 0],
Comma: [',', '<', ',', '<', 0],
Period: ['.', '>', '.', '>', 0],
Slash: ['/', '?', '/', '?', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,22 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en.darwin'; // 15%
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/zh-hans.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/es.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/jp-roman.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/de.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-ext.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/fr.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/jp.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/pl.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/it.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/ru.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/pt.darwin';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/ko.darwin';
export { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';

View File

@@ -0,0 +1,12 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en.linux';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/es.linux';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/de.linux';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/fr.linux';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/ru.linux';
export { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';

View File

@@ -0,0 +1,29 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en.win'; // 40%
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/es-latin.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-in.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/de.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-uk.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/fr.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/pt-br.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/es.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-intl.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/ru.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/pl.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/it.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/sv.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/tr.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/pt.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/dk.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/no.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/thai.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/hu.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/de-swiss.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en-belgian.win';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/cz.win';
export { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000414', id: '', text: 'Norwegian' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', 'µ', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '#', '£', '', 0, 'VK_3'],
Digit4: ['4', '¤', '$', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['+', '?', '', '', 0, 'VK_OEM_PLUS'],
Equal: ['\\', '`', '´', '', 0, 'VK_OEM_4'],
BracketLeft: ['å', 'Å', '', '', 0, 'VK_OEM_6'],
BracketRight: ['¨', '^', '~', '', 0, 'VK_OEM_1'],
Backslash: ['\'', '*', '', '', 0, 'VK_OEM_2'],
Semicolon: ['ø', 'Ø', '', '', 0, 'VK_OEM_3'],
Quote: ['æ', 'Æ', '', '', 0, 'VK_OEM_7'],
Backquote: ['|', '§', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.PolishPro', lang: 'pl', localizedName: 'Polish - Pro' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'ą', 'Ą', 0],
KeyB: ['b', 'B', 'ļ', 'ű', 0],
KeyC: ['c', 'C', 'ć', 'Ć', 0],
KeyD: ['d', 'D', '∂', 'Ž', 0],
KeyE: ['e', 'E', 'ę', 'Ę', 0],
KeyF: ['f', 'F', 'ń', 'ž', 0],
KeyG: ['g', 'G', '©', 'Ū', 0],
KeyH: ['h', 'H', 'ķ', 'Ó', 0],
KeyI: ['i', 'I', '^', 'ť', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', 'Ż', 'ū', 0],
KeyL: ['l', 'L', 'ł', 'Ł', 0],
KeyM: ['m', 'M', 'Ķ', 'ų', 0],
KeyN: ['n', 'N', 'ń', 'Ń', 0],
KeyO: ['o', 'O', 'ó', 'Ó', 0],
KeyP: ['p', 'P', 'Ļ', 'ł', 0],
KeyQ: ['q', 'Q', 'Ō', 'ő', 0],
KeyR: ['r', 'R', '®', '£', 0],
KeyS: ['s', 'S', 'ś', 'Ś', 0],
KeyT: ['t', 'T', '†', 'ś', 0],
KeyU: ['u', 'U', '¨', 'Ť', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', 'ź', 'Ź', 0],
KeyY: ['y', 'Y', 'ī', 'Á', 0],
KeyZ: ['z', 'Z', 'ż', 'Ż', 0],
Digit1: ['1', '!', 'Ń', 'ŕ', 0],
Digit2: ['2', '@', '™', 'Ř', 0],
Digit3: ['3', '#', '€', '', 0],
Digit4: ['4', '$', 'ß', '', 0],
Digit5: ['5', '%', 'į', 'ř', 0],
Digit6: ['6', '^', '§', 'Ŗ', 0],
Digit7: ['7', '&', '¶', 'ŗ', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'Ľ', 'Š', 0],
Digit0: ['0', ')', 'ľ', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', 'Ī', 0],
BracketLeft: ['[', '{', '„', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'ĺ', 'ģ', 0],
Backquote: ['`', '~', '`', 'Ŕ', 4],
Comma: [',', '<', '≤', 'Ý', 0],
Period: ['.', '>', '≥', 'ý', 0],
Slash: ['/', '?', '÷', 'ņ', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '£', '¬', '¬', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000415', id: '', text: 'Polish (Programmers)' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'ą', 'Ą', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', 'ć', 'Ć', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', 'ę', 'Ę', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', 'ł', 'Ł', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', 'ń', 'Ń', 0, 'VK_N'],
KeyO: ['o', 'O', 'ó', 'Ó', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', 'ś', 'Ś', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '€', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', 'ź', 'Ź', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', 'ż', 'Ż', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '@', '', '', 0, 'VK_2'],
Digit3: ['3', '#', '', '', 0, 'VK_3'],
Digit4: ['4', '$', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', '^', '', '', 0, 'VK_6'],
Digit7: ['7', '&', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['[', '{', '', '', 0, 'VK_OEM_4'],
BracketRight: [']', '}', '', '', 0, 'VK_OEM_6'],
Backslash: ['\\', '|', '', '', 0, 'VK_OEM_5'],
Semicolon: [';', ':', '', '', 0, 'VK_OEM_1'],
Quote: ['\'', '"', '', '', 0, 'VK_OEM_7'],
Backquote: ['`', '~', '', '', 0, 'VK_OEM_3'],
Comma: [',', '<', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['/', '?', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000416', id: '', text: 'Portuguese (Brazilian ABNT)' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '₢', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '°', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '/', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '?', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '¹', '', 0, 'VK_1'],
Digit2: ['2', '@', '²', '', 0, 'VK_2'],
Digit3: ['3', '#', '³', '', 0, 'VK_3'],
Digit4: ['4', '$', '£', '', 0, 'VK_4'],
Digit5: ['5', '%', '¢', '', 0, 'VK_5'],
Digit6: ['6', '¨', '¬', '', 0, 'VK_6'],
Digit7: ['7', '&', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '§', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['´', '`', '', '', 0, 'VK_OEM_4'],
BracketRight: ['[', '{', 'ª', '', 0, 'VK_OEM_6'],
Backslash: [']', '}', 'º', '', 0, 'VK_OEM_5'],
Semicolon: ['ç', 'Ç', '', '', 0, 'VK_OEM_1'],
Quote: ['~', '^', '', '', 0, 'VK_OEM_7'],
Backquote: ['\'', '"', '', '', 0, 'VK_OEM_3'],
Comma: [',', '<', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', '>', '', '', 0, 'VK_OEM_PERIOD'],
Slash: [';', ':', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '|', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: ['.', '.', '', '', 0, 'VK_ABNT_C2'],
IntlRo: ['/', '?', '°', '', 0, 'VK_ABNT_C1'],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.Brazilian-Pro', lang: 'pt' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '´', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', '˝', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', 'ˆ', 'ˆ', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', 'Â', 0],
KeyN: ['n', 'N', '˜', '˜', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'ˇ', 0],
KeyU: ['u', 'U', '¨', '¨', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', '˛', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', '¸', 0],
Digit1: ['1', '!', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '$', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', 'ˆ', '§', 'fl', 2],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '(', 'ª', '·', 0],
Digit0: ['0', ')', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['[', '{', '“', '”', 0],
BracketRight: [']', '}', '', '', 0],
Backslash: ['\\', '|', '«', '»', 0],
Semicolon: [';', ':', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 3],
Backquote: ['`', '˜', '`', '`', 7],
Comma: [',', '<', '≤', '¯', 0],
Period: ['.', '>', '≥', '˘', 0],
Slash: ['/', '?', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,170 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000816', id: '', text: 'Portuguese' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '#', '£', '', 0, 'VK_3'],
Digit4: ['4', '$', '§', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['\'', '?', '', '', 0, 'VK_OEM_4'],
Equal: ['«', '»', '', '', 0, 'VK_OEM_6'],
BracketLeft: ['+', '*', '¨', '', 0, 'VK_OEM_PLUS'],
BracketRight: ['´', '`', ']', '', 0, 'VK_OEM_1'],
Backslash: ['~', '^', '', '', 0, 'VK_OEM_2'],
Semicolon: ['ç', 'Ç', '', '', 0, 'VK_OEM_3'],
Quote: ['º', 'ª', '', '', 0, 'VK_OEM_7'],
Backquote: ['\\', '|', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.Russian', lang: 'ru', localizedName: 'Russian' },
secondaryLayouts: [],
mapping: {
KeyA: ['ф', 'Ф', 'ƒ', 'ƒ', 0],
KeyB: ['и', 'И', 'и', 'И', 0],
KeyC: ['с', 'С', '≠', '≠', 0],
KeyD: ['в', 'В', 'ћ', 'Ћ', 0],
KeyE: ['у', 'У', 'ќ', 'Ќ', 0],
KeyF: ['а', 'А', '÷', '÷', 0],
KeyG: ['п', 'П', '©', '©', 0],
KeyH: ['р', 'Р', '₽', '₽', 0],
KeyI: ['ш', 'Ш', 'ѕ', 'Ѕ', 0],
KeyJ: ['о', 'О', '°', '•', 0],
KeyK: ['л', 'Л', 'љ', 'Љ', 0],
KeyL: ['д', 'Д', '∆', '∆', 0],
KeyM: ['ь', 'Ь', '~', '~', 0],
KeyN: ['т', 'Т', '™', '™', 0],
KeyO: ['щ', 'Щ', 'ў', 'Ў', 0],
KeyP: ['з', 'З', '', '', 0],
KeyQ: ['й', 'Й', 'ј', 'Ј', 0],
KeyR: ['к', 'К', '®', '®', 0],
KeyS: ['ы', 'Ы', 'ы', 'Ы', 0],
KeyT: ['е', 'Е', '†', '†', 0],
KeyU: ['г', 'Г', 'ѓ', 'Ѓ', 0],
KeyV: ['м', 'М', 'µ', 'µ', 0],
KeyW: ['ц', 'Ц', 'џ', 'Џ', 0],
KeyX: ['ч', 'Ч', '≈', '≈', 0],
KeyY: ['н', 'Н', 'њ', 'Њ', 0],
KeyZ: ['я', 'Я', 'ђ', 'Ђ', 0],
Digit1: ['1', '!', '!', '|', 0],
Digit2: ['2', '"', '@', '"', 0],
Digit3: ['3', '№', '#', '£', 0],
Digit4: ['4', '%', '$', '€', 0],
Digit5: ['5', ':', '%', '∞', 0],
Digit6: ['6', ',', '^', '¬', 0],
Digit7: ['7', '.', '&', '¶', 0],
Digit8: ['8', ';', '*', '√', 0],
Digit9: ['9', '(', '{', '\'', 0],
Digit0: ['0', ')', '}', '`', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '', '—', 0],
Equal: ['=', '+', '»', '«', 0],
BracketLeft: ['х', 'Х', '“', '”', 0],
BracketRight: ['ъ', 'Ъ', 'ъ', 'Ъ', 0],
Backslash: ['ё', 'Ё', 'ё', 'Ё', 0],
Semicolon: ['ж', 'Ж', '…', '…', 0],
Quote: ['э', 'Э', 'э', 'Э', 0],
Backquote: [']', '[', ']', '[', 0],
Comma: ['б', 'Б', '≤', '<', 0],
Period: ['ю', 'Ю', '≥', '>', 0],
Slash: ['/', '?', '“', '„', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', '.', ',', ',', 0],
IntlBackslash: ['>', '<', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,187 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { model: 'pc104', layout: 'ru', variant: ',', options: '', rules: 'base' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['ф', 'Ф', 'ф', 'Ф', 0],
KeyB: ['и', 'И', 'и', 'И', 0],
KeyC: ['с', 'С', 'с', 'С', 0],
KeyD: ['в', 'В', 'в', 'В', 0],
KeyE: ['у', 'У', 'у', 'У', 0],
KeyF: ['а', 'А', 'а', 'А', 0],
KeyG: ['п', 'П', 'п', 'П', 0],
KeyH: ['р', 'Р', 'р', 'Р', 0],
KeyI: ['ш', 'Ш', 'ш', 'Ш', 0],
KeyJ: ['о', 'О', 'о', 'О', 0],
KeyK: ['л', 'Л', 'л', 'Л', 0],
KeyL: ['д', 'Д', 'д', 'Д', 0],
KeyM: ['ь', 'Ь', 'ь', 'Ь', 0],
KeyN: ['т', 'Т', 'т', 'Т', 0],
KeyO: ['щ', 'Щ', 'щ', 'Щ', 0],
KeyP: ['з', 'З', 'з', 'З', 0],
KeyQ: ['й', 'Й', 'й', 'Й', 0],
KeyR: ['к', 'К', 'к', 'К', 0],
KeyS: ['ы', 'Ы', 'ы', 'Ы', 0],
KeyT: ['е', 'Е', 'е', 'Е', 0],
KeyU: ['г', 'Г', 'г', 'Г', 0],
KeyV: ['м', 'М', 'м', 'М', 0],
KeyW: ['ц', 'Ц', 'ц', 'Ц', 0],
KeyX: ['ч', 'Ч', 'ч', 'Ч', 0],
KeyY: ['н', 'Н', 'н', 'Н', 0],
KeyZ: ['я', 'Я', 'я', 'Я', 0],
Digit1: ['1', '!', '1', '!', 0],
Digit2: ['2', '"', '2', '"', 0],
Digit3: ['3', '№', '3', '№', 0],
Digit4: ['4', ';', '4', ';', 0],
Digit5: ['5', '%', '5', '%', 0],
Digit6: ['6', ':', '6', ':', 0],
Digit7: ['7', '?', '7', '?', 0],
Digit8: ['8', '*', '₽', '', 0],
Digit9: ['9', '(', '9', '(', 0],
Digit0: ['0', ')', '0', ')', 0],
Enter: ['\r', '\r', '\r', '\r', 0],
Escape: ['\u001b', '\u001b', '\u001b', '\u001b', 0],
Backspace: ['\b', '\b', '\b', '\b', 0],
Tab: ['\t', '', '\t', '', 0],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '_', '-', '_', 0],
Equal: ['=', '+', '=', '+', 0],
BracketLeft: ['х', 'Х', 'х', 'Х', 0],
BracketRight: ['ъ', 'Ъ', 'ъ', 'Ъ', 0],
Backslash: ['\\', '/', '\\', '/', 0],
Semicolon: ['ж', 'Ж', 'ж', 'Ж', 0],
Quote: ['э', 'Э', 'э', 'Э', 0],
Backquote: ['ё', 'Ё', 'ё', 'Ё', 0],
Comma: ['б', 'Б', 'б', 'Б', 0],
Period: ['ю', 'Ю', 'ю', 'Ю', 0],
Slash: ['.', ',', '.', ',', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: ['', '', '', '', 0],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: ['/', '/', '/', '/', 0],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: [],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['', '1', '', '1', 0],
Numpad2: ['', '2', '', '2', 0],
Numpad3: ['', '3', '', '3', 0],
Numpad4: ['', '4', '', '4', 0],
Numpad5: ['', '5', '', '5', 0],
Numpad6: ['', '6', '', '6', 0],
Numpad7: ['', '7', '', '7', 0],
Numpad8: ['', '8', '', '8', 0],
Numpad9: ['', '9', '', '9', 0],
Numpad0: ['', '0', '', '0', 0],
NumpadDecimal: ['', ',', '', ',', 0],
IntlBackslash: ['/', '|', '|', '¦', 0],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Open: [],
Help: [],
Select: [],
Again: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
Find: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
Lang5: [],
NumpadParenLeft: [],
NumpadParenRight: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: ['\r', '\r', '\r', '\r', 0],
MetaRight: ['.', '.', '.', '.', 0],
BrightnessUp: [],
BrightnessDown: [],
MediaPlay: [],
MediaRecord: [],
MediaFastForward: [],
MediaRewind: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
SelectTask: [],
LaunchScreenSaver: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: [],
MailReply: [],
MailForward: [],
MailSend: []
}
});

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '00000419', id: '', text: 'Russian' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['ф', 'Ф', '', '', 0, 'VK_A'],
KeyB: ['и', 'И', '', '', 0, 'VK_B'],
KeyC: ['с', 'С', '', '', 0, 'VK_C'],
KeyD: ['в', 'В', '', '', 0, 'VK_D'],
KeyE: ['у', 'У', '', '', 0, 'VK_E'],
KeyF: ['а', 'А', '', '', 0, 'VK_F'],
KeyG: ['п', 'П', '', '', 0, 'VK_G'],
KeyH: ['р', 'Р', '', '', 0, 'VK_H'],
KeyI: ['ш', 'Ш', '', '', 0, 'VK_I'],
KeyJ: ['о', 'О', '', '', 0, 'VK_J'],
KeyK: ['л', 'Л', '', '', 0, 'VK_K'],
KeyL: ['д', 'Д', '', '', 0, 'VK_L'],
KeyM: ['ь', 'Ь', '', '', 0, 'VK_M'],
KeyN: ['т', 'Т', '', '', 0, 'VK_N'],
KeyO: ['щ', 'Щ', '', '', 0, 'VK_O'],
KeyP: ['з', 'З', '', '', 0, 'VK_P'],
KeyQ: ['й', 'Й', '', '', 0, 'VK_Q'],
KeyR: ['к', 'К', '', '', 0, 'VK_R'],
KeyS: ['ы', 'Ы', '', '', 0, 'VK_S'],
KeyT: ['е', 'Е', '', '', 0, 'VK_T'],
KeyU: ['г', 'Г', '', '', 0, 'VK_U'],
KeyV: ['м', 'М', '', '', 0, 'VK_V'],
KeyW: ['ц', 'Ц', '', '', 0, 'VK_W'],
KeyX: ['ч', 'Ч', '', '', 0, 'VK_X'],
KeyY: ['н', 'Н', '', '', 0, 'VK_Y'],
KeyZ: ['я', 'Я', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '', '', 0, 'VK_2'],
Digit3: ['3', '№', '', '', 0, 'VK_3'],
Digit4: ['4', ';', '', '', 0, 'VK_4'],
Digit5: ['5', '%', '', '', 0, 'VK_5'],
Digit6: ['6', ':', '', '', 0, 'VK_6'],
Digit7: ['7', '?', '', '', 0, 'VK_7'],
Digit8: ['8', '*', '₽', '', 0, 'VK_8'],
Digit9: ['9', '(', '', '', 0, 'VK_9'],
Digit0: ['0', ')', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['=', '+', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['х', 'Х', '', '', 0, 'VK_OEM_4'],
BracketRight: ['ъ', 'Ъ', '', '', 0, 'VK_OEM_6'],
Backslash: ['\\', '/', '', '', 0, 'VK_OEM_5'],
Semicolon: ['ж', 'Ж', '', '', 0, 'VK_OEM_1'],
Quote: ['э', 'Э', '', '', 0, 'VK_OEM_7'],
Backquote: ['ё', 'Ё', '', '', 0, 'VK_OEM_3'],
Comma: ['б', 'Б', '', '', 0, 'VK_OEM_COMMA'],
Period: ['ю', 'Ю', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['.', ',', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['\\', '/', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,132 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.keylayout.Swedish-Pro', lang: 'sv', localizedName: 'Swedish - Pro' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', '', '◊', 0],
KeyB: ['b', 'B', '', '»', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', '∆', 0],
KeyE: ['e', 'E', 'é', 'É', 0],
KeyF: ['f', 'F', 'ƒ', '∫', 0],
KeyG: ['g', 'G', '¸', '¯', 0],
KeyH: ['h', 'H', '˛', '˘', 0],
KeyI: ['i', 'I', 'ı', 'ˆ', 0],
KeyJ: ['j', 'J', '√', '¬', 0],
KeyK: ['k', 'K', 'ª', 'º', 0],
KeyL: ['l', 'L', 'fi', 'fl', 0],
KeyM: ['m', 'M', '', '”', 0],
KeyN: ['n', 'N', '', '“', 0],
KeyO: ['o', 'O', 'œ', 'Œ', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', '•', '°', 0],
KeyR: ['r', 'R', '®', '√', 0],
KeyS: ['s', 'S', 'ß', '∑', 0],
KeyT: ['t', 'T', '†', '‡', 0],
KeyU: ['u', 'U', 'ü', 'Ü', 0],
KeyV: ['v', 'V', '', '«', 0],
KeyW: ['w', 'W', 'Ω', '˝', 0],
KeyX: ['x', 'X', '≈', 'ˇ', 0],
KeyY: ['y', 'Y', 'µ', '˜', 0],
KeyZ: ['z', 'Z', '÷', '', 0],
Digit1: ['1', '!', '©', '¡', 0],
Digit2: ['2', '"', '@', '”', 0],
Digit3: ['3', '#', '£', '¥', 0],
Digit4: ['4', '€', '$', '¢', 0],
Digit5: ['5', '%', '∞', '‰', 0],
Digit6: ['6', '&', '§', '¶', 0],
Digit7: ['7', '/', '|', '\\', 0],
Digit8: ['8', '(', '[', '{', 0],
Digit9: ['9', ')', ']', '}', 0],
Digit0: ['0', '=', '≈', '≠', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['+', '?', '±', '¿', 0],
Equal: ['´', '`', '´', '`', 3],
BracketLeft: ['å', 'Å', '˙', '˚', 0],
BracketRight: ['¨', '^', '~', '^', 7],
Backslash: ['\'', '*', '™', '', 0],
Semicolon: ['ö', 'Ö', 'ø', 'Ø', 0],
Quote: ['ä', 'Ä', 'æ', 'Æ', 0],
Backquote: ['<', '>', '≤', '≥', 0],
Comma: [',', ';', '', '„', 0],
Period: ['.', ':', '…', '·', 0],
Slash: ['-', '_', '', '—', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: [',', '.', ',', '.', 0],
IntlBackslash: ['§', '°', '¶', '•', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,171 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000041D', id: '', text: 'Swedish' },
secondaryLayouts: [
{ name: '0000040B', id: '', text: 'Finnish' }
],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', '', '', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['i', 'I', '', '', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', 'µ', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', '', '', 0, 'VK_S'],
KeyT: ['t', 'T', '', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '', '', 0, 'VK_1'],
Digit2: ['2', '"', '@', '', 0, 'VK_2'],
Digit3: ['3', '#', '£', '', 0, 'VK_3'],
Digit4: ['4', '¤', '$', '', 0, 'VK_4'],
Digit5: ['5', '%', '€', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['+', '?', '\\', '', 0, 'VK_OEM_PLUS'],
Equal: ['´', '`', '', '', 0, 'VK_OEM_4'],
BracketLeft: ['å', 'Å', '', '', 0, 'VK_OEM_6'],
BracketRight: ['¨', '^', '~', '', 0, 'VK_OEM_1'],
Backslash: ['\'', '*', '', '', 0, 'VK_OEM_2'],
Semicolon: ['ö', 'Ö', '', '', 0, 'VK_OEM_3'],
Quote: ['ä', 'Ä', '', '', 0, 'VK_OEM_7'],
Backquote: ['§', '½', '', '', 0, 'VK_OEM_5'],
Comma: [',', ';', '', '', 0, 'VK_OEM_COMMA'],
Period: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['-', '_', '', '', 0, 'VK_OEM_MINUS'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '|', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,168 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000041E', id: '', text: 'Thai Kedmanee' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['ฟ', 'ฤ', '', '', 0, 'VK_A'],
KeyB: ['ิ', 'ฺ', '', '', 0, 'VK_B'],
KeyC: ['แ', 'ฉ', '', '', 0, 'VK_C'],
KeyD: ['ก', 'ฏ', '', '', 0, 'VK_D'],
KeyE: ['ำ', 'ฎ', '', '', 0, 'VK_E'],
KeyF: ['ด', 'โ', '', '', 0, 'VK_F'],
KeyG: ['เ', 'ฌ', '', '', 0, 'VK_G'],
KeyH: ['้', '็', '', '', 0, 'VK_H'],
KeyI: ['ร', 'ณ', '', '', 0, 'VK_I'],
KeyJ: ['่', '๋', '', '', 0, 'VK_J'],
KeyK: ['า', 'ษ', '', '', 0, 'VK_K'],
KeyL: ['ส', 'ศ', '', '', 0, 'VK_L'],
KeyM: ['ท', '?', '', '', 0, 'VK_M'],
KeyN: ['ื', '์', '', '', 0, 'VK_N'],
KeyO: ['น', 'ฯ', '', '', 0, 'VK_O'],
KeyP: ['ย', 'ญ', '', '', 0, 'VK_P'],
KeyQ: ['ๆ', '', '', '', 0, 'VK_Q'],
KeyR: ['พ', 'ฑ', '', '', 0, 'VK_R'],
KeyS: ['ห', 'ฆ', '', '', 0, 'VK_S'],
KeyT: ['ะ', 'ธ', '', '', 0, 'VK_T'],
KeyU: ['ี', '๊', '', '', 0, 'VK_U'],
KeyV: ['อ', 'ฮ', '', '', 0, 'VK_V'],
KeyW: ['ไ', '"', '', '', 0, 'VK_W'],
KeyX: ['ป', ')', '', '', 0, 'VK_X'],
KeyY: ['ั', 'ํ', '', '', 0, 'VK_Y'],
KeyZ: ['ผ', '(', '', '', 0, 'VK_Z'],
Digit1: ['ๅ', '+', '', '', 0, 'VK_1'],
Digit2: ['/', '๑', '', '', 0, 'VK_2'],
Digit3: ['-', '๒', '', '', 0, 'VK_3'],
Digit4: ['ภ', '๓', '', '', 0, 'VK_4'],
Digit5: ['ถ', '๔', '', '', 0, 'VK_5'],
Digit6: ['ุ', 'ู', '', '', 0, 'VK_6'],
Digit7: ['ึ', '฿', '', '', 0, 'VK_7'],
Digit8: ['ค', '๕', '', '', 0, 'VK_8'],
Digit9: ['ต', '๖', '', '', 0, 'VK_9'],
Digit0: ['จ', '๗', '', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['ข', '๘', '', '', 0, 'VK_OEM_MINUS'],
Equal: ['ช', '๙', '', '', 0, 'VK_OEM_PLUS'],
BracketLeft: ['บ', 'ฐ', '', '', 0, 'VK_OEM_4'],
BracketRight: ['ล', ',', '', '', 0, 'VK_OEM_6'],
Backslash: ['ฃ', 'ฅ', '', '', 0, 'VK_OEM_5'],
Semicolon: ['ว', 'ซ', '', '', 0, 'VK_OEM_1'],
Quote: ['ง', '.', '', '', 0, 'VK_OEM_7'],
Backquote: ['_', '%', '', '', 0, 'VK_OEM_3'],
Comma: ['ม', 'ฒ', '', '', 0, 'VK_OEM_COMMA'],
Period: ['ใ', 'ฬ', '', '', 0, 'VK_OEM_PERIOD'],
Slash: ['ฝ', 'ฦ', '', '', 0, 'VK_OEM_2'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['ฃ', 'ฅ', '', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,168 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { name: '0000041F', id: '', text: 'Turkish Q' },
secondaryLayouts: [],
mapping: {
Sleep: [],
WakeUp: [],
KeyA: ['a', 'A', 'æ', 'Æ', 0, 'VK_A'],
KeyB: ['b', 'B', '', '', 0, 'VK_B'],
KeyC: ['c', 'C', '', '', 0, 'VK_C'],
KeyD: ['d', 'D', '', '', 0, 'VK_D'],
KeyE: ['e', 'E', '€', '', 0, 'VK_E'],
KeyF: ['f', 'F', '', '', 0, 'VK_F'],
KeyG: ['g', 'G', '', '', 0, 'VK_G'],
KeyH: ['h', 'H', '', '', 0, 'VK_H'],
KeyI: ['ı', 'I', 'i', 'İ', 0, 'VK_I'],
KeyJ: ['j', 'J', '', '', 0, 'VK_J'],
KeyK: ['k', 'K', '', '', 0, 'VK_K'],
KeyL: ['l', 'L', '', '', 0, 'VK_L'],
KeyM: ['m', 'M', '', '', 0, 'VK_M'],
KeyN: ['n', 'N', '', '', 0, 'VK_N'],
KeyO: ['o', 'O', '', '', 0, 'VK_O'],
KeyP: ['p', 'P', '', '', 0, 'VK_P'],
KeyQ: ['q', 'Q', '@', '', 0, 'VK_Q'],
KeyR: ['r', 'R', '', '', 0, 'VK_R'],
KeyS: ['s', 'S', 'ß', '', 0, 'VK_S'],
KeyT: ['t', 'T', '₺', '', 0, 'VK_T'],
KeyU: ['u', 'U', '', '', 0, 'VK_U'],
KeyV: ['v', 'V', '', '', 0, 'VK_V'],
KeyW: ['w', 'W', '', '', 0, 'VK_W'],
KeyX: ['x', 'X', '', '', 0, 'VK_X'],
KeyY: ['y', 'Y', '', '', 0, 'VK_Y'],
KeyZ: ['z', 'Z', '', '', 0, 'VK_Z'],
Digit1: ['1', '!', '>', '', 0, 'VK_1'],
Digit2: ['2', '\'', '£', '', 0, 'VK_2'],
Digit3: ['3', '^', '#', '', 0, 'VK_3'],
Digit4: ['4', '+', '$', '', 0, 'VK_4'],
Digit5: ['5', '%', '½', '', 0, 'VK_5'],
Digit6: ['6', '&', '', '', 0, 'VK_6'],
Digit7: ['7', '/', '{', '', 0, 'VK_7'],
Digit8: ['8', '(', '[', '', 0, 'VK_8'],
Digit9: ['9', ')', ']', '', 0, 'VK_9'],
Digit0: ['0', '=', '}', '', 0, 'VK_0'],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', '', '', 0, 'VK_SPACE'],
Minus: ['*', '?', '\\', '', 0, 'VK_OEM_8'],
Equal: ['-', '_', '|', '', 0, 'VK_OEM_MINUS'],
BracketLeft: ['ğ', 'Ğ', '¨', '', 0, 'VK_OEM_4'],
BracketRight: ['ü', 'Ü', '~', '', 0, 'VK_OEM_6'],
Backslash: [',', ';', '`', '', 0, 'VK_OEM_COMMA'],
Semicolon: ['ş', 'Ş', '´', '', 0, 'VK_OEM_1'],
Quote: ['i', 'İ', '', '', 0, 'VK_OEM_7'],
Backquote: ['"', 'é', '<', '', 0, 'VK_OEM_3'],
Comma: ['ö', 'Ö', '', '', 0, 'VK_OEM_2'],
Period: ['ç', 'Ç', '', '', 0, 'VK_OEM_5'],
Slash: ['.', ':', '', '', 0, 'VK_OEM_PERIOD'],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
PrintScreen: [],
ScrollLock: [],
Pause: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '', '', 0, 'VK_DIVIDE'],
NumpadMultiply: ['*', '*', '', '', 0, 'VK_MULTIPLY'],
NumpadSubtract: ['-', '-', '', '', 0, 'VK_SUBTRACT'],
NumpadAdd: ['+', '+', '', '', 0, 'VK_ADD'],
NumpadEnter: [],
Numpad1: [],
Numpad2: [],
Numpad3: [],
Numpad4: [],
Numpad5: [],
Numpad6: [],
Numpad7: [],
Numpad8: [],
Numpad9: [],
Numpad0: [],
NumpadDecimal: [],
IntlBackslash: ['<', '>', '|', '', 0, 'VK_OEM_102'],
ContextMenu: [],
Power: [],
NumpadEqual: [],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
F21: [],
F22: [],
F23: [],
F24: [],
Help: [],
Undo: [],
Cut: [],
Copy: [],
Paste: [],
AudioVolumeMute: [],
AudioVolumeUp: [],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
Convert: [],
NonConvert: [],
Lang1: [],
Lang2: [],
Lang3: [],
Lang4: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: [],
MediaTrackNext: [],
MediaTrackPrevious: [],
MediaStop: [],
Eject: [],
MediaPlayPause: [],
MediaSelect: [],
LaunchMail: [],
LaunchApp2: [],
LaunchApp1: [],
BrowserSearch: [],
BrowserHome: [],
BrowserBack: [],
BrowserForward: [],
BrowserStop: [],
BrowserRefresh: [],
BrowserFavorites: []
}
});

View File

@@ -0,0 +1,131 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
KeyboardLayoutContribution.INSTANCE.registerKeyboardLayout({
layout: { id: 'com.apple.inputmethod.SCIM.ITABC', lang: 'zh-Hans', localizedName: '搜狗拼音' },
secondaryLayouts: [],
mapping: {
KeyA: ['a', 'A', 'å', 'Å', 0],
KeyB: ['b', 'B', '∫', 'ı', 0],
KeyC: ['c', 'C', 'ç', 'Ç', 0],
KeyD: ['d', 'D', '∂', 'Î', 0],
KeyE: ['e', 'E', '´', '´', 4],
KeyF: ['f', 'F', 'ƒ', 'Ï', 0],
KeyG: ['g', 'G', '©', '˝', 0],
KeyH: ['h', 'H', '˙', 'Ó', 0],
KeyI: ['i', 'I', 'ˆ', 'ˆ', 4],
KeyJ: ['j', 'J', '∆', 'Ô', 0],
KeyK: ['k', 'K', '˚', '', 0],
KeyL: ['l', 'L', '¬', 'Ò', 0],
KeyM: ['m', 'M', 'µ', 'Â', 0],
KeyN: ['n', 'N', '˜', '˜', 4],
KeyO: ['o', 'O', 'ø', 'Ø', 0],
KeyP: ['p', 'P', 'π', '∏', 0],
KeyQ: ['q', 'Q', 'œ', 'Œ', 0],
KeyR: ['r', 'R', '®', '‰', 0],
KeyS: ['s', 'S', 'ß', 'Í', 0],
KeyT: ['t', 'T', '†', 'ˇ', 0],
KeyU: ['u', 'U', '¨', '¨', 4],
KeyV: ['v', 'V', '√', '◊', 0],
KeyW: ['w', 'W', '∑', '„', 0],
KeyX: ['x', 'X', '≈', '˛', 0],
KeyY: ['y', 'Y', '¥', 'Á', 0],
KeyZ: ['z', 'Z', 'Ω', '¸', 0],
Digit1: ['1', '', '¡', '', 0],
Digit2: ['2', '@', '™', '€', 0],
Digit3: ['3', '#', '£', '', 0],
Digit4: ['4', '¥', '¢', '', 0],
Digit5: ['5', '%', '∞', 'fi', 0],
Digit6: ['6', '', '§', 'fl', 0],
Digit7: ['7', '&', '¶', '‡', 0],
Digit8: ['8', '*', '•', '°', 0],
Digit9: ['9', '', 'ª', '·', 0],
Digit0: ['0', '', 'º', '', 0],
Enter: [],
Escape: [],
Backspace: [],
Tab: [],
Space: [' ', ' ', ' ', ' ', 0],
Minus: ['-', '', '', '—', 0],
Equal: ['=', '+', '≠', '±', 0],
BracketLeft: ['【', '「', '“', '”', 0],
BracketRight: ['】', '」', '', '', 0],
Backslash: ['、', '|', '«', '»', 0],
Semicolon: ['', '', '…', 'Ú', 0],
Quote: ['\'', '"', 'æ', 'Æ', 0],
Backquote: ['·', '', '`', '`', 4],
Comma: ['', '《', '≤', '¯', 0],
Period: ['。', '》', '≥', '˘', 0],
Slash: ['/', '', '÷', '¿', 0],
CapsLock: [],
F1: [],
F2: [],
F3: [],
F4: [],
F5: [],
F6: [],
F7: [],
F8: [],
F9: [],
F10: [],
F11: [],
F12: [],
Insert: [],
Home: [],
PageUp: [],
Delete: [],
End: [],
PageDown: [],
ArrowRight: [],
ArrowLeft: [],
ArrowDown: [],
ArrowUp: [],
NumLock: [],
NumpadDivide: ['/', '/', '/', '/', 0],
NumpadMultiply: ['*', '*', '*', '*', 0],
NumpadSubtract: ['-', '-', '-', '-', 0],
NumpadAdd: ['+', '+', '+', '+', 0],
NumpadEnter: [],
Numpad1: ['1', '1', '1', '1', 0],
Numpad2: ['2', '2', '2', '2', 0],
Numpad3: ['3', '3', '3', '3', 0],
Numpad4: ['4', '4', '4', '4', 0],
Numpad5: ['5', '5', '5', '5', 0],
Numpad6: ['6', '6', '6', '6', 0],
Numpad7: ['7', '7', '7', '7', 0],
Numpad8: ['8', '8', '8', '8', 0],
Numpad9: ['9', '9', '9', '9', 0],
Numpad0: ['0', '0', '0', '0', 0],
NumpadDecimal: ['.', '.', '.', '.', 0],
IntlBackslash: ['§', '±', '§', '±', 0],
ContextMenu: [],
NumpadEqual: ['=', '=', '=', '=', 0],
F13: [],
F14: [],
F15: [],
F16: [],
F17: [],
F18: [],
F19: [],
F20: [],
AudioVolumeMute: [],
AudioVolumeUp: ['', '=', '', '=', 0],
AudioVolumeDown: [],
NumpadComma: [],
IntlRo: [],
KanaMode: [],
IntlYen: [],
ControlLeft: [],
ShiftLeft: [],
AltLeft: [],
MetaLeft: [],
ControlRight: [],
ShiftRight: [],
AltRight: [],
MetaRight: []
}
});

View File

@@ -0,0 +1,622 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as nls from 'vs/nls';
import { Emitter, Event } from 'vs/base/common/event';
import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle';
import { IKeymapService, IKeyboardLayoutInfo, IKeyboardMapping, IWindowsKeyboardMapping, KeymapInfo, IRawMixedKeyboardMapping, getKeyboardLayoutId, IKeymapInfo } from 'vs/workbench/services/keybinding/common/keymapInfo';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { DispatchConfig } from 'vs/workbench/services/keybinding/common/dispatchConfig';
import { IKeyboardMapper, CachedKeyboardMapper } from 'vs/workbench/services/keybinding/common/keyboardMapper';
import { OS, OperatingSystem, isMacintosh, isWindows } from 'vs/base/common/platform';
import { WindowsKeyboardMapper } from 'vs/workbench/services/keybinding/common/windowsKeyboardMapper';
import { MacLinuxFallbackKeyboardMapper } from 'vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper';
import { IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding';
import { IMacLinuxKeyboardMapping, MacLinuxKeyboardMapper } from 'vs/workbench/services/keybinding/common/macLinuxKeyboardMapper';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { URI } from 'vs/base/common/uri';
import { IFileService } from 'vs/platform/files/common/files';
import { RunOnceScheduler } from 'vs/base/common/async';
import { parse } from 'vs/base/common/json';
import * as objects from 'vs/base/common/objects';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { Registry } from 'vs/platform/registry/common/platform';
import { Extensions as ConfigExtensions, IConfigurationRegistry, IConfigurationNode } from 'vs/platform/configuration/common/configurationRegistry';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { INavigatorWithKeyboard } from 'vs/workbench/services/keybinding/common/navigatorKeyboard';
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { StorageScope, IStorageService } from 'vs/platform/storage/common/storage';
export class BrowserKeyboardMapperFactoryBase {
// keyboard mapper
protected _initialized: boolean;
protected _keyboardMapper: IKeyboardMapper | null;
private readonly _onDidChangeKeyboardMapper = new Emitter<void>();
public readonly onDidChangeKeyboardMapper: Event<void> = this._onDidChangeKeyboardMapper.event;
// keymap infos
protected _keymapInfos: KeymapInfo[];
protected _mru: KeymapInfo[];
private _activeKeymapInfo: KeymapInfo | null;
get activeKeymap(): KeymapInfo | null {
return this._activeKeymapInfo;
}
get keymapInfos(): KeymapInfo[] {
return this._keymapInfos;
}
get activeKeyboardLayout(): IKeyboardLayoutInfo | null {
if (!this._initialized) {
return null;
}
return this._activeKeymapInfo && this._activeKeymapInfo.layout;
}
get activeKeyMapping(): IKeyboardMapping | null {
if (!this._initialized) {
return null;
}
return this._activeKeymapInfo && this._activeKeymapInfo.mapping;
}
get keyboardLayouts(): IKeyboardLayoutInfo[] {
return this._keymapInfos.map(keymapInfo => keymapInfo.layout);
}
protected constructor(
private _notificationService: INotificationService,
private _storageService: IStorageService,
private _commandService: ICommandService
) {
this._keyboardMapper = null;
this._initialized = false;
this._keymapInfos = [];
this._mru = [];
this._activeKeymapInfo = null;
if ((<INavigatorWithKeyboard>navigator).keyboard && (<INavigatorWithKeyboard>navigator).keyboard.addEventListener) {
(<INavigatorWithKeyboard>navigator).keyboard.addEventListener!('layoutchange', () => {
// Update user keyboard map settings
this._getBrowserKeyMapping().then((mapping: IKeyboardMapping | null) => {
if (this.isKeyMappingActive(mapping)) {
return;
}
this.onKeyboardLayoutChanged();
});
});
}
}
registerKeyboardLayout(layout: KeymapInfo) {
this._keymapInfos.push(layout);
this._mru = this._keymapInfos;
}
removeKeyboardLayout(layout: KeymapInfo): void {
let index = this._mru.indexOf(layout);
this._mru.splice(index, 1);
index = this._keymapInfos.indexOf(layout);
this._keymapInfos.splice(index, 1);
}
getMatchedKeymapInfo(keyMapping: IKeyboardMapping | null): { result: KeymapInfo, score: number } | null {
if (!keyMapping) {
return null;
}
let usStandard = this.getUSStandardLayout();
if (usStandard) {
let maxScore = usStandard.getScore(keyMapping);
if (maxScore === 0) {
return {
result: usStandard,
score: 0
};
}
let result = usStandard;
for (let i = 0; i < this._mru.length; i++) {
let score = this._mru[i].getScore(keyMapping);
if (score > maxScore) {
if (score === 0) {
return {
result: this._mru[i],
score: 0
};
}
maxScore = score;
result = this._mru[i];
}
}
return {
result,
score: maxScore
};
}
for (let i = 0; i < this._mru.length; i++) {
if (this._mru[i].fuzzyEqual(keyMapping)) {
return {
result: this._mru[i],
score: 0
};
}
}
return null;
}
getUSStandardLayout() {
const usStandardLayouts = this._mru.filter(layout => layout.layout.isUSStandard);
if (usStandardLayouts.length) {
return usStandardLayouts[0];
}
return null;
}
isKeyMappingActive(keymap: IKeyboardMapping | null) {
return this._activeKeymapInfo && keymap && this._activeKeymapInfo.fuzzyEqual(keymap);
}
setUSKeyboardLayout() {
this._activeKeymapInfo = this.getUSStandardLayout();
}
setActiveKeyMapping(keymap: IKeyboardMapping | null) {
let matchedKeyboardLayout = this.getMatchedKeymapInfo(keymap);
if (matchedKeyboardLayout) {
let score = matchedKeyboardLayout.score;
if (keymap && score < 0) {
const donotAskUpdateKey = 'missing.keyboardlayout.donotask';
if (this._storageService.getBoolean(donotAskUpdateKey, StorageScope.GLOBAL)) {
return;
}
// the keyboard layout doesn't actually match the key event or the keymap from chromium
this._notificationService.prompt(
Severity.Info,
nls.localize('missing.keyboardlayout', 'Fail to find matching keyboard layout'),
[{
label: nls.localize('keyboardLayoutMissing.configure', "Configure"),
run: () => this._commandService.executeCommand('workbench.action.openKeyboardLayoutPicker')
}, {
label: nls.localize('neverAgain', "Don't Show Again"),
isSecondary: true,
run: () => this._storageService.store(donotAskUpdateKey, true, StorageScope.GLOBAL)
}]
);
return;
}
if (!this._activeKeymapInfo) {
this._activeKeymapInfo = matchedKeyboardLayout.result;
} else if (keymap) {
if (matchedKeyboardLayout.result.getScore(keymap) > this._activeKeymapInfo.getScore(keymap)) {
this._activeKeymapInfo = matchedKeyboardLayout.result;
}
}
}
if (!this._activeKeymapInfo) {
this._activeKeymapInfo = this.getUSStandardLayout();
}
if (!this._activeKeymapInfo) {
return;
}
const index = this._mru.indexOf(this._activeKeymapInfo);
this._mru.splice(index, 1);
this._mru.unshift(this._activeKeymapInfo);
this._setKeyboardData(this._activeKeymapInfo);
}
setActiveKeymapInfo(keymapInfo: KeymapInfo) {
this._activeKeymapInfo = keymapInfo;
const index = this._mru.indexOf(this._activeKeymapInfo);
if (index === 0) {
return;
}
this._mru.splice(index, 1);
this._mru.unshift(this._activeKeymapInfo);
this._setKeyboardData(this._activeKeymapInfo);
}
public onKeyboardLayoutChanged(): void {
this._updateKeyboardLayoutAsync(this._initialized);
}
private _updateKeyboardLayoutAsync(initialized: boolean, keyboardEvent?: IKeyboardEvent) {
if (!initialized) {
return;
}
this._getBrowserKeyMapping(keyboardEvent).then(keyMap => {
// might be false positive
if (this.isKeyMappingActive(keyMap)) {
return;
}
this.setActiveKeyMapping(keyMap);
});
}
public getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper {
if (!this._initialized) {
return new MacLinuxFallbackKeyboardMapper(OS);
}
if (dispatchConfig === DispatchConfig.KeyCode) {
// Forcefully set to use keyCode
return new MacLinuxFallbackKeyboardMapper(OS);
}
return this._keyboardMapper!;
}
public validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): void {
if (!this._initialized) {
return;
}
let isCurrentKeyboard = this._validateCurrentKeyboardMapping(keyboardEvent);
if (isCurrentKeyboard) {
return;
}
this._updateKeyboardLayoutAsync(true, keyboardEvent);
}
public setKeyboardLayout(layoutName: string) {
let matchedLayouts: KeymapInfo[] = this.keymapInfos.filter(keymapInfo => getKeyboardLayoutId(keymapInfo.layout) === layoutName);
if (matchedLayouts.length > 0) {
this.setActiveKeymapInfo(matchedLayouts[0]);
}
}
private _setKeyboardData(keymapInfo: KeymapInfo): void {
this._initialized = true;
this._keyboardMapper = new CachedKeyboardMapper(BrowserKeyboardMapperFactory._createKeyboardMapper(keymapInfo));
this._onDidChangeKeyboardMapper.fire();
}
private static _createKeyboardMapper(keymapInfo: KeymapInfo): IKeyboardMapper {
let rawMapping = keymapInfo.mapping;
const isUSStandard = !!keymapInfo.layout.isUSStandard;
if (OS === OperatingSystem.Windows) {
return new WindowsKeyboardMapper(isUSStandard, <IWindowsKeyboardMapping>rawMapping);
}
if (Object.keys(rawMapping).length === 0) {
// Looks like reading the mappings failed (most likely Mac + Japanese/Chinese keyboard layouts)
return new MacLinuxFallbackKeyboardMapper(OS);
}
return new MacLinuxKeyboardMapper(isUSStandard, <IMacLinuxKeyboardMapping>rawMapping, OS);
}
//#region Browser API
private _validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): boolean {
if (!this._initialized) {
return true;
}
const standardKeyboardEvent = keyboardEvent as StandardKeyboardEvent;
const currentKeymap = this._activeKeymapInfo;
if (!currentKeymap) {
return true;
}
const mapping = currentKeymap.mapping[standardKeyboardEvent.code];
if (!mapping) {
return false;
}
if (mapping.value === '') {
// we don't undetstand
if (keyboardEvent.ctrlKey || keyboardEvent.metaKey) {
setTimeout(() => {
this._getBrowserKeyMapping().then((keymap: IKeyboardMapping) => {
if (this.isKeyMappingActive(keymap)) {
return;
}
this.onKeyboardLayoutChanged();
});
}, 350);
}
return true;
}
const expectedValue = standardKeyboardEvent.altKey && standardKeyboardEvent.shiftKey ? mapping.withShiftAltGr :
standardKeyboardEvent.altKey ? mapping.withAltGr :
standardKeyboardEvent.shiftKey ? mapping.withShift : mapping.value;
const isDead = (standardKeyboardEvent.altKey && standardKeyboardEvent.shiftKey && mapping.withShiftAltGrIsDeadKey) ||
(standardKeyboardEvent.altKey && mapping.withAltGrIsDeadKey) ||
(standardKeyboardEvent.shiftKey && mapping.withShiftIsDeadKey) ||
mapping.valueIsDeadKey;
if (isDead && standardKeyboardEvent.browserEvent.key !== 'Dead') {
return false;
}
// TODO, this assumption is wrong as `browserEvent.key` doesn't necessarily equal expectedValue from real keymap
if (!isDead && standardKeyboardEvent.browserEvent.key !== expectedValue) {
return false;
}
return true;
}
private async _getBrowserKeyMapping(keyboardEvent?: IKeyboardEvent): Promise<IRawMixedKeyboardMapping | null> {
if ((navigator as any).keyboard) {
try {
return (navigator as any).keyboard.getLayoutMap().then((e: any) => {
let ret: IKeyboardMapping = {};
for (let key of e) {
ret[key[0]] = {
'value': key[1],
'withShift': '',
'withAltGr': '',
'withShiftAltGr': ''
};
}
return ret;
// const matchedKeyboardLayout = this.getMatchedKeymapInfo(ret);
// if (matchedKeyboardLayout) {
// return matchedKeyboardLayout.result.mapping;
// }
// return null;
});
} catch {
// getLayoutMap can throw if invoked from a nested browsing context
}
} else if (keyboardEvent && !keyboardEvent.shiftKey && !keyboardEvent.altKey && !keyboardEvent.metaKey && !keyboardEvent.metaKey) {
let ret: IKeyboardMapping = {};
const standardKeyboardEvent = keyboardEvent as StandardKeyboardEvent;
ret[standardKeyboardEvent.browserEvent.code] = {
'value': standardKeyboardEvent.browserEvent.key,
'withShift': '',
'withAltGr': '',
'withShiftAltGr': ''
};
const matchedKeyboardLayout = this.getMatchedKeymapInfo(ret);
if (matchedKeyboardLayout) {
return ret;
}
return null;
}
return null;
}
//#endregion
}
export class BrowserKeyboardMapperFactory extends BrowserKeyboardMapperFactoryBase {
constructor(notificationService: INotificationService, storageService: IStorageService, commandService: ICommandService) {
super(notificationService, storageService, commandService);
const platform = isWindows ? 'win' : isMacintosh ? 'darwin' : 'linux';
import('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.' + platform).then((m) => {
let keymapInfos: IKeymapInfo[] = m.KeyboardLayoutContribution.INSTANCE.layoutInfos;
this._keymapInfos.push(...keymapInfos.map(info => (new KeymapInfo(info.layout, info.secondaryLayouts, info.mapping, info.isUserKeyboardLayout))));
this._mru = this._keymapInfos;
this._initialized = true;
this.onKeyboardLayoutChanged();
});
}
}
class UserKeyboardLayout extends Disposable {
private readonly reloadConfigurationScheduler: RunOnceScheduler;
protected readonly _onDidChange: Emitter<void> = this._register(new Emitter<void>());
readonly onDidChange: Event<void> = this._onDidChange.event;
private _keyboardLayout: KeymapInfo | null;
get keyboardLayout(): KeymapInfo | null { return this._keyboardLayout; }
constructor(
private readonly keyboardLayoutResource: URI,
private readonly fileService: IFileService
) {
super();
this._keyboardLayout = null;
this.reloadConfigurationScheduler = this._register(new RunOnceScheduler(() => this.reload().then(changed => {
if (changed) {
this._onDidChange.fire();
}
}), 50));
this._register(Event.filter(this.fileService.onFileChanges, e => e.contains(this.keyboardLayoutResource))(() => this.reloadConfigurationScheduler.schedule()));
}
async initialize(): Promise<void> {
await this.reload();
}
private async reload(): Promise<boolean> {
const existing = this._keyboardLayout;
try {
const content = await this.fileService.readFile(this.keyboardLayoutResource);
const value = parse(content.value.toString());
const layoutInfo = value.layout;
const mappings = value.rawMapping;
this._keyboardLayout = KeymapInfo.createKeyboardLayoutFromDebugInfo(layoutInfo, mappings, true);
} catch (e) {
this._keyboardLayout = null;
}
return existing ? !objects.equals(existing, this._keyboardLayout) : true;
}
}
class BrowserKeymapService extends Disposable implements IKeymapService {
public _serviceBrand: any;
private readonly _onDidChangeKeyboardMapper = new Emitter<void>();
public readonly onDidChangeKeyboardMapper: Event<void> = this._onDidChangeKeyboardMapper.event;
private _userKeyboardLayout: UserKeyboardLayout;
private readonly layoutChangeListener = this._register(new MutableDisposable());
private readonly _factory: BrowserKeyboardMapperFactory;
constructor(
@IEnvironmentService environmentService: IEnvironmentService,
@IFileService fileService: IFileService,
@INotificationService notificationService: INotificationService,
@IStorageService storageService: IStorageService,
@ICommandService commandService: ICommandService,
@IConfigurationService private configurationService: IConfigurationService,
) {
super();
const keyboardConfig = configurationService.getValue<{ layout: string }>('keyboard');
const layout = keyboardConfig.layout;
this._factory = new BrowserKeyboardMapperFactory(notificationService, storageService, commandService);
this.registerKeyboardListener();
if (layout && layout !== 'autodetect') {
// set keyboard layout
this._factory.setKeyboardLayout(layout);
}
this._register(configurationService.onDidChangeConfiguration(e => {
if (e.affectedKeys.indexOf('keyboard.layout') >= 0) {
const keyboardConfig = configurationService.getValue<{ layout: string }>('keyboard');
const layout = keyboardConfig.layout;
if (layout === 'autodetect') {
this.registerKeyboardListener();
this._factory.onKeyboardLayoutChanged();
} else {
this._factory.setKeyboardLayout(layout);
this.layoutChangeListener.clear();
}
}
}));
this._userKeyboardLayout = new UserKeyboardLayout(environmentService.keyboardLayoutResource, fileService);
this._userKeyboardLayout.initialize().then(() => {
if (this._userKeyboardLayout.keyboardLayout) {
this._factory.registerKeyboardLayout(this._userKeyboardLayout.keyboardLayout);
this.setUserKeyboardLayoutIfMatched();
}
});
this._register(this._userKeyboardLayout.onDidChange(() => {
let userKeyboardLayouts = this._factory.keymapInfos.filter(layout => layout.isUserKeyboardLayout);
if (userKeyboardLayouts.length) {
if (this._userKeyboardLayout.keyboardLayout) {
userKeyboardLayouts[0].update(this._userKeyboardLayout.keyboardLayout);
} else {
this._factory.removeKeyboardLayout(userKeyboardLayouts[0]);
}
} else {
if (this._userKeyboardLayout.keyboardLayout) {
this._factory.registerKeyboardLayout(this._userKeyboardLayout.keyboardLayout);
}
}
this.setUserKeyboardLayoutIfMatched();
}));
}
setUserKeyboardLayoutIfMatched() {
const keyboardConfig = this.configurationService.getValue<{ layout: string }>('keyboard');
const layout = keyboardConfig.layout;
if (layout && this._userKeyboardLayout.keyboardLayout) {
if (getKeyboardLayoutId(this._userKeyboardLayout.keyboardLayout.layout) === layout && this._factory.activeKeymap) {
if (!this._userKeyboardLayout.keyboardLayout.equal(this._factory.activeKeymap)) {
this._factory.setActiveKeymapInfo(this._userKeyboardLayout.keyboardLayout);
}
}
}
}
registerKeyboardListener() {
this.layoutChangeListener.value = this._factory.onDidChangeKeyboardMapper(() => {
this._onDidChangeKeyboardMapper.fire();
});
}
getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper {
return this._factory.getKeyboardMapper(dispatchConfig);
}
public getCurrentKeyboardLayout(): IKeyboardLayoutInfo | null {
return this._factory.activeKeyboardLayout;
}
public getAllKeyboardLayouts(): IKeyboardLayoutInfo[] {
return this._factory.keyboardLayouts;
}
public getRawKeyboardMapping(): IKeyboardMapping | null {
return this._factory.activeKeyMapping;
}
public validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): void {
this._factory.validateCurrentKeyboardMapping(keyboardEvent);
}
}
registerSingleton(IKeymapService, BrowserKeymapService, true);
// Configuration
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigExtensions.Configuration);
const keyboardConfiguration: IConfigurationNode = {
'id': 'keyboard',
'order': 15,
'type': 'object',
'title': nls.localize('keyboardConfigurationTitle', "Keyboard"),
'overridable': true,
'properties': {
'keyboard.layout': {
'type': 'string',
'default': 'autodetect',
'description': nls.localize('keyboard.layout.config', "Control the keyboard layout used in web.")
}
}
};
configurationRegistry.registerConfiguration(keyboardConfiguration);

View File

@@ -0,0 +1,17 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
export const enum DispatchConfig {
Code,
KeyCode
}
export function getDispatchConfig(configurationService: IConfigurationService): DispatchConfig {
const keyboard = configurationService.getValue('keyboard');
const r = (keyboard ? (<any>keyboard).dispatch : null);
return (r === 'keyCode' ? DispatchConfig.KeyCode : DispatchConfig.Code);
}

View File

@@ -44,7 +44,7 @@ export class KeybindingsEditingService extends Disposable implements IKeybinding
public _serviceBrand: any;
private queue: Queue<void>;
private resource: URI = URI.file(this.environmentService.appKeybindingsPath);
private resource: URI = this.environmentService.keybindingsResource;
constructor(
@ITextModelService private readonly textModelResolverService: ITextModelService,
@@ -186,7 +186,7 @@ export class KeybindingsEditingService extends Disposable implements IKeybinding
}
private asObject(key: string, command: string | null, when: string | undefined, negate: boolean): any {
const object = { key };
const object: any = { key };
if (command) {
object['command'] = negate ? `-${command}` : command;
}
@@ -210,7 +210,7 @@ export class KeybindingsEditingService extends Disposable implements IKeybinding
private resolveModelReference(): Promise<IReference<IResolvedTextEditorModel>> {
return this.fileService.exists(this.resource)
.then(exists => {
const EOL = this.configurationService.getValue<{}>('files', { overrideIdentifier: 'json' })['eol'];
const EOL = this.configurationService.getValue<{ eol: string }>('files', { overrideIdentifier: 'json' })['eol'];
const result: Promise<any> = exists ? Promise.resolve(null) : this.textFileService.write(this.resource, this.getEmptyContent(EOL), { encoding: 'utf8' });
return result.then(() => this.textModelResolverService.createModelReference(this.resource));
});

View File

@@ -0,0 +1,342 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Event } from 'vs/base/common/event';
import { isWindows, isLinux } from 'vs/base/common/platform';
import { createDecorator, ServiceIdentifier } from 'vs/platform/instantiation/common/instantiation';
import { DispatchConfig } from 'vs/workbench/services/keybinding/common/dispatchConfig';
import { IKeyboardMapper } from 'vs/workbench/services/keybinding/common/keyboardMapper';
import { IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding';
export interface IWindowsKeyMapping {
vkey: string;
value: string;
withShift: string;
withAltGr: string;
withShiftAltGr: string;
}
export interface IWindowsKeyboardMapping {
[code: string]: IWindowsKeyMapping;
}
export interface ILinuxKeyMapping {
value: string;
withShift: string;
withAltGr: string;
withShiftAltGr: string;
}
export interface ILinuxKeyboardMapping {
[code: string]: ILinuxKeyMapping;
}
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 type IKeyboardMapping = IWindowsKeyboardMapping | ILinuxKeyboardMapping | IMacKeyboardMapping;
/* __GDPR__FRAGMENT__
"IKeyboardLayoutInfo" : {
"name" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"id": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"text": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
export interface IWindowsKeyboardLayoutInfo {
name: string;
id: string;
text: string;
}
/* __GDPR__FRAGMENT__
"IKeyboardLayoutInfo" : {
"model" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"layout": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"variant": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"options": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"rules": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
export interface ILinuxKeyboardLayoutInfo {
model: string;
layout: string;
variant: string;
options: string;
rules: string;
}
/* __GDPR__FRAGMENT__
"IKeyboardLayoutInfo" : {
"id" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"lang": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"localizedName": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
export interface IMacKeyboardLayoutInfo {
id: string;
lang: string;
localizedName?: string;
}
export type IKeyboardLayoutInfo = (IWindowsKeyboardLayoutInfo | ILinuxKeyboardLayoutInfo | IMacKeyboardLayoutInfo) & { isUserKeyboardLayout?: boolean; isUSStandard?: true };
export const IKeymapService = createDecorator<IKeymapService>('keymapService');
export interface IKeymapService {
_serviceBrand: ServiceIdentifier<any>;
onDidChangeKeyboardMapper: Event<void>;
getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper;
getCurrentKeyboardLayout(): IKeyboardLayoutInfo | null;
getAllKeyboardLayouts(): IKeyboardLayoutInfo[];
getRawKeyboardMapping(): IKeyboardMapping | null;
validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): void;
}
export function areKeyboardLayoutsEqual(a: IKeyboardLayoutInfo | null, b: IKeyboardLayoutInfo | null): boolean {
if (!a || !b) {
return false;
}
if ((<IWindowsKeyboardLayoutInfo>a).name && (<IWindowsKeyboardLayoutInfo>b).name && (<IWindowsKeyboardLayoutInfo>a).name === (<IWindowsKeyboardLayoutInfo>b).name) {
return true;
}
if ((<IMacKeyboardLayoutInfo>a).id && (<IMacKeyboardLayoutInfo>b).id && (<IMacKeyboardLayoutInfo>a).id === (<IMacKeyboardLayoutInfo>b).id) {
return true;
}
if ((<ILinuxKeyboardLayoutInfo>a).model &&
(<ILinuxKeyboardLayoutInfo>b).model &&
(<ILinuxKeyboardLayoutInfo>a).model === (<ILinuxKeyboardLayoutInfo>b).model &&
(<ILinuxKeyboardLayoutInfo>a).layout === (<ILinuxKeyboardLayoutInfo>b).layout
) {
return true;
}
return false;
}
export function parseKeyboardLayoutDescription(layout: IKeyboardLayoutInfo | null): { label: string, description: string } {
if (!layout) {
return { label: '', description: '' };
}
if ((<IWindowsKeyboardLayoutInfo>layout).name) {
// windows
let windowsLayout = <IWindowsKeyboardLayoutInfo>layout;
return {
label: windowsLayout.text,
description: ''
};
}
if ((<IMacKeyboardLayoutInfo>layout).id) {
let macLayout = <IMacKeyboardLayoutInfo>layout;
if (macLayout.localizedName) {
return {
label: macLayout.localizedName,
description: ''
};
}
if (/^com\.apple\.keylayout\./.test(macLayout.id)) {
return {
label: macLayout.id.replace(/^com\.apple\.keylayout\./, '').replace(/-/, ' '),
description: ''
};
}
if (/^.*inputmethod\./.test(macLayout.id)) {
return {
label: macLayout.id.replace(/^.*inputmethod\./, '').replace(/[-\.]/, ' '),
description: `Input Method (${macLayout.lang})`
};
}
return {
label: macLayout.lang,
description: ''
};
}
let linuxLayout = <ILinuxKeyboardLayoutInfo>layout;
return {
label: linuxLayout.layout,
description: ''
};
}
export function getKeyboardLayoutId(layout: IKeyboardLayoutInfo): string {
if ((<IWindowsKeyboardLayoutInfo>layout).name) {
return (<IWindowsKeyboardLayoutInfo>layout).name;
}
if ((<IMacKeyboardLayoutInfo>layout).id) {
return (<IMacKeyboardLayoutInfo>layout).id;
}
return (<ILinuxKeyboardLayoutInfo>layout).layout;
}
function deserializeMapping(serializedMapping: ISerializedMapping) {
let mapping = serializedMapping;
let ret: { [key: string]: any } = {};
for (let key in mapping) {
let result: (string | number)[] = mapping[key];
if (result.length) {
let value = result[0];
let withShift = result[1];
let withAltGr = result[2];
let withShiftAltGr = result[3];
let mask = Number(result[4]);
let vkey = result.length === 6 ? result[5] : undefined;
ret[key] = {
'value': value,
'vkey': vkey,
'withShift': withShift,
'withAltGr': withAltGr,
'withShiftAltGr': withShiftAltGr,
'valueIsDeadKey': (mask & 1) > 0,
'withShiftIsDeadKey': (mask & 2) > 0,
'withAltGrIsDeadKey': (mask & 4) > 0,
'withShiftAltGrIsDeadKey': (mask & 8) > 0
};
} else {
ret[key] = {
'value': '',
'valueIsDeadKey': false,
'withShift': '',
'withShiftIsDeadKey': false,
'withAltGr': '',
'withAltGrIsDeadKey': false,
'withShiftAltGr': '',
'withShiftAltGrIsDeadKey': false
};
}
}
return ret;
}
export interface IRawMixedKeyboardMapping {
[key: string]: {
value: string,
withShift: string;
withAltGr: string;
withShiftAltGr: string;
valueIsDeadKey?: boolean;
withShiftIsDeadKey?: boolean;
withAltGrIsDeadKey?: boolean;
withShiftAltGrIsDeadKey?: boolean;
};
}
interface ISerializedMapping {
[key: string]: (string | number)[];
}
export interface IKeymapInfo {
layout: IKeyboardLayoutInfo;
secondaryLayouts: IKeyboardLayoutInfo[];
mapping: ISerializedMapping;
isUserKeyboardLayout?: boolean;
}
export class KeymapInfo {
mapping: IRawMixedKeyboardMapping;
isUserKeyboardLayout: boolean;
constructor(public layout: IKeyboardLayoutInfo, public secondaryLayouts: IKeyboardLayoutInfo[], keyboardMapping: ISerializedMapping, isUserKeyboardLayout?: boolean) {
this.mapping = deserializeMapping(keyboardMapping);
this.isUserKeyboardLayout = !!isUserKeyboardLayout;
this.layout.isUserKeyboardLayout = !!isUserKeyboardLayout;
}
static createKeyboardLayoutFromDebugInfo(layout: IKeyboardLayoutInfo, value: IRawMixedKeyboardMapping, isUserKeyboardLayout?: boolean): KeymapInfo {
let keyboardLayoutInfo = new KeymapInfo(layout, [], {}, true);
keyboardLayoutInfo.mapping = value;
return keyboardLayoutInfo;
}
update(other: KeymapInfo) {
this.layout = other.layout;
this.secondaryLayouts = other.secondaryLayouts;
this.mapping = other.mapping;
this.isUserKeyboardLayout = other.isUserKeyboardLayout;
this.layout.isUserKeyboardLayout = other.isUserKeyboardLayout;
}
getScore(other: IRawMixedKeyboardMapping): number {
let score = 0;
for (let key in other) {
if (isWindows && (key === 'Backslash' || key === 'KeyQ')) {
// keymap from Chromium is probably wrong.
continue;
}
if (isLinux && (key === 'Backspace' || key === 'Escape')) {
// native keymap doesn't align with keyboard event
continue;
}
if (this.mapping[key] === undefined) {
score -= 1;
}
let currentMapping = this.mapping[key];
let otherMapping = other[key];
if (currentMapping.value !== otherMapping.value) {
score -= 1;
}
}
return score;
}
equal(other: KeymapInfo): boolean {
if (this.isUserKeyboardLayout !== other.isUserKeyboardLayout) {
return false;
}
if (getKeyboardLayoutId(this.layout) !== getKeyboardLayoutId(other.layout)) {
return false;
}
return this.fuzzyEqual(other.mapping);
}
fuzzyEqual(other: IRawMixedKeyboardMapping): boolean {
for (let key in other) {
if (isWindows && (key === 'Backslash' || key === 'KeyQ')) {
// keymap from Chromium is probably wrong.
continue;
}
if (this.mapping[key] === undefined) {
return false;
}
let currentMapping = this.mapping[key];
let otherMapping = other[key];
if (currentMapping.value !== otherMapping.value) {
return false;
}
}
return true;
}
}

View File

@@ -0,0 +1,15 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export interface IKeyboard {
getLayoutMap(): Promise<Object>;
lock(keyCodes?: string[]): Promise<void>;
unlock(): void;
addEventListener?(type: string, listener: () => void): void;
}
export type INavigatorWithKeyboard = Navigator & {
keyboard: IKeyboard
};

View File

@@ -0,0 +1,29 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as nls from 'vs/nls';
import { release } from 'os';
import { OS, OperatingSystem } from 'vs/base/common/platform';
import { Registry } from 'vs/platform/registry/common/platform';
import { Extensions as ConfigExtensions, IConfigurationNode, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigExtensions.Configuration);
const keyboardConfiguration: IConfigurationNode = {
'id': 'keyboard',
'order': 15,
'type': 'object',
'title': nls.localize('keyboardConfigurationTitle', "Keyboard"),
'overridable': true,
'properties': {
'keyboard.touchbar.enabled': {
'type': 'boolean',
'default': true,
'description': nls.localize('touchbar.enabled', "Enables the macOS touchbar buttons on the keyboard if available."),
'included': OS === OperatingSystem.Macintosh && parseFloat(release()) >= 16 // Minimum: macOS Sierra (10.12.x = darwin 16.x)
}
}
};
configurationRegistry.registerConfiguration(keyboardConfiguration);

View File

@@ -0,0 +1,169 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as nativeKeymap from 'native-keymap';
import { Disposable } from 'vs/base/common/lifecycle';
import { IKeymapService, IKeyboardLayoutInfo, IKeyboardMapping } from 'vs/workbench/services/keybinding/common/keymapInfo';
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { IKeyboardMapper, CachedKeyboardMapper } from 'vs/workbench/services/keybinding/common/keyboardMapper';
import { Emitter, Event } from 'vs/base/common/event';
import { DispatchConfig } from 'vs/workbench/services/keybinding/common/dispatchConfig';
import { MacLinuxFallbackKeyboardMapper } from 'vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper';
import { OS, OperatingSystem } from 'vs/base/common/platform';
import { WindowsKeyboardMapper, windowsKeyboardMappingEquals } from 'vs/workbench/services/keybinding/common/windowsKeyboardMapper';
import { MacLinuxKeyboardMapper, macLinuxKeyboardMappingEquals, IMacLinuxKeyboardMapping } from 'vs/workbench/services/keybinding/common/macLinuxKeyboardMapper';
import { IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding';
export class KeyboardMapperFactory {
public static readonly INSTANCE = new KeyboardMapperFactory();
private _layoutInfo: nativeKeymap.IKeyboardLayoutInfo | null;
private _rawMapping: nativeKeymap.IKeyboardMapping | null;
private _keyboardMapper: IKeyboardMapper | null;
private _initialized: boolean;
private readonly _onDidChangeKeyboardMapper = new Emitter<void>();
public readonly onDidChangeKeyboardMapper: Event<void> = this._onDidChangeKeyboardMapper.event;
private constructor() {
this._layoutInfo = null;
this._rawMapping = null;
this._keyboardMapper = null;
this._initialized = false;
}
public _onKeyboardLayoutChanged(): void {
if (this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
}
public getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
if (dispatchConfig === DispatchConfig.KeyCode) {
// Forcefully set to use keyCode
return new MacLinuxFallbackKeyboardMapper(OS);
}
return this._keyboardMapper!;
}
public getCurrentKeyboardLayout(): nativeKeymap.IKeyboardLayoutInfo | null {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
return this._layoutInfo;
}
private static _isUSStandard(_kbInfo: nativeKeymap.IKeyboardLayoutInfo): boolean {
if (OS === OperatingSystem.Linux) {
const kbInfo = <nativeKeymap.ILinuxKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.layout === 'us');
}
if (OS === OperatingSystem.Macintosh) {
const kbInfo = <nativeKeymap.IMacKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.id === 'com.apple.keylayout.US');
}
if (OS === OperatingSystem.Windows) {
const kbInfo = <nativeKeymap.IWindowsKeyboardLayoutInfo>_kbInfo;
return (kbInfo && kbInfo.name === '00000409');
}
return false;
}
public getRawKeyboardMapping(): nativeKeymap.IKeyboardMapping | null {
if (!this._initialized) {
this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap());
}
return this._rawMapping;
}
private _setKeyboardData(layoutInfo: nativeKeymap.IKeyboardLayoutInfo, rawMapping: nativeKeymap.IKeyboardMapping): void {
this._layoutInfo = layoutInfo;
if (this._initialized && KeyboardMapperFactory._equals(this._rawMapping, rawMapping)) {
// nothing to do...
return;
}
this._initialized = true;
this._rawMapping = rawMapping;
this._keyboardMapper = new CachedKeyboardMapper(
KeyboardMapperFactory._createKeyboardMapper(this._layoutInfo, this._rawMapping)
);
this._onDidChangeKeyboardMapper.fire();
}
private static _createKeyboardMapper(layoutInfo: nativeKeymap.IKeyboardLayoutInfo, rawMapping: nativeKeymap.IKeyboardMapping): IKeyboardMapper {
const isUSStandard = KeyboardMapperFactory._isUSStandard(layoutInfo);
if (OS === OperatingSystem.Windows) {
return new WindowsKeyboardMapper(isUSStandard, <nativeKeymap.IWindowsKeyboardMapping>rawMapping);
}
if (Object.keys(rawMapping).length === 0) {
// Looks like reading the mappings failed (most likely Mac + Japanese/Chinese keyboard layouts)
return new MacLinuxFallbackKeyboardMapper(OS);
}
if (OS === OperatingSystem.Macintosh) {
const kbInfo = <nativeKeymap.IMacKeyboardLayoutInfo>layoutInfo;
if (kbInfo.id === 'com.apple.keylayout.DVORAK-QWERTYCMD') {
// Use keyCode based dispatching for DVORAK - QWERTY ⌘
return new MacLinuxFallbackKeyboardMapper(OS);
}
}
return new MacLinuxKeyboardMapper(isUSStandard, <IMacLinuxKeyboardMapping>rawMapping, OS);
}
private static _equals(a: nativeKeymap.IKeyboardMapping | null, b: nativeKeymap.IKeyboardMapping | null): boolean {
if (OS === OperatingSystem.Windows) {
return windowsKeyboardMappingEquals(<nativeKeymap.IWindowsKeyboardMapping>a, <nativeKeymap.IWindowsKeyboardMapping>b);
}
return macLinuxKeyboardMappingEquals(<IMacLinuxKeyboardMapping>a, <IMacLinuxKeyboardMapping>b);
}
}
class NativeKeymapService extends Disposable implements IKeymapService {
public _serviceBrand: any;
private readonly _onDidChangeKeyboardMapper = new Emitter<void>();
public readonly onDidChangeKeyboardMapper: Event<void> = this._onDidChangeKeyboardMapper.event;
constructor() {
super();
this._register(KeyboardMapperFactory.INSTANCE.onDidChangeKeyboardMapper(() => {
this._onDidChangeKeyboardMapper.fire();
}));
}
getKeyboardMapper(dispatchConfig: DispatchConfig): IKeyboardMapper {
return KeyboardMapperFactory.INSTANCE.getKeyboardMapper(dispatchConfig);
}
public getCurrentKeyboardLayout(): IKeyboardLayoutInfo | null {
return KeyboardMapperFactory.INSTANCE.getCurrentKeyboardLayout();
}
getAllKeyboardLayouts(): IKeyboardLayoutInfo[] {
return [];
}
public getRawKeyboardMapping(): IKeyboardMapping | null {
return KeyboardMapperFactory.INSTANCE.getRawKeyboardMapping();
}
public validateCurrentKeyboardMapping(keyboardEvent: IKeyboardEvent): void {
return;
}
}
registerSingleton(IKeymapService, NativeKeymapService, true);

View File

@@ -0,0 +1,143 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/en.darwin'; // 15%
import 'vs/workbench/services/keybinding/browser/keyboardLayouts/de.darwin';
import { KeyboardLayoutContribution } from 'vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution';
import { BrowserKeyboardMapperFactoryBase } from '../browser/keymapService';
import { KeymapInfo, IKeymapInfo } from '../common/keymapInfo';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IStorageService } from 'vs/platform/storage/common/storage';
class TestKeyboardMapperFactory extends BrowserKeyboardMapperFactoryBase {
constructor(notificationService: INotificationService, storageService: IStorageService, commandService: ICommandService) {
super(notificationService, storageService, commandService);
let keymapInfos: IKeymapInfo[] = KeyboardLayoutContribution.INSTANCE.layoutInfos;
this._keymapInfos.push(...keymapInfos.map(info => (new KeymapInfo(info.layout, info.secondaryLayouts, info.mapping, info.isUserKeyboardLayout))));
this._mru = this._keymapInfos;
this._initialized = true;
this.onKeyboardLayoutChanged();
}
}
suite('keyboard layout loader', () => {
let instantiationService: TestInstantiationService = new TestInstantiationService();
let notitifcationService = instantiationService.stub(INotificationService, {});
let storageService = instantiationService.stub(IStorageService, {});
let commandService = instantiationService.stub(ICommandService, {});
let instance = new TestKeyboardMapperFactory(notitifcationService, storageService, commandService);
test.skip('load default US keyboard layout', () => {
assert.notEqual(instance.activeKeyboardLayout, null);
assert.equal(instance.activeKeyboardLayout!.isUSStandard, true);
});
test.skip('isKeyMappingActive', () => {
assert.equal(instance.isKeyMappingActive({
KeyA: {
value: 'a',
valueIsDeadKey: false,
withShift: 'A',
withShiftIsDeadKey: false,
withAltGr: 'å',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Å',
withShiftAltGrIsDeadKey: false
}
}), true);
assert.equal(instance.isKeyMappingActive({
KeyA: {
value: 'a',
valueIsDeadKey: false,
withShift: 'A',
withShiftIsDeadKey: false,
withAltGr: 'å',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Å',
withShiftAltGrIsDeadKey: false
},
KeyZ: {
value: 'z',
valueIsDeadKey: false,
withShift: 'Z',
withShiftIsDeadKey: false,
withAltGr: 'Ω',
withAltGrIsDeadKey: false,
withShiftAltGr: '¸',
withShiftAltGrIsDeadKey: false
}
}), true);
assert.equal(instance.isKeyMappingActive({
KeyZ: {
value: 'y',
valueIsDeadKey: false,
withShift: 'Y',
withShiftIsDeadKey: false,
withAltGr: '¥',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Ÿ',
withShiftAltGrIsDeadKey: false
},
}), false);
});
test('Switch keymapping', () => {
instance.setActiveKeyMapping({
KeyZ: {
value: 'y',
valueIsDeadKey: false,
withShift: 'Y',
withShiftIsDeadKey: false,
withAltGr: '¥',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Ÿ',
withShiftAltGrIsDeadKey: false
}
});
assert.equal(!!instance.activeKeyboardLayout!.isUSStandard, false);
assert.equal(instance.isKeyMappingActive({
KeyZ: {
value: 'y',
valueIsDeadKey: false,
withShift: 'Y',
withShiftIsDeadKey: false,
withAltGr: '¥',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Ÿ',
withShiftAltGrIsDeadKey: false
},
}), true);
instance.setUSKeyboardLayout();
assert.equal(instance.activeKeyboardLayout!.isUSStandard, true);
});
test('Switch keyboard layout info', () => {
instance.setKeyboardLayout('com.apple.keylayout.German');
assert.equal(!!instance.activeKeyboardLayout!.isUSStandard, false);
assert.equal(instance.isKeyMappingActive({
KeyZ: {
value: 'y',
valueIsDeadKey: false,
withShift: 'Y',
withShiftIsDeadKey: false,
withAltGr: '¥',
withAltGrIsDeadKey: false,
withShiftAltGr: 'Ÿ',
withShiftAltGrIsDeadKey: false
},
}), true);
instance.setUSKeyboardLayout();
assert.equal(instance.activeKeyboardLayout!.isUSStandard, true);
});
});

View File

@@ -40,10 +40,25 @@ import { KeybindingsEditingService } from 'vs/workbench/services/keybinding/comm
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { TextModelResolverService } from 'vs/workbench/services/textmodelResolver/common/textModelResolverService';
import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { TestBackupFileService, TestContextService, TestEditorGroupsService, TestEditorService, TestLifecycleService, TestLogService, TestTextFileService, TestTextResourcePropertiesService } from 'vs/workbench/test/workbenchTestServices';
import { FileService } from 'vs/workbench/services/files/common/fileService';
import { TestBackupFileService, TestContextService, TestEditorGroupsService, TestEditorService, TestLifecycleService, TestTextFileService, TestTextResourcePropertiesService } from 'vs/workbench/test/workbenchTestServices';
import { FileService } from 'vs/platform/files/common/fileService';
import { Schemas } from 'vs/base/common/network';
import { DiskFileSystemProvider } from 'vs/workbench/services/files/node/diskFileSystemProvider';
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
import { URI } from 'vs/base/common/uri';
import { FileUserDataProvider } from 'vs/workbench/services/userData/common/fileUserDataProvider';
import { parseArgs } from 'vs/platform/environment/node/argv';
import { WorkbenchEnvironmentService } from 'vs/workbench/services/environment/node/environmentService';
import { IWindowConfiguration } from 'vs/platform/windows/common/windows';
class TestEnvironmentService extends WorkbenchEnvironmentService {
constructor(private _appSettingsHome: URI) {
super(parseArgs(process.argv) as IWindowConfiguration, process.execPath);
}
get appSettingsHome() { return this._appSettingsHome; }
}
interface Modifiers {
metaKey?: boolean;
@@ -65,7 +80,8 @@ suite('KeybindingsEditing', () => {
instantiationService = new TestInstantiationService();
instantiationService.stub(IEnvironmentService, <IEnvironmentService>{ appKeybindingsPath: keybindingsFile, appSettingsPath: path.join(testDir, 'settings.json') });
const environmentService = new TestEnvironmentService(URI.file(testDir));
instantiationService.stub(IEnvironmentService, environmentService);
instantiationService.stub(IConfigurationService, ConfigurationService);
instantiationService.stub(IConfigurationService, 'getValue', { 'eol': '\n' });
instantiationService.stub(IConfigurationService, 'onDidUpdateConfiguration', () => { });
@@ -78,11 +94,13 @@ suite('KeybindingsEditing', () => {
instantiationService.stub(IEditorService, new TestEditorService());
instantiationService.stub(ITelemetryService, NullTelemetryService);
instantiationService.stub(IModeService, ModeServiceImpl);
instantiationService.stub(ILogService, new TestLogService());
instantiationService.stub(ILogService, new NullLogService());
instantiationService.stub(ITextResourcePropertiesService, new TestTextResourcePropertiesService(instantiationService.get(IConfigurationService)));
instantiationService.stub(IModelService, instantiationService.createInstance(ModelServiceImpl));
const fileService = new FileService(new NullLogService());
fileService.registerProvider(Schemas.file, new DiskFileSystemProvider(new NullLogService()));
const diskFileSystemProvider = new DiskFileSystemProvider(new NullLogService());
fileService.registerProvider(Schemas.file, diskFileSystemProvider);
fileService.registerProvider(Schemas.userData, new FileUserDataProvider(environmentService.appSettingsHome, environmentService.backupHome, diskFileSystemProvider, environmentService));
instantiationService.stub(IFileService, fileService);
instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService));
instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService));
@@ -143,16 +161,6 @@ suite('KeybindingsEditing', () => {
.then(() => assert.deepEqual(getUserKeybindings(), expected));
});
test('edit a default keybinding to a non existing keybindings file', () => {
keybindingsFile = path.join(testDir, 'nonExistingFile.json');
instantiationService.get(IEnvironmentService).appKeybindingsPath = keybindingsFile;
testObject = instantiationService.createInstance(KeybindingsEditingService);
const expected: IUserFriendlyKeybinding[] = [{ key: 'alt+c', command: 'a' }, { key: 'escape', command: '-a' }];
return testObject.editKeybinding(aResolvedKeybindingItem({ firstPart: { keyCode: KeyCode.Escape }, command: 'a' }), 'alt+c', undefined)
.then(() => assert.deepEqual(getUserKeybindings(), expected));
});
test('edit a default keybinding to an empty array', () => {
writeToKeybindingsFile();
const expected: IUserFriendlyKeybinding[] = [{ key: 'alt+c', command: 'a' }, { key: 'escape', command: '-a' }];