提交 850cd659 编写于 作者: P Peng Lyu

beautify macos keyboard layout label

上级 24cdcfa5
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { StatusbarAlignment, IStatusbarService, IStatusbarEntryAccessor } from 'vs/platform/statusbar/common/statusbar'; import { StatusbarAlignment, IStatusbarService, IStatusbarEntryAccessor } from 'vs/platform/statusbar/common/statusbar';
import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle'; import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle';
import { IKeymapService, areKeyboardLayoutsEqual } from 'vs/workbench/services/keybinding/common/keymapService'; import { IKeymapService, areKeyboardLayoutsEqual, parseKeyboardLayout } from 'vs/workbench/services/keybinding/common/keymapService';
import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
import { Registry } from 'vs/platform/registry/common/platform'; import { Registry } from 'vs/platform/registry/common/platform';
import { Extensions as WorkbenchExtensions, IWorkbenchContribution, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions'; import { Extensions as WorkbenchExtensions, IWorkbenchContribution, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions';
...@@ -34,10 +34,10 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor ...@@ -34,10 +34,10 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor
let layout = this.keymapService.getCurrentKeyboardLayout(); let layout = this.keymapService.getCurrentKeyboardLayout();
if (layout) { if (layout) {
let layoutInfo = (<any>layout).text || (<any>layout).lang || (<any>layout).model; let layoutInfo = parseKeyboardLayout(layout);
this.pickerElement.value = this.statusbarService.addEntry( this.pickerElement.value = this.statusbarService.addEntry(
{ {
text: `Layout: ${layoutInfo}`, text: `Layout: ${layoutInfo.label}`,
// tooltip: nls.localize('keyboard.layout.tooltip', "If you are not using a Screen Reader, please change the setting `editor.accessibilitySupport` to \"off\"."), // tooltip: nls.localize('keyboard.layout.tooltip', "If you are not using a Screen Reader, please change the setting `editor.accessibilitySupport` to \"off\"."),
command: KEYBOARD_LAYOUT_OPEN_PICKER command: KEYBOARD_LAYOUT_OPEN_PICKER
}, },
...@@ -49,11 +49,11 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor ...@@ -49,11 +49,11 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor
this._register(keymapService.onDidChangeKeyboardMapper(() => { this._register(keymapService.onDidChangeKeyboardMapper(() => {
let layout = this.keymapService.getCurrentKeyboardLayout(); let layout = this.keymapService.getCurrentKeyboardLayout();
let layoutInfo = (<any>layout).text || (<any>layout).lang || (<any>layout).model; let layoutInfo = parseKeyboardLayout(layout);
if (this.pickerElement.value) { if (this.pickerElement.value) {
this.pickerElement.value.update({ this.pickerElement.value.update({
text: `Layout: ${layoutInfo}`, text: `Layout: ${layoutInfo.label}`,
command: KEYBOARD_LAYOUT_OPEN_PICKER command: KEYBOARD_LAYOUT_OPEN_PICKER
}); });
} else { } else {
...@@ -111,9 +111,11 @@ export class KeyboardLayoutPickerAction extends Action { ...@@ -111,9 +111,11 @@ export class KeyboardLayoutPickerAction extends Action {
const picks: QuickPickInput[] = layouts.map(layout => { const picks: QuickPickInput[] = layouts.map(layout => {
const picked = !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout); const picked = !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout);
const layoutInfo = parseKeyboardLayout(layout);
return { return {
label: (<any>layout).text || (<any>layout).lang || (<any>layout).layout, label: layoutInfo.label,
description: ((<any>layout).id || '') + (picked ? ' (Current selection)' : ''), id: (<any>layout).text || (<any>layout).lang || (<any>layout).layout,
description: layoutInfo.description + (picked ? ' (Current selection)' : ''),
picked: !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout) picked: !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout)
}; };
}); });
......
...@@ -122,3 +122,44 @@ export function areKeyboardLayoutsEqual(a: IKeyboardLayoutInfo | null, b: IKeybo ...@@ -122,3 +122,44 @@ export function areKeyboardLayoutsEqual(a: IKeyboardLayoutInfo | null, b: IKeybo
return false; return false;
} }
export function parseKeyboardLayout(layout: IKeyboardLayoutInfo | null): { label: string, description: string } {
if ((<IWindowsKeyboardLayoutInfo>layout).name) {
// windows
let windowsLayout = <IWindowsKeyboardLayoutInfo>layout;
return {
label: windowsLayout.text,
description: ''
};
}
if ((<IMacKeyboardLayoutInfo>layout).id) {
let macLayout = <IMacKeyboardLayoutInfo>layout;
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: ''
};
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册