susi-qemu 0.0.3 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/bin/susi +9 -4
  3. data/lib/disk.rb +7 -5
  4. data/lib/novnc/core/base64.js +104 -0
  5. data/lib/novnc/core/crypto/aes.js +178 -0
  6. data/lib/novnc/core/crypto/bigint.js +34 -0
  7. data/lib/novnc/core/crypto/crypto.js +90 -0
  8. data/lib/novnc/core/crypto/des.js +330 -0
  9. data/lib/novnc/core/crypto/dh.js +55 -0
  10. data/lib/novnc/core/crypto/md5.js +82 -0
  11. data/lib/novnc/core/crypto/rsa.js +132 -0
  12. data/lib/novnc/core/decoders/copyrect.js +27 -0
  13. data/lib/novnc/core/decoders/h264.js +321 -0
  14. data/lib/novnc/core/decoders/hextile.js +181 -0
  15. data/lib/novnc/core/decoders/jpeg.js +146 -0
  16. data/lib/novnc/core/decoders/raw.js +59 -0
  17. data/lib/novnc/core/decoders/rre.js +44 -0
  18. data/lib/novnc/core/decoders/tight.js +393 -0
  19. data/lib/novnc/core/decoders/tightpng.js +27 -0
  20. data/lib/novnc/core/decoders/zlib.js +51 -0
  21. data/lib/novnc/core/decoders/zrle.js +185 -0
  22. data/lib/novnc/core/deflator.js +84 -0
  23. data/lib/novnc/core/display.js +575 -0
  24. data/lib/novnc/core/encodings.js +53 -0
  25. data/lib/novnc/core/inflator.js +65 -0
  26. data/lib/novnc/core/input/domkeytable.js +311 -0
  27. data/lib/novnc/core/input/fixedkeys.js +129 -0
  28. data/lib/novnc/core/input/gesturehandler.js +567 -0
  29. data/lib/novnc/core/input/keyboard.js +294 -0
  30. data/lib/novnc/core/input/keysym.js +616 -0
  31. data/lib/novnc/core/input/keysymdef.js +688 -0
  32. data/lib/novnc/core/input/util.js +191 -0
  33. data/lib/novnc/core/input/vkeys.js +116 -0
  34. data/lib/novnc/core/input/xtscancodes.js +173 -0
  35. data/lib/novnc/core/ra2.js +312 -0
  36. data/lib/novnc/core/rfb.js +3257 -0
  37. data/lib/novnc/core/util/browser.js +172 -0
  38. data/lib/novnc/core/util/cursor.js +249 -0
  39. data/lib/novnc/core/util/element.js +32 -0
  40. data/lib/novnc/core/util/events.js +138 -0
  41. data/lib/novnc/core/util/eventtarget.js +35 -0
  42. data/lib/novnc/core/util/int.js +15 -0
  43. data/lib/novnc/core/util/logging.js +56 -0
  44. data/lib/novnc/core/util/strings.js +28 -0
  45. data/lib/novnc/core/websock.js +365 -0
  46. data/lib/novnc/screen.html +21 -0
  47. data/lib/novnc/vendor/pako/lib/utils/common.js +45 -0
  48. data/lib/novnc/vendor/pako/lib/zlib/adler32.js +27 -0
  49. data/lib/novnc/vendor/pako/lib/zlib/constants.js +47 -0
  50. data/lib/novnc/vendor/pako/lib/zlib/crc32.js +36 -0
  51. data/lib/novnc/vendor/pako/lib/zlib/deflate.js +1846 -0
  52. data/lib/novnc/vendor/pako/lib/zlib/gzheader.js +35 -0
  53. data/lib/novnc/vendor/pako/lib/zlib/inffast.js +324 -0
  54. data/lib/novnc/vendor/pako/lib/zlib/inflate.js +1527 -0
  55. data/lib/novnc/vendor/pako/lib/zlib/inftrees.js +322 -0
  56. data/lib/novnc/vendor/pako/lib/zlib/messages.js +11 -0
  57. data/lib/novnc/vendor/pako/lib/zlib/trees.js +1195 -0
  58. data/lib/novnc/vendor/pako/lib/zlib/zstream.js +24 -0
  59. data/lib/output.rb +11 -0
  60. data/lib/qmp.rb +6 -0
  61. data/lib/ssh.rb +3 -1
  62. data/lib/susi.rb +7 -6
  63. data/lib/version.rb +1 -1
  64. data/lib/vm.rb +36 -13
  65. data/lib/vnc.rb +34 -30
  66. metadata +85 -1
