@theia/monaco
Version:
Theia - Monaco Extension
172 lines (159 loc) • 6.94 kB
text/typescript
// *****************************************************************************
// Copyright (C) 2017 TypeFox and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// http://www.eclipse.org/legal/epl-2.0.
//
// This Source Code may also be made available under the following Secondary
// Licenses when the conditions for such availability set forth in the Eclipse
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
// with the GNU Classpath Exception which is available at
// https://www.gnu.org/software/classpath/license.html.
//
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
// *****************************************************************************
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as browser from '@theia/core/lib/browser';
// This is exported as part of the public API, but we use it with private API's so we need to refer to the private version.
import { KeyCode } from '@theia/monaco-editor-core/esm/vs/base/common/keyCodes';
import * as MonacoPlatform from '@theia/monaco-editor-core/esm/vs/base/common/platform';
export const KEY_CODE_MAP: KeyCode[] = [];
(function (): void {
KEY_CODE_MAP[3] = KeyCode.PauseBreak; // VK_CANCEL 0x03 Control-break processing
KEY_CODE_MAP[8] = KeyCode.Backspace;
KEY_CODE_MAP[9] = KeyCode.Tab;
KEY_CODE_MAP[13] = KeyCode.Enter;
KEY_CODE_MAP[16] = KeyCode.Shift;
KEY_CODE_MAP[17] = KeyCode.Ctrl;
KEY_CODE_MAP[18] = KeyCode.Alt;
KEY_CODE_MAP[19] = KeyCode.PauseBreak;
KEY_CODE_MAP[20] = KeyCode.CapsLock;
KEY_CODE_MAP[27] = KeyCode.Escape;
KEY_CODE_MAP[32] = KeyCode.Space;
KEY_CODE_MAP[33] = KeyCode.PageUp;
KEY_CODE_MAP[34] = KeyCode.PageDown;
KEY_CODE_MAP[35] = KeyCode.End;
KEY_CODE_MAP[36] = KeyCode.Home;
KEY_CODE_MAP[37] = KeyCode.LeftArrow;
KEY_CODE_MAP[38] = KeyCode.UpArrow;
KEY_CODE_MAP[39] = KeyCode.RightArrow;
KEY_CODE_MAP[40] = KeyCode.DownArrow;
KEY_CODE_MAP[45] = KeyCode.Insert;
KEY_CODE_MAP[46] = KeyCode.Delete;
KEY_CODE_MAP[48] = KeyCode.Digit0;
KEY_CODE_MAP[49] = KeyCode.Digit1;
KEY_CODE_MAP[50] = KeyCode.Digit2;
KEY_CODE_MAP[51] = KeyCode.Digit3;
KEY_CODE_MAP[52] = KeyCode.Digit4;
KEY_CODE_MAP[53] = KeyCode.Digit5;
KEY_CODE_MAP[54] = KeyCode.Digit6;
KEY_CODE_MAP[55] = KeyCode.Digit7;
KEY_CODE_MAP[56] = KeyCode.Digit8;
KEY_CODE_MAP[57] = KeyCode.Digit9;
KEY_CODE_MAP[65] = KeyCode.KeyA;
KEY_CODE_MAP[66] = KeyCode.KeyB;
KEY_CODE_MAP[67] = KeyCode.KeyC;
KEY_CODE_MAP[68] = KeyCode.KeyD;
KEY_CODE_MAP[69] = KeyCode.KeyE;
KEY_CODE_MAP[70] = KeyCode.KeyF;
KEY_CODE_MAP[71] = KeyCode.KeyG;
KEY_CODE_MAP[72] = KeyCode.KeyH;
KEY_CODE_MAP[73] = KeyCode.KeyI;
KEY_CODE_MAP[74] = KeyCode.KeyJ;
KEY_CODE_MAP[75] = KeyCode.KeyK;
KEY_CODE_MAP[76] = KeyCode.KeyL;
KEY_CODE_MAP[77] = KeyCode.KeyM;
KEY_CODE_MAP[78] = KeyCode.KeyN;
KEY_CODE_MAP[79] = KeyCode.KeyO;
KEY_CODE_MAP[80] = KeyCode.KeyP;
KEY_CODE_MAP[81] = KeyCode.KeyQ;
KEY_CODE_MAP[82] = KeyCode.KeyR;
KEY_CODE_MAP[83] = KeyCode.KeyS;
KEY_CODE_MAP[84] = KeyCode.KeyT;
KEY_CODE_MAP[85] = KeyCode.KeyU;
KEY_CODE_MAP[86] = KeyCode.KeyV;
KEY_CODE_MAP[87] = KeyCode.KeyW;
KEY_CODE_MAP[88] = KeyCode.KeyX;
KEY_CODE_MAP[89] = KeyCode.KeyY;
KEY_CODE_MAP[90] = KeyCode.KeyZ;
KEY_CODE_MAP[93] = KeyCode.ContextMenu;
KEY_CODE_MAP[96] = KeyCode.Numpad0;
KEY_CODE_MAP[97] = KeyCode.Numpad1;
KEY_CODE_MAP[98] = KeyCode.Numpad2;
KEY_CODE_MAP[99] = KeyCode.Numpad3;
KEY_CODE_MAP[100] = KeyCode.Numpad4;
KEY_CODE_MAP[101] = KeyCode.Numpad5;
KEY_CODE_MAP[102] = KeyCode.Numpad6;
KEY_CODE_MAP[103] = KeyCode.Numpad7;
KEY_CODE_MAP[104] = KeyCode.Numpad8;
KEY_CODE_MAP[105] = KeyCode.Numpad9;
KEY_CODE_MAP[106] = KeyCode.NumpadMultiply;
KEY_CODE_MAP[107] = KeyCode.NumpadAdd;
KEY_CODE_MAP[108] = KeyCode.NUMPAD_SEPARATOR;
KEY_CODE_MAP[109] = KeyCode.NumpadSubtract;
KEY_CODE_MAP[110] = KeyCode.NumpadDecimal;
KEY_CODE_MAP[111] = KeyCode.NumpadDivide;
KEY_CODE_MAP[112] = KeyCode.F1;
KEY_CODE_MAP[113] = KeyCode.F2;
KEY_CODE_MAP[114] = KeyCode.F3;
KEY_CODE_MAP[115] = KeyCode.F4;
KEY_CODE_MAP[116] = KeyCode.F5;
KEY_CODE_MAP[117] = KeyCode.F6;
KEY_CODE_MAP[118] = KeyCode.F7;
KEY_CODE_MAP[119] = KeyCode.F8;
KEY_CODE_MAP[120] = KeyCode.F9;
KEY_CODE_MAP[121] = KeyCode.F10;
KEY_CODE_MAP[122] = KeyCode.F11;
KEY_CODE_MAP[123] = KeyCode.F12;
KEY_CODE_MAP[124] = KeyCode.F13;
KEY_CODE_MAP[125] = KeyCode.F14;
KEY_CODE_MAP[126] = KeyCode.F15;
KEY_CODE_MAP[127] = KeyCode.F16;
KEY_CODE_MAP[128] = KeyCode.F17;
KEY_CODE_MAP[129] = KeyCode.F18;
KEY_CODE_MAP[130] = KeyCode.F19;
KEY_CODE_MAP[144] = KeyCode.NumLock;
KEY_CODE_MAP[145] = KeyCode.ScrollLock;
KEY_CODE_MAP[186] = KeyCode.Semicolon;
KEY_CODE_MAP[187] = KeyCode.Equal;
KEY_CODE_MAP[188] = KeyCode.Comma;
KEY_CODE_MAP[189] = KeyCode.Minus;
KEY_CODE_MAP[190] = KeyCode.Period;
KEY_CODE_MAP[191] = KeyCode.Slash;
KEY_CODE_MAP[192] = KeyCode.Backquote;
KEY_CODE_MAP[193] = KeyCode.ABNT_C1;
KEY_CODE_MAP[194] = KeyCode.ABNT_C2;
KEY_CODE_MAP[219] = KeyCode.BracketLeft;
KEY_CODE_MAP[220] = KeyCode.Backslash;
KEY_CODE_MAP[221] = KeyCode.BracketRight;
KEY_CODE_MAP[222] = KeyCode.Quote;
KEY_CODE_MAP[223] = KeyCode.OEM_8;
KEY_CODE_MAP[226] = KeyCode.IntlBackslash;
/**
* https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html
* If an Input Method Editor is processing key input and the event is keydown, return 229.
*/
KEY_CODE_MAP[229] = KeyCode.KEY_IN_COMPOSITION;
if (browser.isIE) {
KEY_CODE_MAP[91] = KeyCode.Meta;
} else if (browser.isFirefox) {
KEY_CODE_MAP[59] = KeyCode.Semicolon;
KEY_CODE_MAP[107] = KeyCode.Equal;
KEY_CODE_MAP[109] = KeyCode.Minus;
if (MonacoPlatform.OS === MonacoPlatform.OperatingSystem.Macintosh) {
KEY_CODE_MAP[224] = KeyCode.Meta;
}
} else if (browser.isWebKit) {
KEY_CODE_MAP[91] = KeyCode.Meta;
if (MonacoPlatform.OS === MonacoPlatform.OperatingSystem.Macintosh) {
// the two meta keys in the Mac have different key codes (91 and 93)
KEY_CODE_MAP[93] = KeyCode.Meta;
} else {
KEY_CODE_MAP[92] = KeyCode.Meta;
}
}
})();