mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-03-09 15:40:18 +00:00
Improved MSTSC.js support.
This commit is contained in:
parent
14c08ce461
commit
61582dbd17
13 changed files with 169 additions and 7400 deletions
510
public/mstsc/keyboard.js
Normal file
510
public/mstsc/keyboard.js
Normal file
|
@ -0,0 +1,510 @@
|
|||
/*
|
||||
* Copyright (c) 2015 Sylvain Peyrefitte
|
||||
*
|
||||
* This file is part of mstsc.js.
|
||||
*
|
||||
* mstsc.js is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
(function() {
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
|
||||
var KeyMap = {
|
||||
"" : 0x0000,
|
||||
"Escape" : 0x0001,
|
||||
"Digit1" : 0x0002,
|
||||
"Digit2" : 0x0003,
|
||||
"Digit3" : 0x0004,
|
||||
"Digit4" : 0x0005,
|
||||
"Digit5" : 0x0006,
|
||||
"Digit6" : 0x0007,
|
||||
"Digit7" : 0x0008,
|
||||
"Digit8" : 0x0009,
|
||||
"Digit9" : 0x000A,
|
||||
"Digit0" : 0x000B,
|
||||
"Minus" : 0x000C,
|
||||
"Equal" : 0x000D,
|
||||
"Backspace" : 0x000E,
|
||||
"Tab" : 0x000F,
|
||||
"KeyQ" : 0x0010,
|
||||
"KeyW" : 0x0011,
|
||||
"KeyE" : 0x0012,
|
||||
"KeyR" : 0x0013,
|
||||
"KeyT" : 0x0014,
|
||||
"KeyY" : 0x0015,
|
||||
"KeyU" : 0x0016,
|
||||
"KeyI" : 0x0017,
|
||||
"KeyO" : 0x0018,
|
||||
"KeyP" : 0x0019,
|
||||
"BracketLeft" : 0x001A,
|
||||
"BracketRight" : 0x001B,
|
||||
"Enter" : 0x001C,
|
||||
"ControlLeft" : 0x001D,
|
||||
"KeyA" : 0x001E,
|
||||
"KeyS" : 0x001F,
|
||||
"KeyD" : 0x0020,
|
||||
"KeyF" : 0x0021,
|
||||
"KeyG" : 0x0022,
|
||||
"KeyH" : 0x0023,
|
||||
"KeyJ" : 0x0024,
|
||||
"KeyK" : 0x0025,
|
||||
"KeyL" : 0x0026,
|
||||
"Semicolon" : 0x0027,
|
||||
"Quote" : 0x0028,
|
||||
"Backquote" : 0x0029,
|
||||
"ShiftLeft" : 0x002A,
|
||||
"Backslash" : 0x002B,
|
||||
"KeyZ" : 0x002C,
|
||||
"KeyX" : 0x002D,
|
||||
"KeyC" : 0x002E,
|
||||
"KeyV" : 0x002F,
|
||||
"KeyB" : 0x0030,
|
||||
"KeyN" : 0x0031,
|
||||
"KeyM" : 0x0032,
|
||||
"Comma" : 0x0033,
|
||||
"Period" : 0x0034,
|
||||
"Slash" : 0x0035,
|
||||
"ShiftRight" : 0x0036,
|
||||
"NumpadMultiply" : 0x0037,
|
||||
"AltLeft" : 0x0038,
|
||||
"Space" : 0x0039,
|
||||
"CapsLock" : 0x003A,
|
||||
"F1" : 0x003B,
|
||||
"F2" : 0x003C,
|
||||
"F3" : 0x003D,
|
||||
"F4" : 0x003E,
|
||||
"F5" : 0x003F,
|
||||
"F6" : 0x0040,
|
||||
"F7" : 0x0041,
|
||||
"F8" : 0x0042,
|
||||
"F9" : 0x0043,
|
||||
"F10" : 0x0044,
|
||||
"Pause" : 0x0045,
|
||||
"ScrollLock" : 0x0046,
|
||||
"Numpad7" : 0x0047,
|
||||
"Numpad8" : 0x0048,
|
||||
"Numpad9" : 0x0049,
|
||||
"NumpadSubtract" : 0x004A,
|
||||
"Numpad4" : 0x004B,
|
||||
"Numpad5" : 0x004C,
|
||||
"Numpad6" : 0x004D,
|
||||
"NumpadAdd" : 0x004E,
|
||||
"Numpad1" : 0x004F,
|
||||
"Numpad2" : 0x0050,
|
||||
"Numpad3" : 0x0051,
|
||||
"Numpad0" : 0x0052,
|
||||
"NumpadDecimal" : 0x0053,
|
||||
"PrintScreen" : 0x0054,
|
||||
"IntlBackslash" : 0x0056,
|
||||
"F11" : 0x0057,
|
||||
"F12" : 0x0058,
|
||||
"NumpadEqual" : 0x0059,
|
||||
"F13" : 0x0064,
|
||||
"F14" : 0x0065,
|
||||
"F15" : 0x0066,
|
||||
"F16" : 0x0067,
|
||||
"F17" : 0x0068,
|
||||
"F18" : 0x0069,
|
||||
"F19" : 0x006A,
|
||||
"F20" : 0x006B,
|
||||
"F21" : 0x006C,
|
||||
"F22" : 0x006D,
|
||||
"F23" : 0x006E,
|
||||
"KanaMode" : 0x0070,
|
||||
"Lang2" : 0x0071,
|
||||
"Lang1" : 0x0072,
|
||||
"IntlRo" : 0x0073,
|
||||
"F24" : 0x0076,
|
||||
"Convert" : 0x0079,
|
||||
"NonConvert" : 0x007B,
|
||||
"IntlYen" : 0x007D,
|
||||
"NumpadComma" : 0x007E,
|
||||
"MediaTrackPrevious" : 0xE010,
|
||||
"MediaTrackNext" : 0xE019,
|
||||
"NumpadEnter" : 0xE01C,
|
||||
"ControlRight" : 0xE01D,
|
||||
"VolumeMute" : 0xE020,
|
||||
"LaunchApp2" : 0xE021,
|
||||
"MediaPlayPause" : 0xE022,
|
||||
"MediaStop" : 0xE024,
|
||||
"VolumeDown" : 0xE02E,
|
||||
"VolumeUp" : 0xE030,
|
||||
"BrowserHome" : 0xE032,
|
||||
"NumpadDivide" : 0xE035,
|
||||
"PrintScreen" : 0xE037,
|
||||
"AltRight" : 0xE038,
|
||||
"NumLock" : 0xE045,
|
||||
"Pause" : 0xE046,
|
||||
"Home" : 0xE047,
|
||||
"ArrowUp" : 0xE048,
|
||||
"PageUp" : 0xE049,
|
||||
"ArrowLeft" : 0xE04B,
|
||||
"ArrowRight" : 0xE04D,
|
||||
"End" : 0xE04F,
|
||||
"ArrowDown" : 0xE050,
|
||||
"PageDown" : 0xE051,
|
||||
"Insert" : 0xE052,
|
||||
"Delete" : 0xE053,
|
||||
"OSLeft" : 0xE05B,
|
||||
"OSRight" : 0xE05C,
|
||||
"ContextMenu" : 0xE05D,
|
||||
"Power" : 0xE05E,
|
||||
"BrowserSearch" : 0xE065,
|
||||
"BrowserFavorites" : 0xE066,
|
||||
"BrowserRefresh" : 0xE067,
|
||||
"BrowserStop" : 0xE068,
|
||||
"BrowserForward" : 0xE069,
|
||||
"BrowserBack" : 0xE06A,
|
||||
"LaunchApp1" : 0xE06B,
|
||||
"LaunchMail" : 0xE06C,
|
||||
"MediaSelect" : 0xE06D
|
||||
};
|
||||
|
||||
var UnicodeToCodeFirefox_FR = {
|
||||
27 : "Escape",
|
||||
112 : "F1",
|
||||
113 : "F2",
|
||||
114 : "F3",
|
||||
115 : "F4",
|
||||
116 : "F5",
|
||||
117 : "F6",
|
||||
118 : "F7",
|
||||
119 : "F8",
|
||||
120 : "F9",
|
||||
121 : "F10",
|
||||
122 : "F11",
|
||||
123 : "F12",
|
||||
0 : "Backquote",
|
||||
49 : "Digit1",
|
||||
50 : "Digit2",
|
||||
51 : "Digit3",
|
||||
52 : "Digit4",
|
||||
53 : "Digit5",
|
||||
54 : "Digit6",
|
||||
55 : "Digit7",
|
||||
56 : "Digit8",
|
||||
57 : "Digit9",
|
||||
48 : "Digit0",
|
||||
169 : "Minus",
|
||||
61 : "Equal",
|
||||
8 : "Backspace",
|
||||
9 : "Tab",
|
||||
65 : "KeyQ",
|
||||
90 : "KeyW",
|
||||
69 : "KeyE",
|
||||
82 : "KeyR",
|
||||
84 : "KeyT",
|
||||
89 : "KeyY",
|
||||
85 : "KeyU",
|
||||
73 : "KeyI",
|
||||
79 : "KeyO",
|
||||
80 : "KeyP",
|
||||
160 : "BracketLeft",
|
||||
164 : "BracketRight",
|
||||
13 : "Enter",
|
||||
20 : "CapsLock",
|
||||
20 : "CapsLock",
|
||||
81 : "KeyA",
|
||||
83 : "KeyS",
|
||||
68 : "KeyD",
|
||||
70 : "KeyF",
|
||||
71 : "KeyG",
|
||||
72 : "KeyH",
|
||||
74 : "KeyJ",
|
||||
75 : "KeyK",
|
||||
76 : "KeyL",
|
||||
77 : "Semicolon",
|
||||
165 : "Quote",
|
||||
170 : "Backslash",
|
||||
16 : "ShiftLeft",
|
||||
60 : "IntlBackslash",
|
||||
87 : "KeyZ",
|
||||
88 : "KeyX",
|
||||
67 : "KeyC",
|
||||
86 : "KeyV",
|
||||
66 : "KeyB",
|
||||
78 : "KeyN",
|
||||
188 : "KeyM",
|
||||
59 : "Comma",
|
||||
58 : "Period",
|
||||
161 : "Slash",
|
||||
16 : "ShiftRight",
|
||||
17 : "ControlLeft",
|
||||
91 : "OSLeft",
|
||||
18 : "AltLeft",
|
||||
32 : "Space",
|
||||
17 : "ControlLeft",
|
||||
18 : "AltRight",
|
||||
91 : "OSRight",
|
||||
93 : "ContextMenu",
|
||||
17 : "ControlRight",
|
||||
37 : "ArrowLeft",
|
||||
38 : "ArrowUp",
|
||||
40 : "ArrowDown",
|
||||
39 : "ArrowRight",
|
||||
144 : "NumLock",
|
||||
144 : "NumLock",
|
||||
111 : "NumpadDivide",
|
||||
106 : "NumpadMultiply",
|
||||
109 : "NumpadSubtract",
|
||||
103 : "Numpad7",
|
||||
104 : "Numpad8",
|
||||
105 : "Numpad9",
|
||||
107 : "NumpadAdd",
|
||||
100 : "Numpad4",
|
||||
101 : "Numpad5",
|
||||
102 : "Numpad6",
|
||||
97 : "Numpad1",
|
||||
98 : "Numpad2",
|
||||
99 : "Numpad3",
|
||||
96 : "Numpad0",
|
||||
110 : "NumpadDecimal",
|
||||
13 : "NumpadEnter",
|
||||
17 : "ControlLeft",
|
||||
67 : "KeyC",
|
||||
17 : "ControlLeft"
|
||||
};
|
||||
|
||||
var UnicodeToCodeChrome_FR = {
|
||||
27 : "Escape",
|
||||
112 : "F1",
|
||||
113 : "F2",
|
||||
114 : "F3",
|
||||
115 : "F4",
|
||||
116 : "F5",
|
||||
117 : "F6",
|
||||
118 : "F7",
|
||||
119 : "F8",
|
||||
120 : "F9",
|
||||
121 : "F10",
|
||||
122 : "F11",
|
||||
123 : "F12",
|
||||
0 : "Backquote",
|
||||
49 : "Digit1",
|
||||
50 : "Digit2",
|
||||
51 : "Digit3",
|
||||
52 : "Digit4",
|
||||
53 : "Digit5",
|
||||
54 : "Digit6",
|
||||
55 : "Digit7",
|
||||
56 : "Digit8",
|
||||
57 : "Digit9",
|
||||
48 : "Digit0",
|
||||
219 : "Minus",
|
||||
187 : "Equal",
|
||||
8 : "Backspace",
|
||||
9 : "Tab",
|
||||
65 : "KeyQ",
|
||||
90 : "KeyW",
|
||||
69 : "KeyE",
|
||||
82 : "KeyR",
|
||||
84 : "KeyT",
|
||||
89 : "KeyY",
|
||||
85 : "KeyU",
|
||||
73 : "KeyI",
|
||||
79 : "KeyO",
|
||||
80 : "KeyP",
|
||||
221 : "BracketLeft",
|
||||
186 : "BracketRight",
|
||||
13 : "Enter",
|
||||
20 : "CapsLock",
|
||||
20 : "CapsLock",
|
||||
81 : "KeyA",
|
||||
83 : "KeyS",
|
||||
68 : "KeyD",
|
||||
70 : "KeyF",
|
||||
71 : "KeyG",
|
||||
72 : "KeyH",
|
||||
74 : "KeyJ",
|
||||
75 : "KeyK",
|
||||
76 : "KeyL",
|
||||
77 : "Semicolon",
|
||||
192 : "Quote",
|
||||
220 : "Backslash",
|
||||
16 : "ShiftLeft",
|
||||
60 : "IntlBackslash",
|
||||
87 : "KeyZ",
|
||||
88 : "KeyX",
|
||||
67 : "KeyC",
|
||||
86 : "KeyV",
|
||||
66 : "KeyB",
|
||||
78 : "KeyN",
|
||||
188 : "KeyM",
|
||||
190 : "Comma",
|
||||
191 : "Period",
|
||||
223 : "Slash",
|
||||
16 : "ShiftRight",
|
||||
17 : "ControlLeft",
|
||||
91 : "OSLeft",
|
||||
18 : "AltLeft",
|
||||
32 : "Space",
|
||||
17 : "ControlLeft",
|
||||
18 : "AltRight",
|
||||
91 : "OSRight",
|
||||
93 : "ContextMenu",
|
||||
17 : "ControlRight",
|
||||
37 : "ArrowLeft",
|
||||
38 : "ArrowUp",
|
||||
40 : "ArrowDown",
|
||||
39 : "ArrowRight",
|
||||
144 : "NumLock",
|
||||
144 : "NumLock",
|
||||
111 : "NumpadDivide",
|
||||
106 : "NumpadMultiply",
|
||||
109 : "NumpadSubtract",
|
||||
103 : "Numpad7",
|
||||
104 : "Numpad8",
|
||||
105 : "Numpad9",
|
||||
107 : "NumpadAdd",
|
||||
100 : "Numpad4",
|
||||
101 : "Numpad5",
|
||||
102 : "Numpad6",
|
||||
97 : "Numpad1",
|
||||
98 : "Numpad2",
|
||||
99 : "Numpad3",
|
||||
96 : "Numpad0",
|
||||
110 : "NumpadDecimal",
|
||||
13 : "NumpadEnter",
|
||||
17 : "ControlLeft",
|
||||
67 : "KeyC",
|
||||
17 : "ControlLeft"
|
||||
};
|
||||
|
||||
var UnicodeToCode_EN = {
|
||||
27 : "Escape",
|
||||
112 : "F1",
|
||||
113 : "F2",
|
||||
114 : "F3",
|
||||
115 : "F4",
|
||||
116 : "F5",
|
||||
117 : "F6",
|
||||
118 : "F7",
|
||||
119 : "F8",
|
||||
120 : "F9",
|
||||
121 : "F10",
|
||||
122 : "F11",
|
||||
123 : "F12",
|
||||
192 : "Backquote",
|
||||
49 : "Digit1",
|
||||
50 : "Digit2",
|
||||
51 : "Digit3",
|
||||
52 : "Digit4",
|
||||
53 : "Digit5",
|
||||
54 : "Digit6",
|
||||
55 : "Digit7",
|
||||
56 : "Digit8",
|
||||
57 : "Digit9",
|
||||
48 : "Digit0",
|
||||
173 : "Minus",
|
||||
61 : "Equal",
|
||||
8 : "Backspace",
|
||||
9 : "Tab",
|
||||
81 : "KeyQ",
|
||||
87 : "KeyW",
|
||||
69 : "KeyE",
|
||||
82 : "KeyR",
|
||||
84 : "KeyT",
|
||||
89 : "KeyY",
|
||||
85 : "KeyU",
|
||||
73 : "KeyI",
|
||||
79 : "KeyO",
|
||||
80 : "KeyP",
|
||||
219 : "BracketLeft",
|
||||
221 : "BracketRight",
|
||||
13 : "Enter",
|
||||
20 : "CapsLock",
|
||||
65 : "KeyA",
|
||||
83 : "KeyS",
|
||||
68 : "KeyD",
|
||||
70 : "KeyF",
|
||||
71 : "KeyG",
|
||||
72 : "KeyH",
|
||||
74 : "KeyJ",
|
||||
75 : "KeyK",
|
||||
76 : "KeyL",
|
||||
59 : "Semicolon",
|
||||
222 : "Quote",
|
||||
220 : "Backslash",
|
||||
16 : "ShiftLeft",
|
||||
220 : "IntlBackslash",
|
||||
90 : "KeyZ",
|
||||
88 : "KeyX",
|
||||
67 : "KeyC",
|
||||
86 : "KeyV",
|
||||
66 : "KeyB",
|
||||
78 : "KeyN",
|
||||
77 : "KeyM",
|
||||
188 : "Comma",
|
||||
190 : "Period",
|
||||
191 : "Slash",
|
||||
16 : "ShiftRight",
|
||||
17 : "ControlLeft",
|
||||
18 : "AltLeft",
|
||||
91 : "OSLeft",
|
||||
32 : "Space",
|
||||
18 : "AltRight",
|
||||
91 : "OSRight",
|
||||
93 : "ContextMenu",
|
||||
17 : "ControlRight",
|
||||
37 : "ArrowLeft",
|
||||
38 : "ArrowUp",
|
||||
40 : "ArrowDown",
|
||||
39 : "ArrowRight",
|
||||
144 : "NumLock",
|
||||
144 : "NumLock",
|
||||
111 : "NumpadDivide",
|
||||
106 : "NumpadMultiply",
|
||||
109 : "NumpadSubtract",
|
||||
103 : "Numpad7",
|
||||
104 : "Numpad8",
|
||||
105 : "Numpad9",
|
||||
107 : "NumpadAdd",
|
||||
100 : "Numpad4",
|
||||
101 : "Numpad5",
|
||||
102 : "Numpad6",
|
||||
97 : "Numpad1",
|
||||
98 : "Numpad2",
|
||||
99 : "Numpad3",
|
||||
13 : "NumpadEnter",
|
||||
96 : "Numpad0",
|
||||
110 : "NumpadDecimal",
|
||||
17 : "ControlLeft"
|
||||
};
|
||||
|
||||
|
||||
var UnicodeToCode = {
|
||||
'firefox' : {
|
||||
'fr' : UnicodeToCodeFirefox_FR,
|
||||
'en' : UnicodeToCode_EN
|
||||
},
|
||||
|
||||
'chrome' : {
|
||||
'fr' : UnicodeToCodeChrome_FR,
|
||||
'en' : UnicodeToCode_EN
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scancode of keyevent
|
||||
* @param e {keyboardevent}
|
||||
* @return {integer} scancode
|
||||
*/
|
||||
function scancode (e) {
|
||||
var locale = Mstsc.locale();
|
||||
locale = (['fr', 'en'].indexOf(locale) > 0 && locale) || 'en';
|
||||
return KeyMap[e.code || UnicodeToCode[Mstsc.browser() || 'firefox'][locale][e.keyCode]];
|
||||
}
|
||||
|
||||
Mstsc.scancode = scancode;
|
||||
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue