EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
keyboard.js
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 Sylvain Peyrefitte
3 *
4 * This file is part of mstsc.js.
5 *
6 * mstsc.js is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20(function() {
21 // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
22 var KeyMap = {
23 "" : 0x0000,
24 "Escape" : 0x0001,
25 "Digit1" : 0x0002,
26 "Digit2" : 0x0003,
27 "Digit3" : 0x0004,
28 "Digit4" : 0x0005,
29 "Digit5" : 0x0006,
30 "Digit6" : 0x0007,
31 "Digit7" : 0x0008,
32 "Digit8" : 0x0009,
33 "Digit9" : 0x000A,
34 "Digit0" : 0x000B,
35 "Minus" : 0x000C,
36 "Equal" : 0x000D,
37 "Backspace" : 0x000E,
38 "Tab" : 0x000F,
39 "KeyQ" : 0x0010,
40 "KeyW" : 0x0011,
41 "KeyE" : 0x0012,
42 "KeyR" : 0x0013,
43 "KeyT" : 0x0014,
44 "KeyY" : 0x0015,
45 "KeyU" : 0x0016,
46 "KeyI" : 0x0017,
47 "KeyO" : 0x0018,
48 "KeyP" : 0x0019,
49 "BracketLeft" : 0x001A,
50 "BracketRight" : 0x001B,
51 "Enter" : 0x001C,
52 "ControlLeft" : 0x001D,
53 "KeyA" : 0x001E,
54 "KeyS" : 0x001F,
55 "KeyD" : 0x0020,
56 "KeyF" : 0x0021,
57 "KeyG" : 0x0022,
58 "KeyH" : 0x0023,
59 "KeyJ" : 0x0024,
60 "KeyK" : 0x0025,
61 "KeyL" : 0x0026,
62 "Semicolon" : 0x0027,
63 "Quote" : 0x0028,
64 "Backquote" : 0x0029,
65 "ShiftLeft" : 0x002A,
66 "Backslash" : 0x002B,
67 "KeyZ" : 0x002C,
68 "KeyX" : 0x002D,
69 "KeyC" : 0x002E,
70 "KeyV" : 0x002F,
71 "KeyB" : 0x0030,
72 "KeyN" : 0x0031,
73 "KeyM" : 0x0032,
74 "Comma" : 0x0033,
75 "Period" : 0x0034,
76 "Slash" : 0x0035,
77 "ShiftRight" : 0x0036,
78 "NumpadMultiply" : 0x0037,
79 "AltLeft" : 0x0038,
80 "Space" : 0x0039,
81 "CapsLock" : 0x003A,
82 "F1" : 0x003B,
83 "F2" : 0x003C,
84 "F3" : 0x003D,
85 "F4" : 0x003E,
86 "F5" : 0x003F,
87 "F6" : 0x0040,
88 "F7" : 0x0041,
89 "F8" : 0x0042,
90 "F9" : 0x0043,
91 "F10" : 0x0044,
92 "Pause" : 0x0045,
93 "ScrollLock" : 0x0046,
94 "Numpad7" : 0x0047,
95 "Numpad8" : 0x0048,
96 "Numpad9" : 0x0049,
97 "NumpadSubtract" : 0x004A,
98 "Numpad4" : 0x004B,
99 "Numpad5" : 0x004C,
100 "Numpad6" : 0x004D,
101 "NumpadAdd" : 0x004E,
102 "Numpad1" : 0x004F,
103 "Numpad2" : 0x0050,
104 "Numpad3" : 0x0051,
105 "Numpad0" : 0x0052,
106 "NumpadDecimal" : 0x0053,
107 "PrintScreen" : 0x0054,
108 "IntlBackslash" : 0x0056,
109 "F11" : 0x0057,
110 "F12" : 0x0058,
111 "NumpadEqual" : 0x0059,
112 "F13" : 0x0064,
113 "F14" : 0x0065,
114 "F15" : 0x0066,
115 "F16" : 0x0067,
116 "F17" : 0x0068,
117 "F18" : 0x0069,
118 "F19" : 0x006A,
119 "F20" : 0x006B,
120 "F21" : 0x006C,
121 "F22" : 0x006D,
122 "F23" : 0x006E,
123 "KanaMode" : 0x0070,
124 "Lang2" : 0x0071,
125 "Lang1" : 0x0072,
126 "IntlRo" : 0x0073,
127 "F24" : 0x0076,
128 "Convert" : 0x0079,
129 "NonConvert" : 0x007B,
130 "IntlYen" : 0x007D,
131 "NumpadComma" : 0x007E,
132 "MediaTrackPrevious" : 0xE010,
133 "MediaTrackNext" : 0xE019,
134 "NumpadEnter" : 0xE01C,
135 "ControlRight" : 0xE01D,
136 "VolumeMute" : 0xE020,
137 "LaunchApp2" : 0xE021,
138 "MediaPlayPause" : 0xE022,
139 "MediaStop" : 0xE024,
140 "VolumeDown" : 0xE02E,
141 "VolumeUp" : 0xE030,
142 "BrowserHome" : 0xE032,
143 "NumpadDivide" : 0xE035,
144 "PrintScreen" : 0xE037,
145 "AltRight" : 0xE038,
146 "NumLock" : 0xE045,
147 "Pause" : 0xE046,
148 "Home" : 0xE047,
149 "ArrowUp" : 0xE048,
150 "PageUp" : 0xE049,
151 "ArrowLeft" : 0xE04B,
152 "ArrowRight" : 0xE04D,
153 "End" : 0xE04F,
154 "ArrowDown" : 0xE050,
155 "PageDown" : 0xE051,
156 "Insert" : 0xE052,
157 "Delete" : 0xE053,
158 "OSLeft" : 0xE05B,
159 "OSRight" : 0xE05C,
160 "ContextMenu" : 0xE05D,
161 "Power" : 0xE05E,
162 "BrowserSearch" : 0xE065,
163 "BrowserFavorites" : 0xE066,
164 "BrowserRefresh" : 0xE067,
165 "BrowserStop" : 0xE068,
166 "BrowserForward" : 0xE069,
167 "BrowserBack" : 0xE06A,
168 "LaunchApp1" : 0xE06B,
169 "LaunchMail" : 0xE06C,
170 "MediaSelect" : 0xE06D
171 };
172
173 var UnicodeToCodeFirefox_FR = {
174 27 : "Escape",
175 112 : "F1",
176 113 : "F2",
177 114 : "F3",
178 115 : "F4",
179 116 : "F5",
180 117 : "F6",
181 118 : "F7",
182 119 : "F8",
183 120 : "F9",
184 121 : "F10",
185 122 : "F11",
186 123 : "F12",
187 0 : "Backquote",
188 49 : "Digit1",
189 50 : "Digit2",
190 51 : "Digit3",
191 52 : "Digit4",
192 53 : "Digit5",
193 54 : "Digit6",
194 55 : "Digit7",
195 56 : "Digit8",
196 57 : "Digit9",
197 48 : "Digit0",
198 169 : "Minus",
199 61 : "Equal",
200 8 : "Backspace",
201 9 : "Tab",
202 65 : "KeyQ",
203 90 : "KeyW",
204 69 : "KeyE",
205 82 : "KeyR",
206 84 : "KeyT",
207 89 : "KeyY",
208 85 : "KeyU",
209 73 : "KeyI",
210 79 : "KeyO",
211 80 : "KeyP",
212 160 : "BracketLeft",
213 164 : "BracketRight",
214 13 : "Enter",
215 20 : "CapsLock",
216 20 : "CapsLock",
217 81 : "KeyA",
218 83 : "KeyS",
219 68 : "KeyD",
220 70 : "KeyF",
221 71 : "KeyG",
222 72 : "KeyH",
223 74 : "KeyJ",
224 75 : "KeyK",
225 76 : "KeyL",
226 77 : "Semicolon",
227 165 : "Quote",
228 170 : "Backslash",
229 16 : "ShiftLeft",
230 60 : "IntlBackslash",
231 87 : "KeyZ",
232 88 : "KeyX",
233 67 : "KeyC",
234 86 : "KeyV",
235 66 : "KeyB",
236 78 : "KeyN",
237 188 : "KeyM",
238 59 : "Comma",
239 58 : "Period",
240 161 : "Slash",
241 16 : "ShiftRight",
242 17 : "ControlLeft",
243 91 : "OSLeft",
244 18 : "AltLeft",
245 32 : "Space",
246 17 : "ControlLeft",
247 18 : "AltRight",
248 91 : "OSRight",
249 93 : "ContextMenu",
250 17 : "ControlRight",
251 37 : "ArrowLeft",
252 38 : "ArrowUp",
253 40 : "ArrowDown",
254 39 : "ArrowRight",
255 144 : "NumLock",
256 144 : "NumLock",
257 111 : "NumpadDivide",
258 106 : "NumpadMultiply",
259 109 : "NumpadSubtract",
260 103 : "Numpad7",
261 104 : "Numpad8",
262 105 : "Numpad9",
263 107 : "NumpadAdd",
264 100 : "Numpad4",
265 101 : "Numpad5",
266 102 : "Numpad6",
267 97 : "Numpad1",
268 98 : "Numpad2",
269 99 : "Numpad3",
270 96 : "Numpad0",
271 110 : "NumpadDecimal",
272 13 : "NumpadEnter",
273 17 : "ControlLeft",
274 67 : "KeyC",
275 17 : "ControlLeft"
276 };
277
278 var UnicodeToCodeChrome_FR = {
279 27 : "Escape",
280 112 : "F1",
281 113 : "F2",
282 114 : "F3",
283 115 : "F4",
284 116 : "F5",
285 117 : "F6",
286 118 : "F7",
287 119 : "F8",
288 120 : "F9",
289 121 : "F10",
290 122 : "F11",
291 123 : "F12",
292 0 : "Backquote",
293 49 : "Digit1",
294 50 : "Digit2",
295 51 : "Digit3",
296 52 : "Digit4",
297 53 : "Digit5",
298 54 : "Digit6",
299 55 : "Digit7",
300 56 : "Digit8",
301 57 : "Digit9",
302 48 : "Digit0",
303 219 : "Minus",
304 187 : "Equal",
305 8 : "Backspace",
306 9 : "Tab",
307 65 : "KeyQ",
308 90 : "KeyW",
309 69 : "KeyE",
310 82 : "KeyR",
311 84 : "KeyT",
312 89 : "KeyY",
313 85 : "KeyU",
314 73 : "KeyI",
315 79 : "KeyO",
316 80 : "KeyP",
317 221 : "BracketLeft",
318 186 : "BracketRight",
319 13 : "Enter",
320 20 : "CapsLock",
321 20 : "CapsLock",
322 81 : "KeyA",
323 83 : "KeyS",
324 68 : "KeyD",
325 70 : "KeyF",
326 71 : "KeyG",
327 72 : "KeyH",
328 74 : "KeyJ",
329 75 : "KeyK",
330 76 : "KeyL",
331 77 : "Semicolon",
332 192 : "Quote",
333 220 : "Backslash",
334 16 : "ShiftLeft",
335 60 : "IntlBackslash",
336 87 : "KeyZ",
337 88 : "KeyX",
338 67 : "KeyC",
339 86 : "KeyV",
340 66 : "KeyB",
341 78 : "KeyN",
342 188 : "KeyM",
343 190 : "Comma",
344 191 : "Period",
345 223 : "Slash",
346 16 : "ShiftRight",
347 17 : "ControlLeft",
348 91 : "OSLeft",
349 18 : "AltLeft",
350 32 : "Space",
351 17 : "ControlLeft",
352 18 : "AltRight",
353 91 : "OSRight",
354 93 : "ContextMenu",
355 17 : "ControlRight",
356 37 : "ArrowLeft",
357 38 : "ArrowUp",
358 40 : "ArrowDown",
359 39 : "ArrowRight",
360 144 : "NumLock",
361 144 : "NumLock",
362 111 : "NumpadDivide",
363 106 : "NumpadMultiply",
364 109 : "NumpadSubtract",
365 103 : "Numpad7",
366 104 : "Numpad8",
367 105 : "Numpad9",
368 107 : "NumpadAdd",
369 100 : "Numpad4",
370 101 : "Numpad5",
371 102 : "Numpad6",
372 97 : "Numpad1",
373 98 : "Numpad2",
374 99 : "Numpad3",
375 96 : "Numpad0",
376 110 : "NumpadDecimal",
377 13 : "NumpadEnter",
378 17 : "ControlLeft",
379 67 : "KeyC",
380 17 : "ControlLeft"
381 };
382
383 var UnicodeToCode_EN = {
384 27 : "Escape",
385 112 : "F1",
386 113 : "F2",
387 114 : "F3",
388 115 : "F4",
389 116 : "F5",
390 117 : "F6",
391 118 : "F7",
392 119 : "F8",
393 120 : "F9",
394 121 : "F10",
395 122 : "F11",
396 123 : "F12",
397 192 : "Backquote",
398 49 : "Digit1",
399 50 : "Digit2",
400 51 : "Digit3",
401 52 : "Digit4",
402 53 : "Digit5",
403 54 : "Digit6",
404 55 : "Digit7",
405 56 : "Digit8",
406 57 : "Digit9",
407 48 : "Digit0",
408 173 : "Minus",
409 61 : "Equal",
410 8 : "Backspace",
411 9 : "Tab",
412 81 : "KeyQ",
413 87 : "KeyW",
414 69 : "KeyE",
415 82 : "KeyR",
416 84 : "KeyT",
417 89 : "KeyY",
418 85 : "KeyU",
419 73 : "KeyI",
420 79 : "KeyO",
421 80 : "KeyP",
422 219 : "BracketLeft",
423 221 : "BracketRight",
424 13 : "Enter",
425 20 : "CapsLock",
426 65 : "KeyA",
427 83 : "KeyS",
428 68 : "KeyD",
429 70 : "KeyF",
430 71 : "KeyG",
431 72 : "KeyH",
432 74 : "KeyJ",
433 75 : "KeyK",
434 76 : "KeyL",
435 59 : "Semicolon",
436 222 : "Quote",
437 220 : "Backslash",
438 16 : "ShiftLeft",
439 220 : "IntlBackslash",
440 90 : "KeyZ",
441 88 : "KeyX",
442 67 : "KeyC",
443 86 : "KeyV",
444 66 : "KeyB",
445 78 : "KeyN",
446 77 : "KeyM",
447 188 : "Comma",
448 190 : "Period",
449 191 : "Slash",
450 16 : "ShiftRight",
451 17 : "ControlLeft",
452 18 : "AltLeft",
453 91 : "OSLeft",
454 32 : "Space",
455 18 : "AltRight",
456 91 : "OSRight",
457 93 : "ContextMenu",
458 17 : "ControlRight",
459 37 : "ArrowLeft",
460 38 : "ArrowUp",
461 40 : "ArrowDown",
462 39 : "ArrowRight",
463 144 : "NumLock",
464 144 : "NumLock",
465 111 : "NumpadDivide",
466 106 : "NumpadMultiply",
467 109 : "NumpadSubtract",
468 103 : "Numpad7",
469 104 : "Numpad8",
470 105 : "Numpad9",
471 107 : "NumpadAdd",
472 100 : "Numpad4",
473 101 : "Numpad5",
474 102 : "Numpad6",
475 97 : "Numpad1",
476 98 : "Numpad2",
477 99 : "Numpad3",
478 13 : "NumpadEnter",
479 96 : "Numpad0",
480 110 : "NumpadDecimal",
481 17 : "ControlLeft"
482 };
483
484
485 var UnicodeToCode = {
486 'firefox' : {
487 'fr' : UnicodeToCodeFirefox_FR,
488 'en' : UnicodeToCode_EN
489 },
490
491 'chrome' : {
492 'fr' : UnicodeToCodeChrome_FR,
493 'en' : UnicodeToCode_EN
494 }
495 }
496
497 /**
498 * Scancode of keyevent
499 * @param e {keyboardevent}
500 * @return {integer} scancode
501 */
502 function scancode (e) {
503 var locale = Mstsc.locale();
504 locale = (['fr', 'en'].indexOf(locale) > 0 && locale) || 'en';
505 return KeyMap[e.code || UnicodeToCode[Mstsc.browser() || 'firefox'][locale][e.keyCode]];
506 }
507
508 Mstsc.scancode = scancode;
509
510})();