@@ -0,0 +1,191 @@
1
+ import KeyTable from "./keysym.js";
2
+ import keysyms from "./keysymdef.js";
3
+ import vkeys from "./vkeys.js";
4
+ import fixedkeys from "./fixedkeys.js";
5
+ import DOMKeyTable from "./domkeytable.js";
6
+ import * as browser from "../util/browser.js";
7
+
8
+ // Get 'KeyboardEvent.code', handling legacy browsers
9
+ export function getKeycode(evt) {
10
+ // Are we getting proper key identifiers?
11
+ // (unfortunately Firefox and Chrome are crappy here and gives
12
+ // us an empty string on some platforms, rather than leaving it
13
+ // undefined)
14
+ if (evt.code) {
15
+ // Mozilla isn't fully in sync with the spec yet
16
+ switch (evt.code) {
17
+ case 'OSLeft': return 'MetaLeft';
18
+ case 'OSRight': return 'MetaRight';
19
+ }
20
+
21
+ return evt.code;
22
+ }
23
+
24
+ // The de-facto standard is to use Windows Virtual-Key codes
25
+ // in the 'keyCode' field for non-printable characters
26
+ if (evt.keyCode in vkeys) {
27
+ let code = vkeys[evt.keyCode];
28
+
29
+ // macOS has messed up this code for some reason
30
+ if (browser.isMac() && (code === 'ContextMenu')) {
31
+ code = 'MetaRight';
32
+ }
33
+
34
+ // The keyCode doesn't distinguish between left and right
35
+ // for the standard modifiers
36
+ if (evt.location === 2) {
37
+ switch (code) {
38
+ case 'ShiftLeft': return 'ShiftRight';
39
+ case 'ControlLeft': return 'ControlRight';
40
+ case 'AltLeft': return 'AltRight';
41
+ }
42
+ }
43
+
44
+ // Nor a bunch of the numpad keys
45
+ if (evt.location === 3) {
46
+ switch (code) {
47
+ case 'Delete': return 'NumpadDecimal';
48
+ case 'Insert': return 'Numpad0';
49
+ case 'End': return 'Numpad1';
50
+ case 'ArrowDown': return 'Numpad2';
51
+ case 'PageDown': return 'Numpad3';
52
+ case 'ArrowLeft': return 'Numpad4';
53
+ case 'ArrowRight': return 'Numpad6';
54
+ case 'Home': return 'Numpad7';
55
+ case 'ArrowUp': return 'Numpad8';
56
+ case 'PageUp': return 'Numpad9';
57
+ case 'Enter': return 'NumpadEnter';
58
+ }
59
+ }
60
+
61
+ return code;
62
+ }
63
+
64
+ return 'Unidentified';
65
+ }
66
+
67
+ // Get 'KeyboardEvent.key', handling legacy browsers
68
+ export function getKey(evt) {
69
+ // Are we getting a proper key value?
70
+ if ((evt.key !== undefined) && (evt.key !== 'Unidentified')) {
71
+ // Mozilla isn't fully in sync with the spec yet
72
+ switch (evt.key) {
73
+ case 'OS': return 'Meta';
74
+ case 'LaunchMyComputer': return 'LaunchApplication1';
75
+ case 'LaunchCalculator': return 'LaunchApplication2';
76
+ }
77
+
78
+ // iOS leaks some OS names
79
+ switch (evt.key) {
80
+ case 'UIKeyInputUpArrow': return 'ArrowUp';
81
+ case 'UIKeyInputDownArrow': return 'ArrowDown';
82
+ case 'UIKeyInputLeftArrow': return 'ArrowLeft';
83
+ case 'UIKeyInputRightArrow': return 'ArrowRight';
84
+ case 'UIKeyInputEscape': return 'Escape';
85
+ }
86
+
87
+ // Broken behaviour in Chrome
88
+ if ((evt.key === '\x00') && (evt.code === 'NumpadDecimal')) {
89
+ return 'Delete';
90
+ }
91
+
92
+ return evt.key;
93
+ }
94
+
95
+ // Try to deduce it based on the physical key
96
+ const code = getKeycode(evt);
97
+ if (code in fixedkeys) {
98
+ return fixedkeys[code];
99
+ }
100
+
101
+ // If that failed, then see if we have a printable character
102
+ if (evt.charCode) {
103
+ return String.fromCharCode(evt.charCode);
104
+ }
105
+
106
+ // At this point we have nothing left to go on
107
+ return 'Unidentified';
108
+ }
109
+
110
+ // Get the most reliable keysym value we can get from a key event
111
+ export function getKeysym(evt) {
112
+ const key = getKey(evt);
113
+
114
+ if (key === 'Unidentified') {
115
+ return null;
116
+ }
117
+
118
+ // First look up special keys
119
+ if (key in DOMKeyTable) {
120
+ let location = evt.location;
121
+
122
+ // Safari screws up location for the right cmd key
123
+ if ((key === 'Meta') && (location === 0)) {
124
+ location = 2;
125
+ }
126
+
127
+ // And for Clear
128
+ if ((key === 'Clear') && (location === 3)) {
129
+ let code = getKeycode(evt);
130
+ if (code === 'NumLock') {
131
+ location = 0;
132
+ }
133
+ }
134
+
135
+ if ((location === undefined) || (location > 3)) {
136
+ location = 0;
137
+ }
138
+
139
+ // The original Meta key now gets confused with the Windows key
140
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1020141
141
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1232918
142
+ if (key === 'Meta') {
143
+ let code = getKeycode(evt);
144
+ if (code === 'AltLeft') {
145
+ return KeyTable.XK_Meta_L;
146
+ } else if (code === 'AltRight') {
147
+ return KeyTable.XK_Meta_R;
148
+ }
149
+ }
150
+
151
+ // macOS has Clear instead of NumLock, but the remote system is
152
+ // probably not macOS, so lying here is probably best...
153
+ if (key === 'Clear') {
154
+ let code = getKeycode(evt);
155
+ if (code === 'NumLock') {
156
+ return KeyTable.XK_Num_Lock;
157
+ }
158
+ }
159
+
160
+ // Windows sends alternating symbols for some keys when using a
161
+ // Japanese layout. We have no way of synchronising with the IM
162
+ // running on the remote system, so we send some combined keysym
163
+ // instead and hope for the best.
164
+ if (browser.isWindows()) {
165
+ switch (key) {
166
+ case 'Zenkaku':
167
+ case 'Hankaku':
168
+ return KeyTable.XK_Zenkaku_Hankaku;
169
+ case 'Romaji':
170
+ case 'KanaMode':
171
+ return KeyTable.XK_Romaji;
172
+ }
173
+ }
174
+
175
+ return DOMKeyTable[key][location];
176
+ }
177
+
178
+ // Now we need to look at the Unicode symbol instead
179
+
180
+ // Special key? (FIXME: Should have been caught earlier)
181
+ if (key.length !== 1) {
182
+ return null;
183
+ }
184
+
185
+ const codepoint = key.charCodeAt();
186
+ if (codepoint) {
187
+ return keysyms.lookup(codepoint);
188
+ }
189
+
190
+ return null;
191
+ }
@@ -0,0 +1,116 @@
1
+ /*
2
+ * noVNC: HTML5 VNC client
3
+ * Copyright (C) 2018 The noVNC Authors
4
+ * Licensed under MPL 2.0 or any later version (see LICENSE.txt)
5
+ */
6
+
7
+ /*
8
+ * Mapping between Microsoft® Windows® Virtual-Key codes and
9
+ * HTML key codes.
10
+ */
11
+
12
+ export default {
13
+ 0x08: 'Backspace',
14
+ 0x09: 'Tab',
15
+ 0x0a: 'NumpadClear',
16
+ 0x0d: 'Enter',
17
+ 0x10: 'ShiftLeft',
18
+ 0x11: 'ControlLeft',
19
+ 0x12: 'AltLeft',
20
+ 0x13: 'Pause',
21
+ 0x14: 'CapsLock',
22
+ 0x15: 'Lang1',
23
+ 0x19: 'Lang2',
24
+ 0x1b: 'Escape',
25
+ 0x1c: 'Convert',
26
+ 0x1d: 'NonConvert',
27
+ 0x20: 'Space',
28
+ 0x21: 'PageUp',
29
+ 0x22: 'PageDown',
30
+ 0x23: 'End',
31
+ 0x24: 'Home',
32
+ 0x25: 'ArrowLeft',
33
+ 0x26: 'ArrowUp',
34
+ 0x27: 'ArrowRight',
35
+ 0x28: 'ArrowDown',
36
+ 0x29: 'Select',
37
+ 0x2c: 'PrintScreen',
38
+ 0x2d: 'Insert',
39
+ 0x2e: 'Delete',
40
+ 0x2f: 'Help',
41
+ 0x30: 'Digit0',
42
+ 0x31: 'Digit1',
43
+ 0x32: 'Digit2',
44
+ 0x33: 'Digit3',
45
+ 0x34: 'Digit4',
46
+ 0x35: 'Digit5',
47
+ 0x36: 'Digit6',
48
+ 0x37: 'Digit7',
49
+ 0x38: 'Digit8',
50
+ 0x39: 'Digit9',
51
+ 0x5b: 'MetaLeft',
52
+ 0x5c: 'MetaRight',
53
+ 0x5d: 'ContextMenu',
54
+ 0x5f: 'Sleep',
55
+ 0x60: 'Numpad0',
56
+ 0x61: 'Numpad1',
57
+ 0x62: 'Numpad2',
58
+ 0x63: 'Numpad3',
59
+ 0x64: 'Numpad4',
60
+ 0x65: 'Numpad5',
61
+ 0x66: 'Numpad6',
62
+ 0x67: 'Numpad7',
63
+ 0x68: 'Numpad8',
64
+ 0x69: 'Numpad9',
65
+ 0x6a: 'NumpadMultiply',
66
+ 0x6b: 'NumpadAdd',
67
+ 0x6c: 'NumpadDecimal',
68
+ 0x6d: 'NumpadSubtract',
69
+ 0x6e: 'NumpadDecimal', // Duplicate, because buggy on Windows
70
+ 0x6f: 'NumpadDivide',
71
+ 0x70: 'F1',
72
+ 0x71: 'F2',
73
+ 0x72: 'F3',
74
+ 0x73: 'F4',
75
+ 0x74: 'F5',
76
+ 0x75: 'F6',
77
+ 0x76: 'F7',
78
+ 0x77: 'F8',
79
+ 0x78: 'F9',
80
+ 0x79: 'F10',
81
+ 0x7a: 'F11',
82
+ 0x7b: 'F12',
83
+ 0x7c: 'F13',
84
+ 0x7d: 'F14',
85
+ 0x7e: 'F15',
86
+ 0x7f: 'F16',
87
+ 0x80: 'F17',
88
+ 0x81: 'F18',
89
+ 0x82: 'F19',
90
+ 0x83: 'F20',
91
+ 0x84: 'F21',
92
+ 0x85: 'F22',
93
+ 0x86: 'F23',
94
+ 0x87: 'F24',
95
+ 0x90: 'NumLock',
96
+ 0x91: 'ScrollLock',
97
+ 0xa6: 'BrowserBack',
98
+ 0xa7: 'BrowserForward',
99
+ 0xa8: 'BrowserRefresh',
100
+ 0xa9: 'BrowserStop',
101
+ 0xaa: 'BrowserSearch',
102
+ 0xab: 'BrowserFavorites',
103
+ 0xac: 'BrowserHome',
104
+ 0xad: 'AudioVolumeMute',
105
+ 0xae: 'AudioVolumeDown',
106
+ 0xaf: 'AudioVolumeUp',
107
+ 0xb0: 'MediaTrackNext',
108
+ 0xb1: 'MediaTrackPrevious',
109
+ 0xb2: 'MediaStop',
110
+ 0xb3: 'MediaPlayPause',
111
+ 0xb4: 'LaunchMail',
112
+ 0xb5: 'MediaSelect',
113
+ 0xb6: 'LaunchApp1',
114
+ 0xb7: 'LaunchApp2',
115
+ 0xe1: 'AltRight', // Only when it is AltGraph
116
+ };
@@ -0,0 +1,173 @@
1
+ /*
2
+ * This file is auto-generated from keymaps.csv
3
+ * Database checksum sha256(76d68c10e97d37fe2ea459e210125ae41796253fb217e900bf2983ade13a7920)
4
+ * To re-generate, run:
5
+ * keymap-gen code-map --lang=js keymaps.csv html atset1
6
+ */
7
+ export default {
8
+ "Again": 0xe005, /* html:Again (Again) -> linux:129 (KEY_AGAIN) -> atset1:57349 */
9
+ "AltLeft": 0x38, /* html:AltLeft (AltLeft) -> linux:56 (KEY_LEFTALT) -> atset1:56 */
10
+ "AltRight": 0xe038, /* html:AltRight (AltRight) -> linux:100 (KEY_RIGHTALT) -> atset1:57400 */
11
+ "ArrowDown": 0xe050, /* html:ArrowDown (ArrowDown) -> linux:108 (KEY_DOWN) -> atset1:57424 */
12
+ "ArrowLeft": 0xe04b, /* html:ArrowLeft (ArrowLeft) -> linux:105 (KEY_LEFT) -> atset1:57419 */
13
+ "ArrowRight": 0xe04d, /* html:ArrowRight (ArrowRight) -> linux:106 (KEY_RIGHT) -> atset1:57421 */
14
+ "ArrowUp": 0xe048, /* html:ArrowUp (ArrowUp) -> linux:103 (KEY_UP) -> atset1:57416 */
15
+ "AudioVolumeDown": 0xe02e, /* html:AudioVolumeDown (AudioVolumeDown) -> linux:114 (KEY_VOLUMEDOWN) -> atset1:57390 */
16
+ "AudioVolumeMute": 0xe020, /* html:AudioVolumeMute (AudioVolumeMute) -> linux:113 (KEY_MUTE) -> atset1:57376 */
17
+ "AudioVolumeUp": 0xe030, /* html:AudioVolumeUp (AudioVolumeUp) -> linux:115 (KEY_VOLUMEUP) -> atset1:57392 */
18
+ "Backquote": 0x29, /* html:Backquote (Backquote) -> linux:41 (KEY_GRAVE) -> atset1:41 */
19
+ "Backslash": 0x2b, /* html:Backslash (Backslash) -> linux:43 (KEY_BACKSLASH) -> atset1:43 */
20
+ "Backspace": 0xe, /* html:Backspace (Backspace) -> linux:14 (KEY_BACKSPACE) -> atset1:14 */
21
+ "BracketLeft": 0x1a, /* html:BracketLeft (BracketLeft) -> linux:26 (KEY_LEFTBRACE) -> atset1:26 */
22
+ "BracketRight": 0x1b, /* html:BracketRight (BracketRight) -> linux:27 (KEY_RIGHTBRACE) -> atset1:27 */
23
+ "BrowserBack": 0xe06a, /* html:BrowserBack (BrowserBack) -> linux:158 (KEY_BACK) -> atset1:57450 */
24
+ "BrowserFavorites": 0xe066, /* html:BrowserFavorites (BrowserFavorites) -> linux:156 (KEY_BOOKMARKS) -> atset1:57446 */
25
+ "BrowserForward": 0xe069, /* html:BrowserForward (BrowserForward) -> linux:159 (KEY_FORWARD) -> atset1:57449 */
26
+ "BrowserHome": 0xe032, /* html:BrowserHome (BrowserHome) -> linux:172 (KEY_HOMEPAGE) -> atset1:57394 */
27
+ "BrowserRefresh": 0xe067, /* html:BrowserRefresh (BrowserRefresh) -> linux:173 (KEY_REFRESH) -> atset1:57447 */
28
+ "BrowserSearch": 0xe065, /* html:BrowserSearch (BrowserSearch) -> linux:217 (KEY_SEARCH) -> atset1:57445 */
29
+ "BrowserStop": 0xe068, /* html:BrowserStop (BrowserStop) -> linux:128 (KEY_STOP) -> atset1:57448 */
30
+ "CapsLock": 0x3a, /* html:CapsLock (CapsLock) -> linux:58 (KEY_CAPSLOCK) -> atset1:58 */
31
+ "Comma": 0x33, /* html:Comma (Comma) -> linux:51 (KEY_COMMA) -> atset1:51 */
32
+ "ContextMenu": 0xe05d, /* html:ContextMenu (ContextMenu) -> linux:127 (KEY_COMPOSE) -> atset1:57437 */
33
+ "ControlLeft": 0x1d, /* html:ControlLeft (ControlLeft) -> linux:29 (KEY_LEFTCTRL) -> atset1:29 */
34
+ "ControlRight": 0xe01d, /* html:ControlRight (ControlRight) -> linux:97 (KEY_RIGHTCTRL) -> atset1:57373 */
35
+ "Convert": 0x79, /* html:Convert (Convert) -> linux:92 (KEY_HENKAN) -> atset1:121 */
36
+ "Copy": 0xe078, /* html:Copy (Copy) -> linux:133 (KEY_COPY) -> atset1:57464 */
37
+ "Cut": 0xe03c, /* html:Cut (Cut) -> linux:137 (KEY_CUT) -> atset1:57404 */
38
+ "Delete": 0xe053, /* html:Delete (Delete) -> linux:111 (KEY_DELETE) -> atset1:57427 */
39
+ "Digit0": 0xb, /* html:Digit0 (Digit0) -> linux:11 (KEY_0) -> atset1:11 */
40
+ "Digit1": 0x2, /* html:Digit1 (Digit1) -> linux:2 (KEY_1) -> atset1:2 */
41
+ "Digit2": 0x3, /* html:Digit2 (Digit2) -> linux:3 (KEY_2) -> atset1:3 */
42
+ "Digit3": 0x4, /* html:Digit3 (Digit3) -> linux:4 (KEY_3) -> atset1:4 */
43
+ "Digit4": 0x5, /* html:Digit4 (Digit4) -> linux:5 (KEY_4) -> atset1:5 */
44
+ "Digit5": 0x6, /* html:Digit5 (Digit5) -> linux:6 (KEY_5) -> atset1:6 */
45
+ "Digit6": 0x7, /* html:Digit6 (Digit6) -> linux:7 (KEY_6) -> atset1:7 */
46
+ "Digit7": 0x8, /* html:Digit7 (Digit7) -> linux:8 (KEY_7) -> atset1:8 */
47
+ "Digit8": 0x9, /* html:Digit8 (Digit8) -> linux:9 (KEY_8) -> atset1:9 */
48
+ "Digit9": 0xa, /* html:Digit9 (Digit9) -> linux:10 (KEY_9) -> atset1:10 */
49
+ "Eject": 0xe07d, /* html:Eject (Eject) -> linux:162 (KEY_EJECTCLOSECD) -> atset1:57469 */
50
+ "End": 0xe04f, /* html:End (End) -> linux:107 (KEY_END) -> atset1:57423 */
51
+ "Enter": 0x1c, /* html:Enter (Enter) -> linux:28 (KEY_ENTER) -> atset1:28 */
52
+ "Equal": 0xd, /* html:Equal (Equal) -> linux:13 (KEY_EQUAL) -> atset1:13 */
53
+ "Escape": 0x1, /* html:Escape (Escape) -> linux:1 (KEY_ESC) -> atset1:1 */
54
+ "F1": 0x3b, /* html:F1 (F1) -> linux:59 (KEY_F1) -> atset1:59 */
55
+ "F10": 0x44, /* html:F10 (F10) -> linux:68 (KEY_F10) -> atset1:68 */
56
+ "F11": 0x57, /* html:F11 (F11) -> linux:87 (KEY_F11) -> atset1:87 */
57
+ "F12": 0x58, /* html:F12 (F12) -> linux:88 (KEY_F12) -> atset1:88 */
58
+ "F13": 0x5d, /* html:F13 (F13) -> linux:183 (KEY_F13) -> atset1:93 */
59
+ "F14": 0x5e, /* html:F14 (F14) -> linux:184 (KEY_F14) -> atset1:94 */
60
+ "F15": 0x5f, /* html:F15 (F15) -> linux:185 (KEY_F15) -> atset1:95 */
61
+ "F16": 0x55, /* html:F16 (F16) -> linux:186 (KEY_F16) -> atset1:85 */
62
+ "F17": 0xe003, /* html:F17 (F17) -> linux:187 (KEY_F17) -> atset1:57347 */
63
+ "F18": 0xe077, /* html:F18 (F18) -> linux:188 (KEY_F18) -> atset1:57463 */
64
+ "F19": 0xe004, /* html:F19 (F19) -> linux:189 (KEY_F19) -> atset1:57348 */
65
+ "F2": 0x3c, /* html:F2 (F2) -> linux:60 (KEY_F2) -> atset1:60 */
66
+ "F20": 0x5a, /* html:F20 (F20) -> linux:190 (KEY_F20) -> atset1:90 */
67
+ "F21": 0x74, /* html:F21 (F21) -> linux:191 (KEY_F21) -> atset1:116 */
68
+ "F22": 0xe079, /* html:F22 (F22) -> linux:192 (KEY_F22) -> atset1:57465 */
69
+ "F23": 0x6d, /* html:F23 (F23) -> linux:193 (KEY_F23) -> atset1:109 */
70
+ "F24": 0x6f, /* html:F24 (F24) -> linux:194 (KEY_F24) -> atset1:111 */
71
+ "F3": 0x3d, /* html:F3 (F3) -> linux:61 (KEY_F3) -> atset1:61 */
72
+ "F4": 0x3e, /* html:F4 (F4) -> linux:62 (KEY_F4) -> atset1:62 */
73
+ "F5": 0x3f, /* html:F5 (F5) -> linux:63 (KEY_F5) -> atset1:63 */
74
+ "F6": 0x40, /* html:F6 (F6) -> linux:64 (KEY_F6) -> atset1:64 */
75
+ "F7": 0x41, /* html:F7 (F7) -> linux:65 (KEY_F7) -> atset1:65 */
76
+ "F8": 0x42, /* html:F8 (F8) -> linux:66 (KEY_F8) -> atset1:66 */
77
+ "F9": 0x43, /* html:F9 (F9) -> linux:67 (KEY_F9) -> atset1:67 */
78
+ "Find": 0xe041, /* html:Find (Find) -> linux:136 (KEY_FIND) -> atset1:57409 */
79
+ "Help": 0xe075, /* html:Help (Help) -> linux:138 (KEY_HELP) -> atset1:57461 */
80
+ "Hiragana": 0x77, /* html:Hiragana (Lang4) -> linux:91 (KEY_HIRAGANA) -> atset1:119 */
81
+ "Home": 0xe047, /* html:Home (Home) -> linux:102 (KEY_HOME) -> atset1:57415 */
82
+ "Insert": 0xe052, /* html:Insert (Insert) -> linux:110 (KEY_INSERT) -> atset1:57426 */
83
+ "IntlBackslash": 0x56, /* html:IntlBackslash (IntlBackslash) -> linux:86 (KEY_102ND) -> atset1:86 */
84
+ "IntlRo": 0x73, /* html:IntlRo (IntlRo) -> linux:89 (KEY_RO) -> atset1:115 */
85
+ "IntlYen": 0x7d, /* html:IntlYen (IntlYen) -> linux:124 (KEY_YEN) -> atset1:125 */
86
+ "KanaMode": 0x70, /* html:KanaMode (KanaMode) -> linux:93 (KEY_KATAKANAHIRAGANA) -> atset1:112 */
87
+ "Katakana": 0x78, /* html:Katakana (Lang3) -> linux:90 (KEY_KATAKANA) -> atset1:120 */
88
+ "KeyA": 0x1e, /* html:KeyA (KeyA) -> linux:30 (KEY_A) -> atset1:30 */
89
+ "KeyB": 0x30, /* html:KeyB (KeyB) -> linux:48 (KEY_B) -> atset1:48 */
90
+ "KeyC": 0x2e, /* html:KeyC (KeyC) -> linux:46 (KEY_C) -> atset1:46 */
91
+ "KeyD": 0x20, /* html:KeyD (KeyD) -> linux:32 (KEY_D) -> atset1:32 */
92
+ "KeyE": 0x12, /* html:KeyE (KeyE) -> linux:18 (KEY_E) -> atset1:18 */
93
+ "KeyF": 0x21, /* html:KeyF (KeyF) -> linux:33 (KEY_F) -> atset1:33 */
94
+ "KeyG": 0x22, /* html:KeyG (KeyG) -> linux:34 (KEY_G) -> atset1:34 */
95
+ "KeyH": 0x23, /* html:KeyH (KeyH) -> linux:35 (KEY_H) -> atset1:35 */
96
+ "KeyI": 0x17, /* html:KeyI (KeyI) -> linux:23 (KEY_I) -> atset1:23 */
97
+ "KeyJ": 0x24, /* html:KeyJ (KeyJ) -> linux:36 (KEY_J) -> atset1:36 */
98
+ "KeyK": 0x25, /* html:KeyK (KeyK) -> linux:37 (KEY_K) -> atset1:37 */
99
+ "KeyL": 0x26, /* html:KeyL (KeyL) -> linux:38 (KEY_L) -> atset1:38 */
100
+ "KeyM": 0x32, /* html:KeyM (KeyM) -> linux:50 (KEY_M) -> atset1:50 */
101
+ "KeyN": 0x31, /* html:KeyN (KeyN) -> linux:49 (KEY_N) -> atset1:49 */
102
+ "KeyO": 0x18, /* html:KeyO (KeyO) -> linux:24 (KEY_O) -> atset1:24 */
103
+ "KeyP": 0x19, /* html:KeyP (KeyP) -> linux:25 (KEY_P) -> atset1:25 */
104
+ "KeyQ": 0x10, /* html:KeyQ (KeyQ) -> linux:16 (KEY_Q) -> atset1:16 */
105
+ "KeyR": 0x13, /* html:KeyR (KeyR) -> linux:19 (KEY_R) -> atset1:19 */
106
+ "KeyS": 0x1f, /* html:KeyS (KeyS) -> linux:31 (KEY_S) -> atset1:31 */
107
+ "KeyT": 0x14, /* html:KeyT (KeyT) -> linux:20 (KEY_T) -> atset1:20 */
108
+ "KeyU": 0x16, /* html:KeyU (KeyU) -> linux:22 (KEY_U) -> atset1:22 */
109
+ "KeyV": 0x2f, /* html:KeyV (KeyV) -> linux:47 (KEY_V) -> atset1:47 */
110
+ "KeyW": 0x11, /* html:KeyW (KeyW) -> linux:17 (KEY_W) -> atset1:17 */
111
+ "KeyX": 0x2d, /* html:KeyX (KeyX) -> linux:45 (KEY_X) -> atset1:45 */
112
+ "KeyY": 0x15, /* html:KeyY (KeyY) -> linux:21 (KEY_Y) -> atset1:21 */
113
+ "KeyZ": 0x2c, /* html:KeyZ (KeyZ) -> linux:44 (KEY_Z) -> atset1:44 */
114
+ "Lang1": 0x72, /* html:Lang1 (Lang1) -> linux:122 (KEY_HANGEUL) -> atset1:114 */
115
+ "Lang2": 0x71, /* html:Lang2 (Lang2) -> linux:123 (KEY_HANJA) -> atset1:113 */
116
+ "Lang3": 0x78, /* html:Lang3 (Lang3) -> linux:90 (KEY_KATAKANA) -> atset1:120 */
117
+ "Lang4": 0x77, /* html:Lang4 (Lang4) -> linux:91 (KEY_HIRAGANA) -> atset1:119 */
118
+ "Lang5": 0x76, /* html:Lang5 (Lang5) -> linux:85 (KEY_ZENKAKUHANKAKU) -> atset1:118 */
119
+ "LaunchApp1": 0xe06b, /* html:LaunchApp1 (LaunchApp1) -> linux:157 (KEY_COMPUTER) -> atset1:57451 */
120
+ "LaunchApp2": 0xe021, /* html:LaunchApp2 (LaunchApp2) -> linux:140 (KEY_CALC) -> atset1:57377 */
121
+ "LaunchMail": 0xe06c, /* html:LaunchMail (LaunchMail) -> linux:155 (KEY_MAIL) -> atset1:57452 */
122
+ "MediaPlayPause": 0xe022, /* html:MediaPlayPause (MediaPlayPause) -> linux:164 (KEY_PLAYPAUSE) -> atset1:57378 */
123
+ "MediaSelect": 0xe06d, /* html:MediaSelect (MediaSelect) -> linux:226 (KEY_MEDIA) -> atset1:57453 */
124
+ "MediaStop": 0xe024, /* html:MediaStop (MediaStop) -> linux:166 (KEY_STOPCD) -> atset1:57380 */
125
+ "MediaTrackNext": 0xe019, /* html:MediaTrackNext (MediaTrackNext) -> linux:163 (KEY_NEXTSONG) -> atset1:57369 */
126
+ "MediaTrackPrevious": 0xe010, /* html:MediaTrackPrevious (MediaTrackPrevious) -> linux:165 (KEY_PREVIOUSSONG) -> atset1:57360 */
127
+ "MetaLeft": 0xe05b, /* html:MetaLeft (MetaLeft) -> linux:125 (KEY_LEFTMETA) -> atset1:57435 */
128
+ "MetaRight": 0xe05c, /* html:MetaRight (MetaRight) -> linux:126 (KEY_RIGHTMETA) -> atset1:57436 */
129
+ "Minus": 0xc, /* html:Minus (Minus) -> linux:12 (KEY_MINUS) -> atset1:12 */
130
+ "NonConvert": 0x7b, /* html:NonConvert (NonConvert) -> linux:94 (KEY_MUHENKAN) -> atset1:123 */
131
+ "NumLock": 0x45, /* html:NumLock (NumLock) -> linux:69 (KEY_NUMLOCK) -> atset1:69 */
132
+ "Numpad0": 0x52, /* html:Numpad0 (Numpad0) -> linux:82 (KEY_KP0) -> atset1:82 */
133
+ "Numpad1": 0x4f, /* html:Numpad1 (Numpad1) -> linux:79 (KEY_KP1) -> atset1:79 */
134
+ "Numpad2": 0x50, /* html:Numpad2 (Numpad2) -> linux:80 (KEY_KP2) -> atset1:80 */
135
+ "Numpad3": 0x51, /* html:Numpad3 (Numpad3) -> linux:81 (KEY_KP3) -> atset1:81 */
136
+ "Numpad4": 0x4b, /* html:Numpad4 (Numpad4) -> linux:75 (KEY_KP4) -> atset1:75 */
137
+ "Numpad5": 0x4c, /* html:Numpad5 (Numpad5) -> linux:76 (KEY_KP5) -> atset1:76 */
138
+ "Numpad6": 0x4d, /* html:Numpad6 (Numpad6) -> linux:77 (KEY_KP6) -> atset1:77 */
139
+ "Numpad7": 0x47, /* html:Numpad7 (Numpad7) -> linux:71 (KEY_KP7) -> atset1:71 */
140
+ "Numpad8": 0x48, /* html:Numpad8 (Numpad8) -> linux:72 (KEY_KP8) -> atset1:72 */
141
+ "Numpad9": 0x49, /* html:Numpad9 (Numpad9) -> linux:73 (KEY_KP9) -> atset1:73 */
142
+ "NumpadAdd": 0x4e, /* html:NumpadAdd (NumpadAdd) -> linux:78 (KEY_KPPLUS) -> atset1:78 */
143
+ "NumpadComma": 0x7e, /* html:NumpadComma (NumpadComma) -> linux:121 (KEY_KPCOMMA) -> atset1:126 */
144
+ "NumpadDecimal": 0x53, /* html:NumpadDecimal (NumpadDecimal) -> linux:83 (KEY_KPDOT) -> atset1:83 */
145
+ "NumpadDivide": 0xe035, /* html:NumpadDivide (NumpadDivide) -> linux:98 (KEY_KPSLASH) -> atset1:57397 */
146
+ "NumpadEnter": 0xe01c, /* html:NumpadEnter (NumpadEnter) -> linux:96 (KEY_KPENTER) -> atset1:57372 */
147
+ "NumpadEqual": 0x59, /* html:NumpadEqual (NumpadEqual) -> linux:117 (KEY_KPEQUAL) -> atset1:89 */
148
+ "NumpadMultiply": 0x37, /* html:NumpadMultiply (NumpadMultiply) -> linux:55 (KEY_KPASTERISK) -> atset1:55 */
149
+ "NumpadParenLeft": 0xe076, /* html:NumpadParenLeft (NumpadParenLeft) -> linux:179 (KEY_KPLEFTPAREN) -> atset1:57462 */
150
+ "NumpadParenRight": 0xe07b, /* html:NumpadParenRight (NumpadParenRight) -> linux:180 (KEY_KPRIGHTPAREN) -> atset1:57467 */
151
+ "NumpadSubtract": 0x4a, /* html:NumpadSubtract (NumpadSubtract) -> linux:74 (KEY_KPMINUS) -> atset1:74 */
152
+ "Open": 0x64, /* html:Open (Open) -> linux:134 (KEY_OPEN) -> atset1:100 */
153
+ "PageDown": 0xe051, /* html:PageDown (PageDown) -> linux:109 (KEY_PAGEDOWN) -> atset1:57425 */
154
+ "PageUp": 0xe049, /* html:PageUp (PageUp) -> linux:104 (KEY_PAGEUP) -> atset1:57417 */
155
+ "Paste": 0x65, /* html:Paste (Paste) -> linux:135 (KEY_PASTE) -> atset1:101 */
156
+ "Pause": 0xe046, /* html:Pause (Pause) -> linux:119 (KEY_PAUSE) -> atset1:57414 */
157
+ "Period": 0x34, /* html:Period (Period) -> linux:52 (KEY_DOT) -> atset1:52 */
158
+ "Power": 0xe05e, /* html:Power (Power) -> linux:116 (KEY_POWER) -> atset1:57438 */
159
+ "PrintScreen": 0x54, /* html:PrintScreen (PrintScreen) -> linux:99 (KEY_SYSRQ) -> atset1:84 */
160
+ "Props": 0xe006, /* html:Props (Props) -> linux:130 (KEY_PROPS) -> atset1:57350 */
161
+ "Quote": 0x28, /* html:Quote (Quote) -> linux:40 (KEY_APOSTROPHE) -> atset1:40 */
162
+ "ScrollLock": 0x46, /* html:ScrollLock (ScrollLock) -> linux:70 (KEY_SCROLLLOCK) -> atset1:70 */
163
+ "Semicolon": 0x27, /* html:Semicolon (Semicolon) -> linux:39 (KEY_SEMICOLON) -> atset1:39 */
164
+ "ShiftLeft": 0x2a, /* html:ShiftLeft (ShiftLeft) -> linux:42 (KEY_LEFTSHIFT) -> atset1:42 */
165
+ "ShiftRight": 0x36, /* html:ShiftRight (ShiftRight) -> linux:54 (KEY_RIGHTSHIFT) -> atset1:54 */
166
+ "Slash": 0x35, /* html:Slash (Slash) -> linux:53 (KEY_SLASH) -> atset1:53 */
167
+ "Sleep": 0xe05f, /* html:Sleep (Sleep) -> linux:142 (KEY_SLEEP) -> atset1:57439 */
168
+ "Space": 0x39, /* html:Space (Space) -> linux:57 (KEY_SPACE) -> atset1:57 */
169
+ "Suspend": 0xe025, /* html:Suspend (Suspend) -> linux:205 (KEY_SUSPEND) -> atset1:57381 */
170
+ "Tab": 0xf, /* html:Tab (Tab) -> linux:15 (KEY_TAB) -> atset1:15 */
171
+ "Undo": 0xe007, /* html:Undo (Undo) -> linux:131 (KEY_UNDO) -> atset1:57351 */
172
+ "WakeUp": 0xe063, /* html:WakeUp (WakeUp) -> linux:143 (KEY_WAKEUP) -> atset1:57443 */
173
+ };