提交 ef12cb85 编写于 作者: A Alex Dima

More edge cases

上级 18132b6c
......@@ -306,6 +306,7 @@ let STRING = createMapping((TO_STRING_MAP) => {
TO_STRING_MAP[KeyCode.KEY_Y] = 'Y';
TO_STRING_MAP[KeyCode.KEY_Z] = 'Z';
TO_STRING_MAP[KeyCode.Meta] = 'Meta';
TO_STRING_MAP[KeyCode.ContextMenu] = 'ContextMenu';
TO_STRING_MAP[KeyCode.F1] = 'F1';
......
......@@ -177,7 +177,7 @@ export class MacLinuxKeyboardMapper implements IKeyboardMapper {
if (immutableKeyCode === KeyCode.Unknown || immutableKeyCode === KeyCode.Ctrl || immutableKeyCode === KeyCode.Meta || immutableKeyCode === KeyCode.Alt || immutableKeyCode === KeyCode.Shift) {
this._hwToDispatch[code] = null; // cannot dispatch on this hw code
} else {
this._hwToDispatch[code] = KeyCodeUtils.toString(immutableKeyCode);
this._hwToDispatch[code] = `[${KeyboardEventCodeUtils.toString(code)}]`;
}
}
}
......@@ -377,8 +377,11 @@ export class MacLinuxKeyboardMapper implements IKeyboardMapper {
this._hwToKb[hwEncoded] = kbEncoded;
this._kbToHw[kbEncoded] = this._kbToHw[kbEncoded] || [];
this._kbToHw[kbEncoded].unshift(hwEncoded);
if (keyCode !== KeyCode.Unknown) {
// Do not save an inverse lookup for Unknown
this._kbToHw[kbEncoded] = this._kbToHw[kbEncoded] || [];
this._kbToHw[kbEncoded].unshift(hwEncoded);
}
}
private _registerAllCombos1(
......@@ -568,6 +571,22 @@ export class MacLinuxKeyboardMapper implements IKeyboardMapper {
}
private _getStableKeyCodeForHWCode(code: KeyboardEventCode): KeyCode {
if (code >= KeyboardEventCode.Digit1 && code <= KeyboardEventCode.Digit0) {
// digits are ok
switch (code) {
case KeyboardEventCode.Digit1: return KeyCode.KEY_1;
case KeyboardEventCode.Digit2: return KeyCode.KEY_2;
case KeyboardEventCode.Digit3: return KeyCode.KEY_3;
case KeyboardEventCode.Digit4: return KeyCode.KEY_4;
case KeyboardEventCode.Digit5: return KeyCode.KEY_5;
case KeyboardEventCode.Digit6: return KeyCode.KEY_6;
case KeyboardEventCode.Digit7: return KeyCode.KEY_7;
case KeyboardEventCode.Digit8: return KeyCode.KEY_8;
case KeyboardEventCode.Digit9: return KeyCode.KEY_9;
case KeyboardEventCode.Digit0: return KeyCode.KEY_0;
}
}
// Check if this hw code always maps to the same kb code and back
let constantKeyCode: KeyCode = -1;
for (let mod = 0; mod < 8; mod++) {
......@@ -575,6 +594,11 @@ export class MacLinuxKeyboardMapper implements IKeyboardMapper {
const kbEncoded = this._hwToKb[hwEncoded];
const keyCode = (kbEncoded >>> 3);
if (keyCode === KeyCode.Unknown) {
// maps to unknown keyCode
return -1;
}
if (constantKeyCode === -1) {
constantKeyCode = keyCode;
} else if (constantKeyCode !== keyCode) {
......
......@@ -179,10 +179,12 @@ export class WindowsKeyboardMapper implements IKeyboardMapper {
private readonly _codeInfo: IHardwareCodeMapping[];
private readonly _hwToKb: KeyCode[];
private readonly _kbToLabel: string[] = [];
private readonly _kbExists: boolean[];
constructor(rawMappings: IKeyboardMapping) {
this._hwToKb = [];
this._kbToLabel = [];
this._kbExists = [];
this._kbToLabel[KeyCode.Unknown] = KeyCodeUtils.toString(KeyCode.Unknown);
for (let code = KeyboardEventCode.None; code < KeyboardEventCode.MAX_VALUE; code++) {
......@@ -190,6 +192,7 @@ export class WindowsKeyboardMapper implements IKeyboardMapper {
if (immutableKeyCode !== -1) {
this._hwToKb[code] = immutableKeyCode;
this._kbToLabel[immutableKeyCode] = KeyCodeUtils.toString(immutableKeyCode);
this._kbExists[immutableKeyCode] = true;
}
}
......@@ -223,6 +226,7 @@ export class WindowsKeyboardMapper implements IKeyboardMapper {
this._codeInfo[code] = mapping;
if (keyCode !== KeyCode.Unknown) {
this._kbExists[keyCode] = true;
if (value >= CharCode.a && value <= CharCode.z) {
this._kbToLabel[keyCode] = String.fromCharCode(CharCode.A + (value - CharCode.a));
} else if (value) {
......@@ -328,8 +332,17 @@ export class WindowsKeyboardMapper implements IKeyboardMapper {
public resolveKeybinding(keybinding: Keybinding): WindowsNativeResolvedKeybinding[] {
if (keybinding.type === KeybindingType.Chord) {
let firstPartKeyCode = keybinding.firstPart.keyCode;
let chordPartKeyCode = keybinding.chordPart.keyCode;
if (!this._kbExists[firstPartKeyCode] || !this._kbExists[chordPartKeyCode]) {
return [];
}
return [new WindowsNativeResolvedKeybinding(this, keybinding.firstPart, keybinding.chordPart)];
} else {
let keyCode = keybinding.keyCode;
if (!this._kbExists[keyCode]) {
return [];
}
return [new WindowsNativeResolvedKeybinding(this, keybinding, null)];
}
}
......
......@@ -6,7 +6,7 @@
'use strict';
import * as assert from 'assert';
import { KeyMod, KeyCode, createKeybinding, SimpleKeybinding, Keybinding } from 'vs/base/common/keyCodes';
import { KeyMod, KeyCode, createKeybinding, SimpleKeybinding, KeyChord } from 'vs/base/common/keyCodes';
import { MacLinuxKeyboardMapper, IKeyboardMapping } from 'vs/workbench/services/keybinding/common/macLinuxKeyboardMapper';
import { OperatingSystem } from 'vs/base/common/platform';
import { UserSettingsLabelProvider } from 'vs/platform/keybinding/common/keybindingLabels';
......@@ -14,7 +14,7 @@ import { USLayoutResolvedKeybinding } from 'vs/platform/keybinding/common/usLayo
import { KeyboardEventCodeUtils } from 'vs/workbench/services/keybinding/common/keyboardEventCode';
import { IHTMLContentElement } from 'vs/base/common/htmlContent';
import { TPromise } from 'vs/base/common/winjs.base';
import { readRawMapping, assertMapping, IResolvedKeybinding, assertResolveKeybinding, simpleHTMLLabel } from 'vs/workbench/services/keybinding/test/keyboardMapperTestUtils';
import { readRawMapping, assertMapping, IResolvedKeybinding, assertResolveKeybinding, simpleHTMLLabel, chordHTMLLabel } from 'vs/workbench/services/keybinding/test/keyboardMapperTestUtils';
function createKeyboardMapper(file: string, OS: OperatingSystem): TPromise<MacLinuxKeyboardMapper> {
return readRawMapping<IKeyboardMapping>(file).then((rawMappings) => {
......@@ -49,9 +49,9 @@ suite('keyboardMapper - MAC de_ch', () => {
return simpleHTMLLabel(pieces, OperatingSystem.Macintosh);
}
// function _chordHTMLLabel(firstPart: string[], chordPart: string[]): IHTMLContentElement {
// return chordHTMLLabel(firstPart, chordPart, OperatingSystem.Macintosh);
// }
function _chordHTMLLabel(firstPart: string[], chordPart: string[]): IHTMLContentElement {
return chordHTMLLabel(firstPart, chordPart, OperatingSystem.Macintosh);
}
test('kb => hw', () => {
// unchanged
......@@ -68,42 +68,6 @@ suite('keyboardMapper - MAC de_ch', () => {
assertKeybindingTranslation(KeyMod.CtrlCmd | KeyCode.US_SLASH, 'shift+cmd+Digit7');
});
test('resolveKeybinding', () => {
function _assertAllLabels(keybinding: Keybinding, labels: string[], ariaLabels: string[], htmlLabel: IHTMLContentElement[][]): void {
const kb = mapper.resolveKeybinding(keybinding);
let actualLabels = kb.map(k => k.getLabel());
assert.deepEqual(actualLabels, labels);
let actualAriaLabels = kb.map(k => k.getAriaLabel());
assert.deepEqual(actualAriaLabels, ariaLabels);
let actualHTMLLabels = kb.map(k => k.getHTMLLabel());
assert.deepEqual(actualHTMLLabels, htmlLabel);
}
function assertAllLabels(keybinding: Keybinding, label: string | string[], ariaLabel: string | string[], htmlLabel: IHTMLContentElement[][]): void {
let _labels = (typeof label === 'string' ? [label] : label);
let _ariaLabels = (typeof ariaLabel === 'string' ? [ariaLabel] : ariaLabel);
_assertAllLabels(keybinding, _labels, _ariaLabels, htmlLabel);
}
// TODO: ElectronAccelerator, UserSettings
assertAllLabels(
createKeybinding(KeyMod.CtrlCmd | KeyCode.KEY_Z, OperatingSystem.Macintosh),
'⌘Z',
'Command+Z',
[[{
tagName: 'span',
className: 'monaco-kb',
children: [
{ tagName: 'span', className: 'monaco-kbkey', text: '' },
{ tagName: 'span', className: 'monaco-kbkey', text: 'Z' },
]
}]]
);
});
// TODO: missing
test('resolveKeybinding Cmd+A', () => {
_assertResolveKeybinding(
......@@ -131,6 +95,176 @@ suite('keyboardMapper - MAC de_ch', () => {
);
});
test('resolveKeybinding Cmd+Z', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.KEY_Z,
[{
label: '⌘Z',
ariaLabel: 'Command+Z',
HTMLLabel: [_simpleHTMLLabel(['', 'Z'])],
electronAccelerator: 'Cmd+Z',
userSettingsLabel: 'cmd+z',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: true,
dispatchParts: ['meta+[KeyY]', null],
}]
);
});
test('resolveKeybinding Cmd+]', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.US_CLOSE_SQUARE_BRACKET,
[{
label: '⌃⌥⌘6',
ariaLabel: 'Control+Alt+Command+6',
HTMLLabel: [_simpleHTMLLabel(['', '', '', '6'])],
electronAccelerator: 'Ctrl+Alt+Cmd+6',
userSettingsLabel: 'ctrl+alt+cmd+6',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: true,
hasMetaModifier: true,
dispatchParts: ['ctrl+alt+meta+[Digit6]', null],
}]
);
});
test('resolveKeybinding Shift+]', () => {
_assertResolveKeybinding(
KeyMod.Shift | KeyCode.US_CLOSE_SQUARE_BRACKET,
[{
label: '⌃⌥9',
ariaLabel: 'Control+Alt+9',
HTMLLabel: [_simpleHTMLLabel(['', '', '9'])],
electronAccelerator: 'Ctrl+Alt+9',
userSettingsLabel: 'ctrl+alt+9',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: true,
hasMetaModifier: false,
dispatchParts: ['ctrl+alt+[Digit9]', null],
}]
);
});
test('resolveKeybinding Cmd+/', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.US_SLASH,
[{
label: '⇧⌘7',
ariaLabel: 'Shift+Command+7',
HTMLLabel: [_simpleHTMLLabel(['', '', '7'])],
electronAccelerator: 'Shift+Cmd+7',
userSettingsLabel: 'shift+cmd+7',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: true,
dispatchParts: ['shift+meta+[Digit7]', null],
}]
);
});
test('resolveKeybinding Cmd+Shift+/', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.US_SLASH,
[{
label: '⇧⌘\'',
ariaLabel: 'Shift+Command+\'',
HTMLLabel: [_simpleHTMLLabel(['', '', '\''])],
electronAccelerator: null,
userSettingsLabel: 'shift+cmd+[Minus]',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: true,
dispatchParts: ['shift+meta+[Minus]', null],
}]
);
});
test('resolveKeybinding Cmd+K Cmd+\\', () => {
_assertResolveKeybinding(
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_BACKSLASH),
[{
label: '⌘K ⌃⇧⌥⌘7',
ariaLabel: 'Command+K Control+Shift+Alt+Command+7',
HTMLLabel: [_chordHTMLLabel(['', 'K'], ['', '', '', '', '7'])],
electronAccelerator: null,
userSettingsLabel: 'cmd+k ctrl+shift+alt+cmd+7',
isChord: true,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['meta+[KeyK]', 'ctrl+shift+alt+meta+[Digit7]'],
}]
);
});
test('resolveKeybinding Cmd+K Cmd+=', () => {
_assertResolveKeybinding(
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_EQUAL),
[{
label: '⌘K ⇧⌘0',
ariaLabel: 'Command+K Shift+Command+0',
HTMLLabel: [_chordHTMLLabel(['', 'K'], ['', '', '0'])],
electronAccelerator: null,
userSettingsLabel: 'cmd+k shift+cmd+0',
isChord: true,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['meta+[KeyK]', 'shift+meta+[Digit0]'],
}]
);
});
test('resolveKeybinding Cmd+DownArrow', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.DownArrow,
[{
label: '⌘↓',
ariaLabel: 'Command+DownArrow',
HTMLLabel: [_simpleHTMLLabel(['', ''])],
electronAccelerator: 'Cmd+Down',
userSettingsLabel: 'cmd+down',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: true,
dispatchParts: ['meta+[ArrowDown]', null],
}]
);
});
test('resolveKeybinding Cmd+NUMPAD_0', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.NUMPAD_0,
[{
label: '⌘NumPad0',
ariaLabel: 'Command+NumPad0',
HTMLLabel: [_simpleHTMLLabel(['', 'NumPad0'])],
electronAccelerator: null,
userSettingsLabel: 'cmd+numpad0',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: true,
dispatchParts: ['meta+[Numpad0]', null],
}]
);
});
});
suite('keyboardMapper - LINUX de_ch', () => {
......@@ -152,6 +286,18 @@ suite('keyboardMapper - LINUX de_ch', () => {
_assertKeybindingTranslation(mapper, OperatingSystem.Linux, kb, expected);
}
function _assertResolveKeybinding(k: number, expected: IResolvedKeybinding[]): void {
assertResolveKeybinding(mapper, createKeybinding(k, OperatingSystem.Linux), expected);
}
function _simpleHTMLLabel(pieces: string[]): IHTMLContentElement {
return simpleHTMLLabel(pieces, OperatingSystem.Linux);
}
function _chordHTMLLabel(firstPart: string[], chordPart: string[]): IHTMLContentElement {
return chordHTMLLabel(firstPart, chordPart, OperatingSystem.Linux);
}
test('kb => hw', () => {
// unchanged
assertKeybindingTranslation(KeyMod.CtrlCmd | KeyCode.KEY_1, 'ctrl+Digit1');
......@@ -166,6 +312,184 @@ suite('keyboardMapper - LINUX de_ch', () => {
// Ctrl+/
assertKeybindingTranslation(KeyMod.CtrlCmd | KeyCode.US_SLASH, 'ctrl+shift+Digit7');
});
test('resolveKeybinding Ctrl+A', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.KEY_A,
[{
label: 'Ctrl+A',
ariaLabel: 'Control+A',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'A'])],
electronAccelerator: 'Ctrl+A',
userSettingsLabel: 'ctrl+a',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+[KeyA]', null],
}]
);
});
test('resolveKeybinding Ctrl+Z', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.KEY_Z,
[{
label: 'Ctrl+Z',
ariaLabel: 'Control+Z',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Z'])],
electronAccelerator: 'Ctrl+Z',
userSettingsLabel: 'ctrl+z',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+[KeyY]', null],
}]
);
});
test('resolveKeybinding Ctrl+]', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.US_CLOSE_SQUARE_BRACKET,
[]
);
});
test('resolveKeybinding Shift+]', () => {
_assertResolveKeybinding(
KeyMod.Shift | KeyCode.US_CLOSE_SQUARE_BRACKET,
[{
label: 'Ctrl+Alt+0',
ariaLabel: 'Control+Alt+0',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Alt', '0'])],
electronAccelerator: 'Ctrl+Alt+0',
userSettingsLabel: 'ctrl+alt+0',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: true,
hasMetaModifier: false,
dispatchParts: ['ctrl+alt+[Digit0]', null],
}, {
label: 'Ctrl+Alt+$',
ariaLabel: 'Control+Alt+$',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Alt', '$'])],
electronAccelerator: null,
userSettingsLabel: 'ctrl+alt+[Backslash]',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: true,
hasMetaModifier: false,
dispatchParts: ['ctrl+alt+[Backslash]', null],
}]
);
});
test('resolveKeybinding Ctrl+/', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.US_SLASH,
[{
label: 'Ctrl+Shift+7',
ariaLabel: 'Control+Shift+7',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Shift', '7'])],
electronAccelerator: 'Ctrl+Shift+7',
userSettingsLabel: 'ctrl+shift+7',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+shift+[Digit7]', null],
}]
);
});
test('resolveKeybinding Ctrl+Shift+/', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.US_SLASH,
[{
label: 'Ctrl+Shift+\'',
ariaLabel: 'Control+Shift+\'',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Shift', '\''])],
electronAccelerator: null,
userSettingsLabel: 'ctrl+shift+[Minus]',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+shift+[Minus]', null],
}]
);
});
test('resolveKeybinding Ctrl+K Ctrl+\\', () => {
_assertResolveKeybinding(
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_BACKSLASH),
[]
);
});
test('resolveKeybinding Ctrl+K Ctrl+=', () => {
_assertResolveKeybinding(
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_EQUAL),
[{
label: 'Ctrl+K Ctrl+Shift+0',
ariaLabel: 'Control+K Control+Shift+0',
HTMLLabel: [_chordHTMLLabel(['Ctrl', 'K'], ['Ctrl', 'Shift', '0'])],
electronAccelerator: null,
userSettingsLabel: 'ctrl+k ctrl+shift+0',
isChord: true,
hasCtrlModifier: false,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+[KeyK]', 'ctrl+shift+[Digit0]'],
}]
);
});
test('resolveKeybinding Ctrl+DownArrow', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.DownArrow,
[{
label: 'Ctrl+DownArrow',
ariaLabel: 'Control+DownArrow',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'DownArrow'])],
electronAccelerator: 'Ctrl+Down',
userSettingsLabel: 'ctrl+down',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+[ArrowDown]', null],
}]
);
});
test('resolveKeybinding Ctrl+NUMPAD_0', () => {
_assertResolveKeybinding(
KeyMod.CtrlCmd | KeyCode.NUMPAD_0,
[{
label: 'Ctrl+NumPad0',
ariaLabel: 'Control+NumPad0',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'NumPad0'])],
electronAccelerator: null,
userSettingsLabel: 'ctrl+numpad0',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+[Numpad0]', null],
}]
);
});
});
suite('keyboardMapper - LINUX de_ch', () => {
......
......@@ -18,8 +18,8 @@ function createKeyboardMapper(file: string): TPromise<WindowsKeyboardMapper> {
});
}
function _assertResolveKeybinding(mapper: WindowsKeyboardMapper, k: number, expected: IResolvedKeybinding): void {
assertResolveKeybinding(mapper, createKeybinding(k, OperatingSystem.Windows), [expected]);
function _assertResolveKeybinding(mapper: WindowsKeyboardMapper, k: number, expected: IResolvedKeybinding[]): void {
assertResolveKeybinding(mapper, createKeybinding(k, OperatingSystem.Windows), expected);
}
function _simpleHTMLLabel(pieces: string[]): IHTMLContentElement {
......@@ -49,7 +49,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.KEY_A,
{
[{
label: 'Ctrl+A',
ariaLabel: 'Control+A',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'A'])],
......@@ -61,7 +61,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+A', null],
}
}]
);
});
......@@ -69,7 +69,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.KEY_Z,
{
[{
label: 'Ctrl+Z',
ariaLabel: 'Control+Z',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Z'])],
......@@ -81,7 +81,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+Z', null],
}
}]
);
});
......@@ -89,7 +89,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.US_CLOSE_SQUARE_BRACKET,
{
[{
label: 'Ctrl+^',
ariaLabel: 'Control+^',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', '^'])],
......@@ -101,7 +101,28 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+]', null],
}
}]
);
});
test('resolveKeybinding Shift+]', () => {
_assertResolveKeybinding(
mapper,
KeyMod.Shift | KeyCode.US_CLOSE_SQUARE_BRACKET,
[{
label: 'Shift+^',
ariaLabel: 'Shift+^',
HTMLLabel: [_simpleHTMLLabel(['Shift', '^'])],
electronAccelerator: 'Shift+]',
userSettingsLabel: 'shift+]',
isChord: false,
hasCtrlModifier: false,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['shift+]', null],
}]
);
});
......@@ -109,7 +130,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.US_SLASH,
{
[{
label: 'Ctrl+§',
ariaLabel: 'Control+§',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', '§'])],
......@@ -121,7 +142,27 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+/', null],
}
}]
);
});
test('resolveKeybinding Ctrl+Shift+/', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.US_SLASH,
[{
label: 'Ctrl+Shift+§',
ariaLabel: 'Control+Shift+§',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'Shift', '§'])],
electronAccelerator: 'Ctrl+Shift+/',
userSettingsLabel: 'ctrl+shift+/',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: true,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+shift+/', null],
}]
);
});
......@@ -129,7 +170,7 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
_assertResolveKeybinding(
mapper,
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_BACKSLASH),
{
[{
label: 'Ctrl+K Ctrl+ä',
ariaLabel: 'Control+K Control+ä',
HTMLLabel: [_chordHTMLLabel(['Ctrl', 'K'], ['Ctrl', 'ä'])],
......@@ -141,7 +182,55 @@ suite('keyboardMapper - WINDOWS de_ch', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+K', 'ctrl+\\'],
}
}]
);
});
test('resolveKeybinding Ctrl+K Ctrl+=', () => {
_assertResolveKeybinding(
mapper,
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_EQUAL),
[]
);
});
test('resolveKeybinding Ctrl+DownArrow', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.DownArrow,
[{
label: 'Ctrl+DownArrow',
ariaLabel: 'Control+DownArrow',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'DownArrow'])],
electronAccelerator: 'Ctrl+Down',
userSettingsLabel: 'ctrl+down',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+DownArrow', null],
}]
);
});
test('resolveKeybinding Ctrl+NUMPAD_0', () => {
_assertResolveKeybinding(
mapper,
KeyMod.CtrlCmd | KeyCode.NUMPAD_0,
[{
label: 'Ctrl+NumPad0',
ariaLabel: 'Control+NumPad0',
HTMLLabel: [_simpleHTMLLabel(['Ctrl', 'NumPad0'])],
electronAccelerator: null,
userSettingsLabel: 'ctrl+numpad0',
isChord: false,
hasCtrlModifier: true,
hasShiftModifier: false,
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+NumPad0', null],
}]
);
});
});
......@@ -165,7 +254,7 @@ suite('keyboardMapper - WINDOWS en_us', () => {
_assertResolveKeybinding(
mapper,
KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyMod.CtrlCmd | KeyCode.US_BACKSLASH),
{
[{
label: 'Ctrl+K Ctrl+\\',
ariaLabel: 'Control+K Control+\\',
HTMLLabel: [_chordHTMLLabel(['Ctrl', 'K'], ['Ctrl', '\\'])],
......@@ -177,7 +266,7 @@ suite('keyboardMapper - WINDOWS en_us', () => {
hasAltModifier: false,
hasMetaModifier: false,
dispatchParts: ['ctrl+K', 'ctrl+\\'],
}
}]
);
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册