diff --git a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts index 5d84eca75e2..68716ac609d 100644 --- a/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts +++ b/src/vs/workbench/services/keybinding/electron-browser/keybindingService.ts @@ -34,6 +34,10 @@ import { WindowsKeyboardMapper, IWindowsKeyboardMapping, windowsKeyboardMappingE import { IMacLinuxKeyboardMapping, MacLinuxKeyboardMapper, macLinuxKeyboardMappingEquals } from 'vs/workbench/services/keybinding/common/macLinuxKeyboardMapper'; import { MacLinuxFallbackKeyboardMapper } from 'vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper'; import Event, { Emitter } from 'vs/base/common/event'; +import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; +import { Action } from 'vs/base/common/actions'; +import { TPromise } from 'vs/base/common/winjs.base'; +import Severity from 'vs/base/common/severity'; export class KeyboardMapperFactory { public static INSTANCE = new KeyboardMapperFactory(); @@ -73,6 +77,27 @@ export class KeyboardMapperFactory { return this._layoutInfo; } + public isUSStandard(): boolean { + let _kbInfo = this.getCurrentKeyboardLayout(); + + if (OS === OperatingSystem.Linux) { + const kbInfo = _kbInfo; + return (kbInfo && kbInfo.layout === 'us'); + } + + if (OS === OperatingSystem.Macintosh) { + const kbInfo = _kbInfo; + return (kbInfo && kbInfo.id === 'com.apple.keylayout.US'); + } + + if (OS === OperatingSystem.Windows) { + const kbInfo = _kbInfo; + return (kbInfo && kbInfo.name === '00000409'); + } + + return false; + } + public getRawKeyboardMapping(): nativeKeymap.IKeyboardMapping { if (!this._initialized) { this._setKeyboardData(nativeKeymap.getCurrentKeyboardLayout(), nativeKeymap.getKeyMap()); @@ -204,6 +229,43 @@ let keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint TPromise.as(true) + ); + this.messageService.show(Severity.Info, { + message: nls.localize('keybindingMigration.prompt', "Some keyboard shortcuts have changed for your keyboard layout."), + actions: [okAction] + }); } public dumpDebugInfo(): string { @@ -407,7 +506,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService { private _asCommandRule(isBuiltin: boolean, idx: number, binding: ContributedKeyBinding): IKeybindingRule2 { - let {command, when, key, mac, linux, win} = binding; + let { command, when, key, mac, linux, win } = binding; let weight: number; if (isBuiltin) {