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

Add WindowsKeyboardMapper

上级 bbbe404c
......@@ -2,8 +2,11 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { KeyCode } from 'vs/base/common/keyCodes';
const codeIntToStr: string[] = [];
const codeStrToInt: { [code: string]: number; } = Object.create(null);
......@@ -412,4 +415,213 @@ export const enum KeyboardEventCode {
MailSend,
MAX_VALUE
}
\ No newline at end of file
}
/**
* -1 if a HwCode => KeyCode mapping depends on kb layout.
*/
export const IMMUTABLE_CODE_TO_KEY_CODE: KeyCode[] = [];
(function () {
for (let i = 0; i <= KeyboardEventCode.MAX_VALUE; i++) {
IMMUTABLE_CODE_TO_KEY_CODE[i] = -1;
}
function define(code: KeyboardEventCode, keyCode: KeyCode): void {
IMMUTABLE_CODE_TO_KEY_CODE[code] = keyCode;
}
define(KeyboardEventCode.None, KeyCode.Unknown);
define(KeyboardEventCode.Hyper, KeyCode.Unknown);
define(KeyboardEventCode.Super, KeyCode.Unknown);
define(KeyboardEventCode.Fn, KeyCode.Unknown);
define(KeyboardEventCode.FnLock, KeyCode.Unknown);
define(KeyboardEventCode.Suspend, KeyCode.Unknown);
define(KeyboardEventCode.Resume, KeyCode.Unknown);
define(KeyboardEventCode.Turbo, KeyCode.Unknown);
define(KeyboardEventCode.Sleep, KeyCode.Unknown);
define(KeyboardEventCode.WakeUp, KeyCode.Unknown);
// define(KeyboardEventCode.KeyA, KeyCode.Unknown);
// define(KeyboardEventCode.KeyB, KeyCode.Unknown);
// define(KeyboardEventCode.KeyC, KeyCode.Unknown);
// define(KeyboardEventCode.KeyD, KeyCode.Unknown);
// define(KeyboardEventCode.KeyE, KeyCode.Unknown);
// define(KeyboardEventCode.KeyF, KeyCode.Unknown);
// define(KeyboardEventCode.KeyG, KeyCode.Unknown);
// define(KeyboardEventCode.KeyH, KeyCode.Unknown);
// define(KeyboardEventCode.KeyI, KeyCode.Unknown);
// define(KeyboardEventCode.KeyJ, KeyCode.Unknown);
// define(KeyboardEventCode.KeyK, KeyCode.Unknown);
// define(KeyboardEventCode.KeyL, KeyCode.Unknown);
// define(KeyboardEventCode.KeyM, KeyCode.Unknown);
// define(KeyboardEventCode.KeyN, KeyCode.Unknown);
// define(KeyboardEventCode.KeyO, KeyCode.Unknown);
// define(KeyboardEventCode.KeyP, KeyCode.Unknown);
// define(KeyboardEventCode.KeyQ, KeyCode.Unknown);
// define(KeyboardEventCode.KeyR, KeyCode.Unknown);
// define(KeyboardEventCode.KeyS, KeyCode.Unknown);
// define(KeyboardEventCode.KeyT, KeyCode.Unknown);
// define(KeyboardEventCode.KeyU, KeyCode.Unknown);
// define(KeyboardEventCode.KeyV, KeyCode.Unknown);
// define(KeyboardEventCode.KeyW, KeyCode.Unknown);
// define(KeyboardEventCode.KeyX, KeyCode.Unknown);
// define(KeyboardEventCode.KeyY, KeyCode.Unknown);
// define(KeyboardEventCode.KeyZ, KeyCode.Unknown);
// define(KeyboardEventCode.Digit1, KeyCode.Unknown);
// define(KeyboardEventCode.Digit2, KeyCode.Unknown);
// define(KeyboardEventCode.Digit3, KeyCode.Unknown);
// define(KeyboardEventCode.Digit4, KeyCode.Unknown);
// define(KeyboardEventCode.Digit5, KeyCode.Unknown);
// define(KeyboardEventCode.Digit6, KeyCode.Unknown);
// define(KeyboardEventCode.Digit7, KeyCode.Unknown);
// define(KeyboardEventCode.Digit8, KeyCode.Unknown);
// define(KeyboardEventCode.Digit9, KeyCode.Unknown);
// define(KeyboardEventCode.Digit0, KeyCode.Unknown);
define(KeyboardEventCode.Enter, KeyCode.Enter);
define(KeyboardEventCode.Escape, KeyCode.Escape);
define(KeyboardEventCode.Backspace, KeyCode.Backspace);
define(KeyboardEventCode.Tab, KeyCode.Tab);
define(KeyboardEventCode.Space, KeyCode.Space);
// define(KeyboardEventCode.Minus, KeyCode.Unknown);
// define(KeyboardEventCode.Equal, KeyCode.Unknown);
// define(KeyboardEventCode.BracketLeft, KeyCode.Unknown);
// define(KeyboardEventCode.BracketRight, KeyCode.Unknown);
// define(KeyboardEventCode.Backslash, KeyCode.Unknown);
// define(KeyboardEventCode.IntlHash, KeyCode.Unknown);
// define(KeyboardEventCode.Semicolon, KeyCode.Unknown);
// define(KeyboardEventCode.Quote, KeyCode.Unknown);
// define(KeyboardEventCode.Backquote, KeyCode.Unknown);
// define(KeyboardEventCode.Comma, KeyCode.Unknown);
// define(KeyboardEventCode.Period, KeyCode.Unknown);
// define(KeyboardEventCode.Slash, KeyCode.Unknown);
define(KeyboardEventCode.CapsLock, KeyCode.CapsLock);
define(KeyboardEventCode.F1, KeyCode.F1);
define(KeyboardEventCode.F2, KeyCode.F2);
define(KeyboardEventCode.F3, KeyCode.F3);
define(KeyboardEventCode.F4, KeyCode.F4);
define(KeyboardEventCode.F5, KeyCode.F5);
define(KeyboardEventCode.F6, KeyCode.F6);
define(KeyboardEventCode.F7, KeyCode.F7);
define(KeyboardEventCode.F8, KeyCode.F8);
define(KeyboardEventCode.F9, KeyCode.F9);
define(KeyboardEventCode.F10, KeyCode.F10);
define(KeyboardEventCode.F11, KeyCode.F11);
define(KeyboardEventCode.F12, KeyCode.F12);
define(KeyboardEventCode.PrintScreen, KeyCode.Unknown);
define(KeyboardEventCode.ScrollLock, KeyCode.ScrollLock);
define(KeyboardEventCode.Pause, KeyCode.PauseBreak);
define(KeyboardEventCode.Insert, KeyCode.Insert);
define(KeyboardEventCode.Home, KeyCode.Home);
define(KeyboardEventCode.PageUp, KeyCode.PageUp);
define(KeyboardEventCode.Delete, KeyCode.Delete);
define(KeyboardEventCode.End, KeyCode.End);
define(KeyboardEventCode.PageDown, KeyCode.PageDown);
define(KeyboardEventCode.ArrowRight, KeyCode.RightArrow);
define(KeyboardEventCode.ArrowLeft, KeyCode.LeftArrow);
define(KeyboardEventCode.ArrowDown, KeyCode.DownArrow);
define(KeyboardEventCode.ArrowUp, KeyCode.UpArrow);
define(KeyboardEventCode.NumLock, KeyCode.NumLock);
define(KeyboardEventCode.NumpadDivide, KeyCode.NUMPAD_DIVIDE);
define(KeyboardEventCode.NumpadMultiply, KeyCode.NUMPAD_MULTIPLY);
define(KeyboardEventCode.NumpadSubtract, KeyCode.NUMPAD_SUBTRACT);
define(KeyboardEventCode.NumpadAdd, KeyCode.NUMPAD_ADD);
define(KeyboardEventCode.NumpadEnter, KeyCode.Enter); // TODO
define(KeyboardEventCode.Numpad1, KeyCode.NUMPAD_1);
define(KeyboardEventCode.Numpad2, KeyCode.NUMPAD_2);
define(KeyboardEventCode.Numpad3, KeyCode.NUMPAD_3);
define(KeyboardEventCode.Numpad4, KeyCode.NUMPAD_4);
define(KeyboardEventCode.Numpad5, KeyCode.NUMPAD_5);
define(KeyboardEventCode.Numpad6, KeyCode.NUMPAD_6);
define(KeyboardEventCode.Numpad7, KeyCode.NUMPAD_7);
define(KeyboardEventCode.Numpad8, KeyCode.NUMPAD_8);
define(KeyboardEventCode.Numpad9, KeyCode.NUMPAD_9);
define(KeyboardEventCode.Numpad0, KeyCode.NUMPAD_0);
define(KeyboardEventCode.NumpadDecimal, KeyCode.NUMPAD_DECIMAL);
// define(KeyboardEventCode.IntlBackslash, KeyCode.Unknown);
define(KeyboardEventCode.ContextMenu, KeyCode.ContextMenu);
define(KeyboardEventCode.Power, KeyCode.Unknown);
define(KeyboardEventCode.NumpadEqual, KeyCode.Unknown);
define(KeyboardEventCode.F13, KeyCode.F13);
define(KeyboardEventCode.F14, KeyCode.F14);
define(KeyboardEventCode.F15, KeyCode.F15);
define(KeyboardEventCode.F16, KeyCode.F16);
define(KeyboardEventCode.F17, KeyCode.F17);
define(KeyboardEventCode.F18, KeyCode.F18);
define(KeyboardEventCode.F19, KeyCode.F19);
define(KeyboardEventCode.F20, KeyCode.Unknown);
define(KeyboardEventCode.F21, KeyCode.Unknown);
define(KeyboardEventCode.F22, KeyCode.Unknown);
define(KeyboardEventCode.F23, KeyCode.Unknown);
define(KeyboardEventCode.F24, KeyCode.Unknown);
define(KeyboardEventCode.Open, KeyCode.Unknown);
define(KeyboardEventCode.Help, KeyCode.Unknown);
define(KeyboardEventCode.Select, KeyCode.Unknown);
define(KeyboardEventCode.Again, KeyCode.Unknown);
define(KeyboardEventCode.Undo, KeyCode.Unknown);
define(KeyboardEventCode.Cut, KeyCode.Unknown);
define(KeyboardEventCode.Copy, KeyCode.Unknown);
define(KeyboardEventCode.Paste, KeyCode.Unknown);
define(KeyboardEventCode.Find, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeMute, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeUp, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeDown, KeyCode.Unknown);
define(KeyboardEventCode.NumpadComma, KeyCode.NUMPAD_SEPARATOR);
define(KeyboardEventCode.IntlRo, KeyCode.Unknown);
define(KeyboardEventCode.KanaMode, KeyCode.Unknown);
define(KeyboardEventCode.IntlYen, KeyCode.Unknown);
define(KeyboardEventCode.Convert, KeyCode.Unknown);
define(KeyboardEventCode.NonConvert, KeyCode.Unknown);
define(KeyboardEventCode.Lang1, KeyCode.Unknown);
define(KeyboardEventCode.Lang2, KeyCode.Unknown);
define(KeyboardEventCode.Lang3, KeyCode.Unknown);
define(KeyboardEventCode.Lang4, KeyCode.Unknown);
define(KeyboardEventCode.Lang5, KeyCode.Unknown);
define(KeyboardEventCode.Abort, KeyCode.Unknown);
define(KeyboardEventCode.Props, KeyCode.Unknown);
define(KeyboardEventCode.NumpadParenLeft, KeyCode.Unknown);
define(KeyboardEventCode.NumpadParenRight, KeyCode.Unknown);
define(KeyboardEventCode.NumpadBackspace, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryStore, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryRecall, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryClear, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryAdd, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemorySubtract, KeyCode.Unknown);
define(KeyboardEventCode.NumpadClear, KeyCode.Unknown);
define(KeyboardEventCode.NumpadClearEntry, KeyCode.Unknown);
define(KeyboardEventCode.ControlLeft, KeyCode.Ctrl); // TODO
define(KeyboardEventCode.ShiftLeft, KeyCode.Shift); // TODO
define(KeyboardEventCode.AltLeft, KeyCode.Alt); // TODO
define(KeyboardEventCode.MetaLeft, KeyCode.Meta); // TODO
define(KeyboardEventCode.ControlRight, KeyCode.Ctrl); // TODO
define(KeyboardEventCode.ShiftRight, KeyCode.Shift); // TODO
define(KeyboardEventCode.AltRight, KeyCode.Alt); // TODO
define(KeyboardEventCode.MetaRight, KeyCode.Meta); // TODO
define(KeyboardEventCode.BrightnessUp, KeyCode.Unknown);
define(KeyboardEventCode.BrightnessDown, KeyCode.Unknown);
define(KeyboardEventCode.MediaPlay, KeyCode.Unknown);
define(KeyboardEventCode.MediaRecord, KeyCode.Unknown);
define(KeyboardEventCode.MediaFastForward, KeyCode.Unknown);
define(KeyboardEventCode.MediaRewind, KeyCode.Unknown);
define(KeyboardEventCode.MediaTrackNext, KeyCode.Unknown);
define(KeyboardEventCode.MediaTrackPrevious, KeyCode.Unknown);
define(KeyboardEventCode.MediaStop, KeyCode.Unknown);
define(KeyboardEventCode.Eject, KeyCode.Unknown);
define(KeyboardEventCode.MediaPlayPause, KeyCode.Unknown);
define(KeyboardEventCode.MediaSelect, KeyCode.Unknown);
define(KeyboardEventCode.LaunchMail, KeyCode.Unknown);
define(KeyboardEventCode.LaunchApp2, KeyCode.Unknown);
define(KeyboardEventCode.LaunchApp1, KeyCode.Unknown);
define(KeyboardEventCode.SelectTask, KeyCode.Unknown);
define(KeyboardEventCode.LaunchScreenSaver, KeyCode.Unknown);
define(KeyboardEventCode.BrowserSearch, KeyCode.Unknown);
define(KeyboardEventCode.BrowserHome, KeyCode.Unknown);
define(KeyboardEventCode.BrowserBack, KeyCode.Unknown);
define(KeyboardEventCode.BrowserForward, KeyCode.Unknown);
define(KeyboardEventCode.BrowserStop, KeyCode.Unknown);
define(KeyboardEventCode.BrowserRefresh, KeyCode.Unknown);
define(KeyboardEventCode.BrowserFavorites, KeyCode.Unknown);
define(KeyboardEventCode.ZoomToggle, KeyCode.Unknown);
define(KeyboardEventCode.MailReply, KeyCode.Unknown);
define(KeyboardEventCode.MailForward, KeyCode.Unknown);
define(KeyboardEventCode.MailSend, KeyCode.Unknown);
})();
......@@ -7,7 +7,7 @@
import { OperatingSystem } from 'vs/base/common/platform';
import { SimpleKeybinding, KeyCode, ResolvedKeybinding, Keybinding, KeyCodeUtils, KeyMod } from 'vs/base/common/keyCodes';
import { KeyboardEventCode, KeyboardEventCodeUtils } from 'vs/workbench/services/keybinding/common/keyboardEventCode';
import { KeyboardEventCode, KeyboardEventCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from 'vs/workbench/services/keybinding/common/keyboardEventCode';
import { CharCode } from 'vs/base/common/charCode';
import { IHTMLContentElement } from 'vs/base/common/htmlContent';
import { PrintableKeypress, UILabelProvider, AriaLabelProvider } from 'vs/platform/keybinding/common/keybindingLabels';
......@@ -35,10 +35,6 @@ function log(str: string): void {
}
}
/**
* -1 if a HwCode => KeyCode mapping depends on kb layout.
*/
const IMMUTABLE_CODE_TO_KEY_CODE: KeyCode[] = [];
const CHAR_CODE_TO_KEY_CODE: { keyCode: KeyCode; shiftKey: boolean }[] = [];
export class HardwareKeypress {
......@@ -575,210 +571,6 @@ export class KeyboardMapper {
}
}
(function () {
for (let i = 0; i <= KeyboardEventCode.MAX_VALUE; i++) {
IMMUTABLE_CODE_TO_KEY_CODE[i] = -1;
}
function define(code: KeyboardEventCode, keyCode: KeyCode): void {
IMMUTABLE_CODE_TO_KEY_CODE[code] = keyCode;
}
define(KeyboardEventCode.None, KeyCode.Unknown);
define(KeyboardEventCode.Hyper, KeyCode.Unknown);
define(KeyboardEventCode.Super, KeyCode.Unknown);
define(KeyboardEventCode.Fn, KeyCode.Unknown);
define(KeyboardEventCode.FnLock, KeyCode.Unknown);
define(KeyboardEventCode.Suspend, KeyCode.Unknown);
define(KeyboardEventCode.Resume, KeyCode.Unknown);
define(KeyboardEventCode.Turbo, KeyCode.Unknown);
define(KeyboardEventCode.Sleep, KeyCode.Unknown);
define(KeyboardEventCode.WakeUp, KeyCode.Unknown);
// define(KeyboardEventCode.KeyA, KeyCode.Unknown);
// define(KeyboardEventCode.KeyB, KeyCode.Unknown);
// define(KeyboardEventCode.KeyC, KeyCode.Unknown);
// define(KeyboardEventCode.KeyD, KeyCode.Unknown);
// define(KeyboardEventCode.KeyE, KeyCode.Unknown);
// define(KeyboardEventCode.KeyF, KeyCode.Unknown);
// define(KeyboardEventCode.KeyG, KeyCode.Unknown);
// define(KeyboardEventCode.KeyH, KeyCode.Unknown);
// define(KeyboardEventCode.KeyI, KeyCode.Unknown);
// define(KeyboardEventCode.KeyJ, KeyCode.Unknown);
// define(KeyboardEventCode.KeyK, KeyCode.Unknown);
// define(KeyboardEventCode.KeyL, KeyCode.Unknown);
// define(KeyboardEventCode.KeyM, KeyCode.Unknown);
// define(KeyboardEventCode.KeyN, KeyCode.Unknown);
// define(KeyboardEventCode.KeyO, KeyCode.Unknown);
// define(KeyboardEventCode.KeyP, KeyCode.Unknown);
// define(KeyboardEventCode.KeyQ, KeyCode.Unknown);
// define(KeyboardEventCode.KeyR, KeyCode.Unknown);
// define(KeyboardEventCode.KeyS, KeyCode.Unknown);
// define(KeyboardEventCode.KeyT, KeyCode.Unknown);
// define(KeyboardEventCode.KeyU, KeyCode.Unknown);
// define(KeyboardEventCode.KeyV, KeyCode.Unknown);
// define(KeyboardEventCode.KeyW, KeyCode.Unknown);
// define(KeyboardEventCode.KeyX, KeyCode.Unknown);
// define(KeyboardEventCode.KeyY, KeyCode.Unknown);
// define(KeyboardEventCode.KeyZ, KeyCode.Unknown);
// define(KeyboardEventCode.Digit1, KeyCode.Unknown);
// define(KeyboardEventCode.Digit2, KeyCode.Unknown);
// define(KeyboardEventCode.Digit3, KeyCode.Unknown);
// define(KeyboardEventCode.Digit4, KeyCode.Unknown);
// define(KeyboardEventCode.Digit5, KeyCode.Unknown);
// define(KeyboardEventCode.Digit6, KeyCode.Unknown);
// define(KeyboardEventCode.Digit7, KeyCode.Unknown);
// define(KeyboardEventCode.Digit8, KeyCode.Unknown);
// define(KeyboardEventCode.Digit9, KeyCode.Unknown);
// define(KeyboardEventCode.Digit0, KeyCode.Unknown);
define(KeyboardEventCode.Enter, KeyCode.Enter);
define(KeyboardEventCode.Escape, KeyCode.Escape);
define(KeyboardEventCode.Backspace, KeyCode.Backspace);
define(KeyboardEventCode.Tab, KeyCode.Tab);
define(KeyboardEventCode.Space, KeyCode.Space);
// define(KeyboardEventCode.Minus, KeyCode.Unknown);
// define(KeyboardEventCode.Equal, KeyCode.Unknown);
// define(KeyboardEventCode.BracketLeft, KeyCode.Unknown);
// define(KeyboardEventCode.BracketRight, KeyCode.Unknown);
// define(KeyboardEventCode.Backslash, KeyCode.Unknown);
// define(KeyboardEventCode.IntlHash, KeyCode.Unknown);
// define(KeyboardEventCode.Semicolon, KeyCode.Unknown);
// define(KeyboardEventCode.Quote, KeyCode.Unknown);
// define(KeyboardEventCode.Backquote, KeyCode.Unknown);
// define(KeyboardEventCode.Comma, KeyCode.Unknown);
// define(KeyboardEventCode.Period, KeyCode.Unknown);
// define(KeyboardEventCode.Slash, KeyCode.Unknown);
define(KeyboardEventCode.CapsLock, KeyCode.CapsLock);
define(KeyboardEventCode.F1, KeyCode.F1);
define(KeyboardEventCode.F2, KeyCode.F2);
define(KeyboardEventCode.F3, KeyCode.F3);
define(KeyboardEventCode.F4, KeyCode.F4);
define(KeyboardEventCode.F5, KeyCode.F5);
define(KeyboardEventCode.F6, KeyCode.F6);
define(KeyboardEventCode.F7, KeyCode.F7);
define(KeyboardEventCode.F8, KeyCode.F8);
define(KeyboardEventCode.F9, KeyCode.F9);
define(KeyboardEventCode.F10, KeyCode.F10);
define(KeyboardEventCode.F11, KeyCode.F11);
define(KeyboardEventCode.F12, KeyCode.F12);
define(KeyboardEventCode.PrintScreen, KeyCode.Unknown);
define(KeyboardEventCode.ScrollLock, KeyCode.ScrollLock);
define(KeyboardEventCode.Pause, KeyCode.PauseBreak);
define(KeyboardEventCode.Insert, KeyCode.Insert);
define(KeyboardEventCode.Home, KeyCode.Home);
define(KeyboardEventCode.PageUp, KeyCode.PageUp);
define(KeyboardEventCode.Delete, KeyCode.Delete);
define(KeyboardEventCode.End, KeyCode.End);
define(KeyboardEventCode.PageDown, KeyCode.PageDown);
define(KeyboardEventCode.ArrowRight, KeyCode.RightArrow);
define(KeyboardEventCode.ArrowLeft, KeyCode.LeftArrow);
define(KeyboardEventCode.ArrowDown, KeyCode.DownArrow);
define(KeyboardEventCode.ArrowUp, KeyCode.UpArrow);
define(KeyboardEventCode.NumLock, KeyCode.NumLock);
define(KeyboardEventCode.NumpadDivide, KeyCode.NUMPAD_DIVIDE);
define(KeyboardEventCode.NumpadMultiply, KeyCode.NUMPAD_MULTIPLY);
define(KeyboardEventCode.NumpadSubtract, KeyCode.NUMPAD_SUBTRACT);
define(KeyboardEventCode.NumpadAdd, KeyCode.NUMPAD_ADD);
define(KeyboardEventCode.NumpadEnter, KeyCode.Enter); // TODO
define(KeyboardEventCode.Numpad1, KeyCode.NUMPAD_1);
define(KeyboardEventCode.Numpad2, KeyCode.NUMPAD_2);
define(KeyboardEventCode.Numpad3, KeyCode.NUMPAD_3);
define(KeyboardEventCode.Numpad4, KeyCode.NUMPAD_4);
define(KeyboardEventCode.Numpad5, KeyCode.NUMPAD_5);
define(KeyboardEventCode.Numpad6, KeyCode.NUMPAD_6);
define(KeyboardEventCode.Numpad7, KeyCode.NUMPAD_7);
define(KeyboardEventCode.Numpad8, KeyCode.NUMPAD_8);
define(KeyboardEventCode.Numpad9, KeyCode.NUMPAD_9);
define(KeyboardEventCode.Numpad0, KeyCode.NUMPAD_0);
define(KeyboardEventCode.NumpadDecimal, KeyCode.NUMPAD_DECIMAL);
// define(KeyboardEventCode.IntlBackslash, KeyCode.Unknown);
define(KeyboardEventCode.ContextMenu, KeyCode.ContextMenu);
define(KeyboardEventCode.Power, KeyCode.Unknown);
define(KeyboardEventCode.NumpadEqual, KeyCode.Unknown);
define(KeyboardEventCode.F13, KeyCode.F13);
define(KeyboardEventCode.F14, KeyCode.F14);
define(KeyboardEventCode.F15, KeyCode.F15);
define(KeyboardEventCode.F16, KeyCode.F16);
define(KeyboardEventCode.F17, KeyCode.F17);
define(KeyboardEventCode.F18, KeyCode.F18);
define(KeyboardEventCode.F19, KeyCode.F19);
define(KeyboardEventCode.F20, KeyCode.Unknown);
define(KeyboardEventCode.F21, KeyCode.Unknown);
define(KeyboardEventCode.F22, KeyCode.Unknown);
define(KeyboardEventCode.F23, KeyCode.Unknown);
define(KeyboardEventCode.F24, KeyCode.Unknown);
define(KeyboardEventCode.Open, KeyCode.Unknown);
define(KeyboardEventCode.Help, KeyCode.Unknown);
define(KeyboardEventCode.Select, KeyCode.Unknown);
define(KeyboardEventCode.Again, KeyCode.Unknown);
define(KeyboardEventCode.Undo, KeyCode.Unknown);
define(KeyboardEventCode.Cut, KeyCode.Unknown);
define(KeyboardEventCode.Copy, KeyCode.Unknown);
define(KeyboardEventCode.Paste, KeyCode.Unknown);
define(KeyboardEventCode.Find, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeMute, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeUp, KeyCode.Unknown);
define(KeyboardEventCode.AudioVolumeDown, KeyCode.Unknown);
define(KeyboardEventCode.NumpadComma, KeyCode.NUMPAD_SEPARATOR);
define(KeyboardEventCode.IntlRo, KeyCode.Unknown);
define(KeyboardEventCode.KanaMode, KeyCode.Unknown);
define(KeyboardEventCode.IntlYen, KeyCode.Unknown);
define(KeyboardEventCode.Convert, KeyCode.Unknown);
define(KeyboardEventCode.NonConvert, KeyCode.Unknown);
define(KeyboardEventCode.Lang1, KeyCode.Unknown);
define(KeyboardEventCode.Lang2, KeyCode.Unknown);
define(KeyboardEventCode.Lang3, KeyCode.Unknown);
define(KeyboardEventCode.Lang4, KeyCode.Unknown);
define(KeyboardEventCode.Lang5, KeyCode.Unknown);
define(KeyboardEventCode.Abort, KeyCode.Unknown);
define(KeyboardEventCode.Props, KeyCode.Unknown);
define(KeyboardEventCode.NumpadParenLeft, KeyCode.Unknown);
define(KeyboardEventCode.NumpadParenRight, KeyCode.Unknown);
define(KeyboardEventCode.NumpadBackspace, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryStore, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryRecall, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryClear, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemoryAdd, KeyCode.Unknown);
define(KeyboardEventCode.NumpadMemorySubtract, KeyCode.Unknown);
define(KeyboardEventCode.NumpadClear, KeyCode.Unknown);
define(KeyboardEventCode.NumpadClearEntry, KeyCode.Unknown);
define(KeyboardEventCode.ControlLeft, KeyCode.Ctrl); // TODO
define(KeyboardEventCode.ShiftLeft, KeyCode.Shift); // TODO
define(KeyboardEventCode.AltLeft, KeyCode.Alt); // TODO
define(KeyboardEventCode.MetaLeft, KeyCode.Meta); // TODO
define(KeyboardEventCode.ControlRight, KeyCode.Ctrl); // TODO
define(KeyboardEventCode.ShiftRight, KeyCode.Shift); // TODO
define(KeyboardEventCode.AltRight, KeyCode.Alt); // TODO
define(KeyboardEventCode.MetaRight, KeyCode.Meta); // TODO
define(KeyboardEventCode.BrightnessUp, KeyCode.Unknown);
define(KeyboardEventCode.BrightnessDown, KeyCode.Unknown);
define(KeyboardEventCode.MediaPlay, KeyCode.Unknown);
define(KeyboardEventCode.MediaRecord, KeyCode.Unknown);
define(KeyboardEventCode.MediaFastForward, KeyCode.Unknown);
define(KeyboardEventCode.MediaRewind, KeyCode.Unknown);
define(KeyboardEventCode.MediaTrackNext, KeyCode.Unknown);
define(KeyboardEventCode.MediaTrackPrevious, KeyCode.Unknown);
define(KeyboardEventCode.MediaStop, KeyCode.Unknown);
define(KeyboardEventCode.Eject, KeyCode.Unknown);
define(KeyboardEventCode.MediaPlayPause, KeyCode.Unknown);
define(KeyboardEventCode.MediaSelect, KeyCode.Unknown);
define(KeyboardEventCode.LaunchMail, KeyCode.Unknown);
define(KeyboardEventCode.LaunchApp2, KeyCode.Unknown);
define(KeyboardEventCode.LaunchApp1, KeyCode.Unknown);
define(KeyboardEventCode.SelectTask, KeyCode.Unknown);
define(KeyboardEventCode.LaunchScreenSaver, KeyCode.Unknown);
define(KeyboardEventCode.BrowserSearch, KeyCode.Unknown);
define(KeyboardEventCode.BrowserHome, KeyCode.Unknown);
define(KeyboardEventCode.BrowserBack, KeyCode.Unknown);
define(KeyboardEventCode.BrowserForward, KeyCode.Unknown);
define(KeyboardEventCode.BrowserStop, KeyCode.Unknown);
define(KeyboardEventCode.BrowserRefresh, KeyCode.Unknown);
define(KeyboardEventCode.BrowserFavorites, KeyCode.Unknown);
define(KeyboardEventCode.ZoomToggle, KeyCode.Unknown);
define(KeyboardEventCode.MailReply, KeyCode.Unknown);
define(KeyboardEventCode.MailForward, KeyCode.Unknown);
define(KeyboardEventCode.MailSend, KeyCode.Unknown);
})();
(function () {
function define(charCode: number, keyCode: KeyCode, shiftKey: boolean): void {
for (let i = CHAR_CODE_TO_KEY_CODE.length; i < charCode; i++) {
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { KeyCode, KeyCodeUtils } from 'vs/base/common/keyCodes';
import { KeyboardEventCode, KeyboardEventCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from 'vs/workbench/services/keybinding/common/keyboardEventCode';
import { CharCode } from 'vs/base/common/charCode';
export interface IKeyMapping {
vkey: string;
value: string;
withShift: string;
withAltGr: string;
withShiftAltGr: string;
}
export interface IKeyboardMapping {
[code: string]: IKeyMapping;
}
const LOG = false;
function log(str: string): void {
if (LOG) {
console.info(str);
}
}
const NATIVE_KEY_CODE_TO_KEY_CODE: { [nativeKeyCode: string]: KeyCode; } = _getNativeMap();
interface IHardwareCodeMapping {
code: KeyboardEventCode;
keyCode: KeyCode;
value: number;
withShift: number;
withAltGr: number;
withShiftAltGr: number;
}
export class WindowsKeyboardMapper {
private readonly _codeInfo: IHardwareCodeMapping[];
private readonly _hwToKb: KeyCode[];
private readonly _hwToLabel: string[] = [];
constructor(rawMappings: IKeyboardMapping) {
this._hwToKb = [];
this._hwToLabel = [];
for (let code = KeyboardEventCode.None; code < KeyboardEventCode.MAX_VALUE; code++) {
const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[code];
if (immutableKeyCode !== -1) {
this._hwToKb[code] = immutableKeyCode;
this._hwToLabel[code] = KeyCodeUtils.toString(immutableKeyCode);
}
}
this._codeInfo = [];
for (let strCode in rawMappings) {
if (rawMappings.hasOwnProperty(strCode)) {
const code = KeyboardEventCodeUtils.toEnum(strCode);
if (code === KeyboardEventCode.None) {
log(`Unknown code ${strCode} in mapping.`);
continue;
}
if (IMMUTABLE_CODE_TO_KEY_CODE[code] !== -1) {
continue;
}
const rawMapping = rawMappings[strCode];
const value = WindowsKeyboardMapper._getCharCode(rawMapping.value);
const withShift = WindowsKeyboardMapper._getCharCode(rawMapping.withShift);
const withAltGr = WindowsKeyboardMapper._getCharCode(rawMapping.withAltGr);
const withShiftAltGr = WindowsKeyboardMapper._getCharCode(rawMapping.withShiftAltGr);
const keyCode = NATIVE_KEY_CODE_TO_KEY_CODE[rawMapping.vkey] || KeyCode.Unknown;
const mapping: IHardwareCodeMapping = {
code: code,
keyCode: keyCode,
value: value,
withShift: withShift,
withAltGr: withAltGr,
withShiftAltGr: withShiftAltGr,
};
this._codeInfo[code] = mapping;
if (value >= CharCode.a && value <= CharCode.z) {
this._hwToLabel[code] = String.fromCharCode(CharCode.A + (value - CharCode.a));
} else if (value) {
this._hwToLabel[code] = String.fromCharCode(value);
} else {
this._hwToLabel[code] = null;
}
this._hwToKb[code] = keyCode;
}
}
}
public dumpDebugInfo(): string {
let result: string[] = [];
let cnt = 0;
for (let code = KeyboardEventCode.None; code < KeyboardEventCode.MAX_VALUE; code++) {
if (IMMUTABLE_CODE_TO_KEY_CODE[code] !== -1) {
continue;
}
if (cnt % 5 === 0) {
result.push(`--------------------------------------------------------------------------------------------------`);
result.push(`| HW Code combination | Key | KeyCode combination | UI label |`);
result.push(`--------------------------------------------------------------------------------------------------`);
}
cnt++;
const mapping = this._codeInfo[code];
const strCode = KeyboardEventCodeUtils.toString(code);
const uiLabel = this._hwToLabel[code];
let mods = [0b000, 0b010, 0b101, 0b111];
for (let modIndex = 0; modIndex < mods.length; modIndex++) {
const mod = mods[modIndex];
const ctrlKey = (mod & 0b001) ? true : false;
const shiftKey = (mod & 0b010) ? true : false;
const altKey = (mod & 0b100) ? true : false;
const strHw = `${ctrlKey ? 'Ctrl+' : ''}${shiftKey ? 'Shift+' : ''}${altKey ? 'Alt+' : ''}${strCode}`;
const uiHwLabel = `${ctrlKey ? 'Ctrl+' : ''}${shiftKey ? 'Shift+' : ''}${altKey ? 'Alt+' : ''}${uiLabel}`;
let key = 0;
if (mapping) {
if (ctrlKey && shiftKey && altKey) {
key = mapping.withShiftAltGr;
} else if (ctrlKey && altKey) {
key = mapping.withAltGr;
} else if (shiftKey) {
key = mapping.withShift;
} else {
key = mapping.value;
}
}
let strKey: string = ' --- ';
if (key !== 0) {
if (key >= CharCode.U_Combining_Grave_Accent && key <= CharCode.U_Combining_Latin_Small_Letter_X) {
// combining
strKey = 'U+' + key.toString(16);
} else {
strKey = ' ' + String.fromCharCode(key) + ' ';
}
}
const keyCode = this._hwToKb[code];
const strKb = `${ctrlKey ? 'Ctrl+' : ''}${shiftKey ? 'Shift+' : ''}${altKey ? 'Alt+' : ''}${KeyCodeUtils.toString(keyCode)}`;
result.push(`| ${this._leftPad(strHw, 30)} | ${strKey} | ${this._leftPad(strKb, 25)} | ${this._leftPad(uiHwLabel, 25)} |`);
}
}
result.push(`--------------------------------------------------------------------------------------------------`);
return result.join('\n');
}
private _leftPad(str: string, cnt: number): string {
while (str.length < cnt) {
str = ' ' + str;
}
return str;
}
private static _getCharCode(char: string): number {
if (char.length === 0) {
return 0;
}
return char.charCodeAt(0);
}
}
// See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
// See https://github.com/Microsoft/node-native-keymap/blob/master/deps/chromium/keyboard_codes_win.h
function _getNativeMap() {
return {
VK_BACK: KeyCode.Backspace,
VK_TAB: KeyCode.Tab,
VK_CLEAR: KeyCode.Unknown, // MISSING
VK_RETURN: KeyCode.Enter,
VK_SHIFT: KeyCode.Shift,
VK_CONTROL: KeyCode.Ctrl,
VK_MENU: KeyCode.Alt,
VK_PAUSE: KeyCode.PauseBreak,
VK_CAPITAL: KeyCode.CapsLock,
VK_KANA: KeyCode.Unknown, // MISSING
VK_HANGUL: KeyCode.Unknown, // MISSING
VK_JUNJA: KeyCode.Unknown, // MISSING
VK_FINAL: KeyCode.Unknown, // MISSING
VK_HANJA: KeyCode.Unknown, // MISSING
VK_KANJI: KeyCode.Unknown, // MISSING
VK_ESCAPE: KeyCode.Escape,
VK_CONVERT: KeyCode.Unknown, // MISSING
VK_NONCONVERT: KeyCode.Unknown, // MISSING
VK_ACCEPT: KeyCode.Unknown, // MISSING
VK_MODECHANGE: KeyCode.Unknown, // MISSING
VK_SPACE: KeyCode.Space,
VK_PRIOR: KeyCode.PageUp,
VK_NEXT: KeyCode.PageDown,
VK_END: KeyCode.End,
VK_HOME: KeyCode.Home,
VK_LEFT: KeyCode.LeftArrow,
VK_UP: KeyCode.UpArrow,
VK_RIGHT: KeyCode.RightArrow,
VK_DOWN: KeyCode.DownArrow,
VK_SELECT: KeyCode.Unknown, // MISSING
VK_PRINT: KeyCode.Unknown, // MISSING
VK_EXECUTE: KeyCode.Unknown, // MISSING
VK_SNAPSHOT: KeyCode.Unknown, // MISSING
VK_INSERT: KeyCode.Insert,
VK_DELETE: KeyCode.Delete,
VK_HELP: KeyCode.Unknown, // MISSING
VK_0: KeyCode.KEY_0,
VK_1: KeyCode.KEY_1,
VK_2: KeyCode.KEY_2,
VK_3: KeyCode.KEY_3,
VK_4: KeyCode.KEY_4,
VK_5: KeyCode.KEY_5,
VK_6: KeyCode.KEY_6,
VK_7: KeyCode.KEY_7,
VK_8: KeyCode.KEY_8,
VK_9: KeyCode.KEY_9,
VK_A: KeyCode.KEY_A,
VK_B: KeyCode.KEY_B,
VK_C: KeyCode.KEY_C,
VK_D: KeyCode.KEY_D,
VK_E: KeyCode.KEY_E,
VK_F: KeyCode.KEY_F,
VK_G: KeyCode.KEY_G,
VK_H: KeyCode.KEY_H,
VK_I: KeyCode.KEY_I,
VK_J: KeyCode.KEY_J,
VK_K: KeyCode.KEY_K,
VK_L: KeyCode.KEY_L,
VK_M: KeyCode.KEY_M,
VK_N: KeyCode.KEY_N,
VK_O: KeyCode.KEY_O,
VK_P: KeyCode.KEY_P,
VK_Q: KeyCode.KEY_Q,
VK_R: KeyCode.KEY_R,
VK_S: KeyCode.KEY_S,
VK_T: KeyCode.KEY_T,
VK_U: KeyCode.KEY_U,
VK_V: KeyCode.KEY_V,
VK_W: KeyCode.KEY_W,
VK_X: KeyCode.KEY_X,
VK_Y: KeyCode.KEY_Y,
VK_Z: KeyCode.KEY_Z,
VK_LWIN: KeyCode.Meta,
VK_COMMAND: KeyCode.Meta,
VK_RWIN: KeyCode.Meta,
VK_APPS: KeyCode.Unknown, // MISSING
VK_SLEEP: KeyCode.Unknown, // MISSING
VK_NUMPAD0: KeyCode.NUMPAD_0,
VK_NUMPAD1: KeyCode.NUMPAD_1,
VK_NUMPAD2: KeyCode.NUMPAD_2,
VK_NUMPAD3: KeyCode.NUMPAD_3,
VK_NUMPAD4: KeyCode.NUMPAD_4,
VK_NUMPAD5: KeyCode.NUMPAD_5,
VK_NUMPAD6: KeyCode.NUMPAD_6,
VK_NUMPAD7: KeyCode.NUMPAD_7,
VK_NUMPAD8: KeyCode.NUMPAD_8,
VK_NUMPAD9: KeyCode.NUMPAD_9,
VK_MULTIPLY: KeyCode.NUMPAD_MULTIPLY,
VK_ADD: KeyCode.NUMPAD_ADD,
VK_SEPARATOR: KeyCode.NUMPAD_SEPARATOR,
VK_SUBTRACT: KeyCode.NUMPAD_SUBTRACT,
VK_DECIMAL: KeyCode.NUMPAD_DECIMAL,
VK_DIVIDE: KeyCode.NUMPAD_DIVIDE,
VK_F1: KeyCode.F1,
VK_F2: KeyCode.F2,
VK_F3: KeyCode.F3,
VK_F4: KeyCode.F4,
VK_F5: KeyCode.F5,
VK_F6: KeyCode.F6,
VK_F7: KeyCode.F7,
VK_F8: KeyCode.F8,
VK_F9: KeyCode.F9,
VK_F10: KeyCode.F10,
VK_F11: KeyCode.F11,
VK_F12: KeyCode.F12,
VK_F13: KeyCode.F13,
VK_F14: KeyCode.F14,
VK_F15: KeyCode.F15,
VK_F16: KeyCode.F16,
VK_F17: KeyCode.F17,
VK_F18: KeyCode.F18,
VK_F19: KeyCode.F19,
VK_F20: KeyCode.Unknown, // MISSING
VK_F21: KeyCode.Unknown, // MISSING
VK_F22: KeyCode.Unknown, // MISSING
VK_F23: KeyCode.Unknown, // MISSING
VK_F24: KeyCode.Unknown, // MISSING
VK_NUMLOCK: KeyCode.NumLock,
VK_SCROLL: KeyCode.ScrollLock,
VK_LSHIFT: KeyCode.Shift,
VK_RSHIFT: KeyCode.Shift,
VK_LCONTROL: KeyCode.Ctrl,
VK_RCONTROL: KeyCode.Ctrl,
VK_LMENU: KeyCode.Unknown, // MISSING
VK_RMENU: KeyCode.Unknown, // MISSING
VK_BROWSER_BACK: KeyCode.Unknown, // MISSING
VK_BROWSER_FORWARD: KeyCode.Unknown, // MISSING
VK_BROWSER_REFRESH: KeyCode.Unknown, // MISSING
VK_BROWSER_STOP: KeyCode.Unknown, // MISSING
VK_BROWSER_SEARCH: KeyCode.Unknown, // MISSING
VK_BROWSER_FAVORITES: KeyCode.Unknown, // MISSING
VK_BROWSER_HOME: KeyCode.Unknown, // MISSING
VK_VOLUME_MUTE: KeyCode.Unknown, // MISSING
VK_VOLUME_DOWN: KeyCode.Unknown, // MISSING
VK_VOLUME_UP: KeyCode.Unknown, // MISSING
VK_MEDIA_NEXT_TRACK: KeyCode.Unknown, // MISSING
VK_MEDIA_PREV_TRACK: KeyCode.Unknown, // MISSING
VK_MEDIA_STOP: KeyCode.Unknown, // MISSING
VK_MEDIA_PLAY_PAUSE: KeyCode.Unknown, // MISSING
VK_MEDIA_LAUNCH_MAIL: KeyCode.Unknown, // MISSING
VK_MEDIA_LAUNCH_MEDIA_SELECT: KeyCode.Unknown, // MISSING
VK_MEDIA_LAUNCH_APP1: KeyCode.Unknown, // MISSING
VK_MEDIA_LAUNCH_APP2: KeyCode.Unknown, // MISSING
VK_OEM_1: KeyCode.US_SEMICOLON,
VK_OEM_PLUS: KeyCode.US_EQUAL,
VK_OEM_COMMA: KeyCode.US_COMMA,
VK_OEM_MINUS: KeyCode.US_MINUS,
VK_OEM_PERIOD: KeyCode.US_DOT,
VK_OEM_2: KeyCode.US_SLASH,
VK_OEM_3: KeyCode.US_BACKTICK,
VK_OEM_4: KeyCode.US_OPEN_SQUARE_BRACKET,
VK_OEM_5: KeyCode.US_BACKSLASH,
VK_OEM_6: KeyCode.US_CLOSE_SQUARE_BRACKET,
VK_OEM_7: KeyCode.US_QUOTE,
VK_OEM_8: KeyCode.OEM_8,
VK_OEM_102: KeyCode.OEM_102,
VK_PROCESSKEY: KeyCode.Unknown, // MISSING
VK_PACKET: KeyCode.Unknown, // MISSING
VK_DBE_SBCSCHAR: KeyCode.Unknown, // MISSING
VK_DBE_DBCSCHAR: KeyCode.Unknown, // MISSING
VK_ATTN: KeyCode.Unknown, // MISSING
VK_CRSEL: KeyCode.Unknown, // MISSING
VK_EXSEL: KeyCode.Unknown, // MISSING
VK_EREOF: KeyCode.Unknown, // MISSING
VK_PLAY: KeyCode.Unknown, // MISSING
VK_ZOOM: KeyCode.Unknown, // MISSING
VK_NONAME: KeyCode.Unknown, // MISSING
VK_PA1: KeyCode.Unknown, // MISSING
VK_OEM_CLEAR: KeyCode.Unknown, // MISSING
VK_UNKNOWN: KeyCode.Unknown,
};
}
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
define({
Sleep: {
vkey: 'VK_SLEEP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
WakeUp: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
KeyA: {
vkey: 'VK_A',
value: 'a',
withShift: 'A',
withAltGr: '',
withShiftAltGr: ''
},
KeyB: {
vkey: 'VK_B',
value: 'b',
withShift: 'B',
withAltGr: '',
withShiftAltGr: ''
},
KeyC: {
vkey: 'VK_C',
value: 'c',
withShift: 'C',
withAltGr: '',
withShiftAltGr: ''
},
KeyD: {
vkey: 'VK_D',
value: 'd',
withShift: 'D',
withAltGr: '',
withShiftAltGr: ''
},
KeyE: {
vkey: 'VK_E',
value: 'e',
withShift: 'E',
withAltGr: '',
withShiftAltGr: ''
},
KeyF: {
vkey: 'VK_F',
value: 'f',
withShift: 'F',
withAltGr: '',
withShiftAltGr: ''
},
KeyG: {
vkey: 'VK_G',
value: 'g',
withShift: 'G',
withAltGr: '',
withShiftAltGr: ''
},
KeyH: {
vkey: 'VK_H',
value: 'h',
withShift: 'H',
withAltGr: '',
withShiftAltGr: ''
},
KeyI: {
vkey: 'VK_I',
value: 'i',
withShift: 'I',
withAltGr: '',
withShiftAltGr: ''
},
KeyJ: {
vkey: 'VK_J',
value: 'j',
withShift: 'J',
withAltGr: '',
withShiftAltGr: ''
},
KeyK: {
vkey: 'VK_K',
value: 'k',
withShift: 'K',
withAltGr: '',
withShiftAltGr: ''
},
KeyL: {
vkey: 'VK_L',
value: 'l',
withShift: 'L',
withAltGr: '',
withShiftAltGr: ''
},
KeyM: {
vkey: 'VK_M',
value: 'm',
withShift: 'M',
withAltGr: '',
withShiftAltGr: ''
},
KeyN: {
vkey: 'VK_N',
value: 'n',
withShift: 'N',
withAltGr: '',
withShiftAltGr: ''
},
KeyO: {
vkey: 'VK_O',
value: 'o',
withShift: 'O',
withAltGr: '',
withShiftAltGr: ''
},
KeyP: {
vkey: 'VK_P',
value: 'p',
withShift: 'P',
withAltGr: '',
withShiftAltGr: ''
},
KeyQ: {
vkey: 'VK_Q',
value: 'q',
withShift: 'Q',
withAltGr: '',
withShiftAltGr: ''
},
KeyR: {
vkey: 'VK_R',
value: 'r',
withShift: 'R',
withAltGr: '',
withShiftAltGr: ''
},
KeyS: {
vkey: 'VK_S',
value: 's',
withShift: 'S',
withAltGr: '',
withShiftAltGr: ''
},
KeyT: {
vkey: 'VK_T',
value: 't',
withShift: 'T',
withAltGr: '',
withShiftAltGr: ''
},
KeyU: {
vkey: 'VK_U',
value: 'u',
withShift: 'U',
withAltGr: '',
withShiftAltGr: ''
},
KeyV: {
vkey: 'VK_V',
value: 'v',
withShift: 'V',
withAltGr: '',
withShiftAltGr: ''
},
KeyW: {
vkey: 'VK_W',
value: 'w',
withShift: 'W',
withAltGr: '',
withShiftAltGr: ''
},
KeyX: {
vkey: 'VK_X',
value: 'x',
withShift: 'X',
withAltGr: '',
withShiftAltGr: ''
},
KeyY: {
vkey: 'VK_Z',
value: 'z',
withShift: 'Z',
withAltGr: '',
withShiftAltGr: ''
},
KeyZ: {
vkey: 'VK_Y',
value: 'y',
withShift: 'Y',
withAltGr: '',
withShiftAltGr: ''
},
Digit1: {
vkey: 'VK_1',
value: '1',
withShift: '+',
withAltGr: '¦',
withShiftAltGr: ''
},
Digit2: {
vkey: 'VK_2',
value: '2',
withShift: '"',
withAltGr: '@',
withShiftAltGr: ''
},
Digit3: {
vkey: 'VK_3',
value: '3',
withShift: '*',
withAltGr: '#',
withShiftAltGr: ''
},
Digit4: {
vkey: 'VK_4',
value: '4',
withShift: 'ç',
withAltGr: '°',
withShiftAltGr: ''
},
Digit5: {
vkey: 'VK_5',
value: '5',
withShift: '%',
withAltGr: '§',
withShiftAltGr: ''
},
Digit6: {
vkey: 'VK_6',
value: '6',
withShift: '&',
withAltGr: '¬',
withShiftAltGr: ''
},
Digit7: {
vkey: 'VK_7',
value: '7',
withShift: '/',
withAltGr: '|',
withShiftAltGr: ''
},
Digit8: {
vkey: 'VK_8',
value: '8',
withShift: '(',
withAltGr: '¢',
withShiftAltGr: ''
},
Digit9: {
vkey: 'VK_9',
value: '9',
withShift: ')',
withAltGr: '',
withShiftAltGr: ''
},
Digit0: {
vkey: 'VK_0',
value: '0',
withShift: '=',
withAltGr: '',
withShiftAltGr: ''
},
Enter: {
vkey: 'VK_RETURN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Escape: {
vkey: 'VK_ESCAPE',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Backspace: {
vkey: 'VK_BACK',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Tab: {
vkey: 'VK_TAB',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Space: {
vkey: 'VK_SPACE',
value: ' ',
withShift: ' ',
withAltGr: '',
withShiftAltGr: ''
},
Minus: {
vkey: 'VK_OEM_4',
value: '\'',
withShift: '?',
withAltGr: '',
withShiftAltGr: ''
},
Equal: {
vkey: 'VK_OEM_6',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BracketLeft: {
vkey: 'VK_OEM_1',
value: 'ü',
withShift: 'è',
withAltGr: '[',
withShiftAltGr: ''
},
BracketRight: {
vkey: 'VK_OEM_3',
value: '',
withShift: '!',
withAltGr: ']',
withShiftAltGr: ''
},
Backslash: {
vkey: 'VK_OEM_8',
value: '$',
withShift: '£',
withAltGr: '}',
withShiftAltGr: ''
},
Semicolon: {
vkey: 'VK_OEM_7',
value: 'ö',
withShift: 'é',
withAltGr: '',
withShiftAltGr: ''
},
Quote: {
vkey: 'VK_OEM_5',
value: 'ä',
withShift: 'à',
withAltGr: '{',
withShiftAltGr: ''
},
Backquote: {
vkey: 'VK_OEM_2',
value: '§',
withShift: '°',
withAltGr: '',
withShiftAltGr: ''
},
Comma: {
vkey: 'VK_OEM_COMMA',
value: ',',
withShift: ';',
withAltGr: '',
withShiftAltGr: ''
},
Period: {
vkey: 'VK_OEM_PERIOD',
value: '.',
withShift: ':',
withAltGr: '',
withShiftAltGr: ''
},
Slash: {
vkey: 'VK_OEM_MINUS',
value: '-',
withShift: '_',
withAltGr: '',
withShiftAltGr: ''
},
CapsLock: {
vkey: 'VK_CAPITAL',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F1: {
vkey: 'VK_F1',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F2: {
vkey: 'VK_F2',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F3: {
vkey: 'VK_F3',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F4: {
vkey: 'VK_F4',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F5: {
vkey: 'VK_F5',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F6: {
vkey: 'VK_F6',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F7: {
vkey: 'VK_F7',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F8: {
vkey: 'VK_F8',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F9: {
vkey: 'VK_F9',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F10: {
vkey: 'VK_F10',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F11: {
vkey: 'VK_F11',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F12: {
vkey: 'VK_F12',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
PrintScreen: {
vkey: 'VK_SNAPSHOT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ScrollLock: {
vkey: 'VK_SCROLL',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Pause: {
vkey: 'VK_NUMLOCK',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Insert: {
vkey: 'VK_INSERT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Home: {
vkey: 'VK_HOME',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
PageUp: {
vkey: 'VK_PRIOR',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Delete: {
vkey: 'VK_DELETE',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
End: {
vkey: 'VK_END',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
PageDown: {
vkey: 'VK_NEXT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ArrowRight: {
vkey: 'VK_RIGHT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ArrowLeft: {
vkey: 'VK_LEFT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ArrowDown: {
vkey: 'VK_DOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ArrowUp: {
vkey: 'VK_UP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NumLock: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NumpadDivide: {
vkey: 'VK_DIVIDE',
value: '/',
withShift: '/',
withAltGr: '',
withShiftAltGr: ''
},
NumpadMultiply: {
vkey: 'VK_MULTIPLY',
value: '*',
withShift: '*',
withAltGr: '',
withShiftAltGr: ''
},
NumpadSubtract: {
vkey: 'VK_SUBTRACT',
value: '-',
withShift: '-',
withAltGr: '',
withShiftAltGr: ''
},
NumpadAdd: {
vkey: 'VK_ADD',
value: '+',
withShift: '+',
withAltGr: '',
withShiftAltGr: ''
},
NumpadEnter: {
vkey: 'VK_RETURN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad1: {
vkey: 'VK_END',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad2: {
vkey: 'VK_DOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad3: {
vkey: 'VK_NEXT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad4: {
vkey: 'VK_LEFT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad5: {
vkey: 'VK_CLEAR',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad6: {
vkey: 'VK_RIGHT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad7: {
vkey: 'VK_HOME',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad8: {
vkey: 'VK_UP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad9: {
vkey: 'VK_PRIOR',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Numpad0: {
vkey: 'VK_INSERT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NumpadDecimal: {
vkey: 'VK_DELETE',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
IntlBackslash: {
vkey: 'VK_OEM_102',
value: '<',
withShift: '>',
withAltGr: '\\',
withShiftAltGr: ''
},
ContextMenu: {
vkey: 'VK_APPS',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Power: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NumpadEqual: {
vkey: 'VK_CLEAR',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F13: {
vkey: 'VK_F13',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F14: {
vkey: 'VK_F14',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F15: {
vkey: 'VK_F15',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F16: {
vkey: 'VK_F16',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F17: {
vkey: 'VK_F17',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F18: {
vkey: 'VK_F18',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F19: {
vkey: 'VK_F19',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F20: {
vkey: 'VK_F20',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F21: {
vkey: 'VK_F21',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F22: {
vkey: 'VK_F22',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F23: {
vkey: 'VK_F23',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
F24: {
vkey: 'VK_F24',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Help: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Undo: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Cut: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Copy: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Paste: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
AudioVolumeMute: {
vkey: 'VK_VOLUME_MUTE',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
AudioVolumeUp: {
vkey: 'VK_VOLUME_UP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
AudioVolumeDown: {
vkey: 'VK_VOLUME_DOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NumpadComma: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
IntlRo: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
KanaMode: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
IntlYen: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Convert: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
NonConvert: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Lang1: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Lang2: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Lang3: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Lang4: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ControlLeft: {
vkey: 'VK_CONTROL',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ShiftLeft: {
vkey: 'VK_SHIFT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
AltLeft: {
vkey: 'VK_MENU',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MetaLeft: {
vkey: 'VK_LWIN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ControlRight: {
vkey: 'VK_CONTROL',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
ShiftRight: {
vkey: 'VK_SHIFT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
AltRight: {
vkey: 'VK_MENU',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MetaRight: {
vkey: 'VK_RWIN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MediaTrackNext: {
vkey: 'VK_MEDIA_NEXT_TRACK',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MediaTrackPrevious: {
vkey: 'VK_MEDIA_PREV_TRACK',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MediaStop: {
vkey: 'VK_MEDIA_STOP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
Eject: {
vkey: 'VK_UNKNOWN',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MediaPlayPause: {
vkey: 'VK_MEDIA_PLAY_PAUSE',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
MediaSelect: {
vkey: 'VK_LAUNCH_MEDIA_SELECT',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
LaunchMail: {
vkey: 'VK_LAUNCH_MAIL',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
LaunchApp2: {
vkey: 'VK_LAUNCH_APP2',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
LaunchApp1: {
vkey: 'VK_LAUNCH_APP1',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserSearch: {
vkey: 'VK_BROWSER_SEARCH',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserHome: {
vkey: 'VK_BROWSER_HOME',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserBack: {
vkey: 'VK_BROWSER_BACK',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserForward: {
vkey: 'VK_BROWSER_FORWARD',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserStop: {
vkey: 'VK_BROWSER_STOP',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserRefresh: {
vkey: 'VK_BROWSER_REFRESH',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
},
BrowserFavorites: {
vkey: 'VK_BROWSER_FAVORITES',
value: '',
withShift: '',
withAltGr: '',
withShiftAltGr: ''
}
});
此差异已折叠。
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as assert from 'assert';
import { OperatingSystem } from 'vs/base/common/platform';
import { readFile, writeFile } from 'vs/base/node/pfs';
import { TPromise } from 'vs/base/common/winjs.base';
import { WindowsKeyboardMapper, IKeyboardMapping } from 'vs/workbench/services/keybinding/common/windowsKeyboardMapper';
function createKeyboardMapper(file: string, OS: OperatingSystem): TPromise<WindowsKeyboardMapper> {
return readFile(require.toUrl(`vs/workbench/services/keybinding/test/${file}.js`)).then((buff) => {
let contents = buff.toString();
let func = new Function('define', contents);
let rawMappings: IKeyboardMapping = null;
func(function (value) {
rawMappings = value;
});
return new WindowsKeyboardMapper(rawMappings);
});
}
function assertMapping(mapper: WindowsKeyboardMapper, file: string, done: (err?: any) => void): void {
const filePath = require.toUrl(`vs/workbench/services/keybinding/test/${file}`);
readFile(filePath).then((buff) => {
let expected = buff.toString();
const actual = mapper.dumpDebugInfo();
if (actual !== expected) {
writeFile(filePath, actual);
}
assert.deepEqual(actual, expected);
done();
}, done);
}
suite('keyboardMapper - WINDOWS de_ch', () => {
let mapper: WindowsKeyboardMapper;
suiteSetup((done) => {
createKeyboardMapper('win_de_ch', OperatingSystem.Macintosh).then((_mapper) => {
mapper = _mapper;
done();
}, done);
});
test('mapping', (done) => {
assertMapping(mapper, 'win_de_ch.txt', done);
});
// 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),
// '⌘Z',
// 'Command+Z',
// [[{
// tagName: 'span',
// className: 'monaco-kb',
// children: [
// { tagName: 'span', className: 'monaco-kbkey', text: '⌘' },
// { tagName: 'span', className: 'monaco-kbkey', text: 'Z' },
// ]
// }]]
// );
// });
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册