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

beautify macos keyboard layout label

上级 24cdcfa5
......@@ -6,7 +6,7 @@
import * as nls from 'vs/nls';
import { StatusbarAlignment, IStatusbarService, IStatusbarEntryAccessor } from 'vs/platform/statusbar/common/statusbar';
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 { Registry } from 'vs/platform/registry/common/platform';
import { Extensions as WorkbenchExtensions, IWorkbenchContribution, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions';
......@@ -34,10 +34,10 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor
let layout = this.keymapService.getCurrentKeyboardLayout();
if (layout) {
let layoutInfo = (<any>layout).text || (<any>layout).lang || (<any>layout).model;
let layoutInfo = parseKeyboardLayout(layout);
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\"."),
command: KEYBOARD_LAYOUT_OPEN_PICKER
},
......@@ -49,11 +49,11 @@ export class KeyboardLayoutPickerContribution extends Disposable implements IWor
this._register(keymapService.onDidChangeKeyboardMapper(() => {
let layout = this.keymapService.getCurrentKeyboardLayout();
let layoutInfo = (<any>layout).text || (<any>layout).lang || (<any>layout).model;
let layoutInfo = parseKeyboardLayout(layout);
if (this.pickerElement.value) {
this.pickerElement.value.update({
text: `Layout: ${layoutInfo}`,
text: `Layout: ${layoutInfo.label}`,
command: KEYBOARD_LAYOUT_OPEN_PICKER
});
} else {
......@@ -111,9 +111,11 @@ export class KeyboardLayoutPickerAction extends Action {
const picks: QuickPickInput[] = layouts.map(layout => {
const picked = !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout);
const layoutInfo = parseKeyboardLayout(layout);
return {
label: (<any>layout).text || (<any>layout).lang || (<any>layout).layout,
description: ((<any>layout).id || '') + (picked ? ' (Current selection)' : ''),
label: layoutInfo.label,
id: (<any>layout).text || (<any>layout).lang || (<any>layout).layout,
description: layoutInfo.description + (picked ? ' (Current selection)' : ''),
picked: !isAutoDetect && areKeyboardLayoutsEqual(currentLayout, layout)
};
});
......
......@@ -122,3 +122,44 @@ export function areKeyboardLayoutsEqual(a: IKeyboardLayoutInfo | null, b: IKeybo
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.
先完成此消息的编辑!
想要评论请 注册