1 module gfx.window.win32.keymap;
2 
3 version (Windows):
4 
5 import gfx.window.keys;
6 import core.sys.windows.windows;
7 
8 
9 static KeySym getKeysym(in WPARAM vkey)
10 {
11     assert(cast(ubyte)vkey == vkey);
12     const sym = keysymTable[vkey];
13     return (sym == KeySym.none) ? cast(KeySym)vkey : sym;
14 }
15 
16 static KeyCode getKeycode(in ubyte scancode)
17 {
18     return keycodeTable[scancode];
19 }
20 
21 
22 private
23 {
24 
25     immutable KeySym[256] keysymTable;
26     immutable KeyCode[256] keycodeTable;
27 
28     shared static this()
29     {
30 
31         keycodeTable = [
32             // 0x00     0
33             KeyCode.unknown,
34             KeyCode.escape,
35             KeyCode.d1,
36             KeyCode.d2,
37             KeyCode.d3,
38             KeyCode.d4,
39             KeyCode.d5,
40             KeyCode.d6,
41             KeyCode.d7,
42             KeyCode.d8,
43             KeyCode.d9,
44             KeyCode.d0,
45             KeyCode.minus,
46             KeyCode.equals,
47             KeyCode.backspace,
48             KeyCode.tab,
49             // 0x10     16
50             KeyCode.q,
51             KeyCode.w,
52             KeyCode.e,
53             KeyCode.r,
54             KeyCode.t,
55             KeyCode.y,
56             KeyCode.u,
57             KeyCode.i,
58             KeyCode.o,
59             KeyCode.p,
60             KeyCode.leftBracket,
61             KeyCode.rightBracket,
62             KeyCode.enter,
63             KeyCode.leftCtrl,
64             KeyCode.a,
65             KeyCode.s,
66             // 0x20     32
67             KeyCode.d,
68             KeyCode.f,
69             KeyCode.g,
70             KeyCode.h,
71             KeyCode.j,
72             KeyCode.k,
73             KeyCode.l,
74             KeyCode.semicolon,
75             KeyCode.quote,
76             KeyCode.grave,
77             KeyCode.leftShift,
78             KeyCode.uK_Hash,
79             KeyCode.z,
80             KeyCode.x,
81             KeyCode.c,
82             KeyCode.v,
83             // 0x30     48
84             KeyCode.b,
85             KeyCode.n,
86             KeyCode.m,
87             KeyCode.comma,
88             KeyCode.period,
89             KeyCode.slash,
90             KeyCode.rightShift,
91             KeyCode.printScreen,
92             KeyCode.leftAlt,
93             KeyCode.space,
94             KeyCode.capsLock,
95             KeyCode.f1,
96             KeyCode.f2,
97             KeyCode.f3,
98             KeyCode.f4,
99             KeyCode.f5,
100             // 0x40     64
101             KeyCode.f6,
102             KeyCode.f7,
103             KeyCode.f8,
104             KeyCode.f9,
105             KeyCode.f10,
106             KeyCode.kp_NumLock,
107             KeyCode.scrollLock,
108             KeyCode.home,
109             KeyCode.up,
110             KeyCode.pageUp,
111             KeyCode.kp_Subtract,
112             KeyCode.left,
113             KeyCode.kp_5,
114             KeyCode.right,
115             KeyCode.kp_Add,
116             KeyCode.end,
117             // 0x50     80
118             KeyCode.down,
119             KeyCode.pageDown,
120             KeyCode.insert,
121             KeyCode.delete_,
122             KeyCode.unknown,
123             KeyCode.unknown,
124             KeyCode.kp_Add,
125             KeyCode.f11,
126             KeyCode.f12,
127             KeyCode.unknown,
128             KeyCode.unknown,
129             KeyCode.unknown,
130             KeyCode.unknown,
131             KeyCode.unknown,
132             KeyCode.unknown,
133             KeyCode.unknown,
134             // 0x60     96
135             KeyCode.unknown,
136             KeyCode.unknown,
137             KeyCode.unknown,
138             KeyCode.unknown,
139             KeyCode.unknown,
140             KeyCode.unknown,
141             KeyCode.unknown,
142             KeyCode.unknown,
143             KeyCode.unknown,
144             KeyCode.unknown,
145             KeyCode.unknown,
146             KeyCode.unknown,
147             KeyCode.unknown,
148             KeyCode.unknown, // line feed
149             KeyCode.unknown,
150             KeyCode.unknown,
151             // 0x70     112
152             KeyCode.unknown,
153             KeyCode.unknown,
154             KeyCode.unknown,
155             KeyCode.unknown,
156             KeyCode.unknown,
157             KeyCode.unknown,
158             KeyCode.unknown,
159             KeyCode.unknown,
160             KeyCode.unknown,
161             KeyCode.unknown,
162             KeyCode.unknown,
163             KeyCode.unknown,
164             KeyCode.unknown,
165             KeyCode.unknown,
166             KeyCode.unknown,
167             KeyCode.unknown,
168             // 0x80     128
169             KeyCode.unknown,
170             KeyCode.unknown,
171             KeyCode.unknown,
172             KeyCode.unknown,
173             KeyCode.unknown,
174             KeyCode.unknown,
175             KeyCode.unknown,
176             KeyCode.unknown,
177             KeyCode.unknown,
178             KeyCode.unknown,
179             KeyCode.unknown,
180             KeyCode.unknown,
181             KeyCode.unknown,
182             KeyCode.unknown,
183             KeyCode.unknown,
184             KeyCode.unknown,
185             // 0x90     144
186             KeyCode.unknown,
187             KeyCode.unknown,
188             KeyCode.unknown,
189             KeyCode.unknown,
190             KeyCode.unknown,
191             KeyCode.unknown,
192             KeyCode.unknown,
193             KeyCode.unknown,
194             KeyCode.unknown,
195             KeyCode.unknown,
196             KeyCode.unknown,
197             KeyCode.unknown,
198             KeyCode.unknown,
199             KeyCode.unknown,
200             KeyCode.unknown,
201             KeyCode.unknown,
202             // 0xA0     160
203             KeyCode.unknown,
204             KeyCode.unknown,
205             KeyCode.unknown,
206             KeyCode.unknown,
207             KeyCode.unknown,
208             KeyCode.unknown,
209             KeyCode.unknown,
210             KeyCode.unknown,
211             KeyCode.unknown,
212             KeyCode.unknown,
213             KeyCode.unknown,
214             KeyCode.unknown,
215             KeyCode.unknown,
216             KeyCode.unknown,
217             KeyCode.unknown,
218             KeyCode.unknown,
219             // 0xB0     176
220             KeyCode.unknown,
221             KeyCode.unknown,
222             KeyCode.unknown,
223             KeyCode.unknown,
224             KeyCode.unknown,
225             KeyCode.unknown,
226             KeyCode.unknown,
227             KeyCode.unknown,
228             KeyCode.unknown,
229             KeyCode.unknown,
230             KeyCode.unknown,
231             KeyCode.unknown,
232             KeyCode.unknown,
233             KeyCode.unknown,
234             KeyCode.unknown,
235             KeyCode.unknown,
236             // 0xC0     192
237             KeyCode.unknown,
238             KeyCode.unknown,
239             KeyCode.unknown,
240             KeyCode.unknown,
241             KeyCode.unknown,
242             KeyCode.unknown,
243             KeyCode.unknown,
244             KeyCode.unknown,
245             KeyCode.unknown,
246             KeyCode.unknown,
247             KeyCode.unknown,
248             KeyCode.unknown,
249             KeyCode.unknown,
250             KeyCode.unknown,
251             KeyCode.unknown,
252             KeyCode.unknown,
253             // 0xD0     208
254             KeyCode.unknown,
255             KeyCode.unknown,
256             KeyCode.unknown,
257             KeyCode.unknown,
258             KeyCode.unknown,
259             KeyCode.unknown,
260             KeyCode.unknown,
261             KeyCode.unknown,
262             KeyCode.unknown,
263             KeyCode.unknown,
264             KeyCode.unknown,
265             KeyCode.unknown,
266             KeyCode.unknown,
267             KeyCode.unknown,
268             KeyCode.unknown,
269             KeyCode.unknown,
270             // 0xE0     224
271             KeyCode.unknown,
272             KeyCode.unknown,
273             KeyCode.unknown,
274             KeyCode.unknown,
275             KeyCode.unknown,
276             KeyCode.unknown,
277             KeyCode.unknown,
278             KeyCode.unknown,
279             KeyCode.unknown,
280             KeyCode.unknown,
281             KeyCode.unknown,
282             KeyCode.unknown,
283             KeyCode.unknown,
284             KeyCode.unknown,
285             KeyCode.unknown,
286             KeyCode.unknown,
287             // 0xF0     240
288             KeyCode.unknown,
289             KeyCode.unknown,
290             KeyCode.unknown,
291             KeyCode.unknown,
292             KeyCode.unknown,
293             KeyCode.unknown,
294             KeyCode.unknown,
295             KeyCode.unknown,
296             KeyCode.unknown,
297             KeyCode.unknown,
298             KeyCode.unknown,
299             KeyCode.unknown,
300             KeyCode.unknown,
301             KeyCode.unknown,
302             KeyCode.unknown,
303             KeyCode.unknown
304         ];
305 
306         // a little help from Qt for that one
307         keysymTable = [
308                                             // Dec |  Hex | Windows Virtual key
309             KeySym.unknown,                //   0   0x00
310             KeySym.unknown,                //   1   0x01   VK_LBUTTON          | Left mouse button
311             KeySym.unknown,                //   2   0x02   VK_RBUTTON          | Right mouse button
312             KeySym.cancel,                 //   3   0x03   VK_CANCEL           | Control-Break processing
313             KeySym.unknown,                //   4   0x04   VK_MBUTTON          | Middle mouse button
314             KeySym.unknown,                //   5   0x05   VK_XBUTTON1         | X1 mouse button
315             KeySym.unknown,                //   6   0x06   VK_XBUTTON2         | X2 mouse button
316             KeySym.unknown,                //   7   0x07   -- unassigned --
317             KeySym.backspace,              //   8   0x08   VK_BACK             | BackSpace key
318             KeySym.tab,                    //   9   0x09   VK_TAB              | Tab key
319             KeySym.unknown,                //  10   0x0A   -- reserved --
320             KeySym.unknown,                //  11   0x0B   -- reserved --
321             KeySym.clear,                  //  12   0x0C   VK_CLEAR            | Clear key
322             KeySym.return_,                //  13   0x0D   VK_RETURN           | Enter key
323             KeySym.unknown,                //  14   0x0E   -- unassigned --
324             KeySym.unknown,                //  15   0x0F   -- unassigned --
325             KeySym.shift,                  //  16   0x10   VK_SHIFT            | Shift key
326             KeySym.ctrl,                   //  17   0x11   VK_CONTROL          | Ctrl key
327             KeySym.alt,                    //  18   0x12   VK_MENU             | Alt key
328             KeySym.pause,                  //  19   0x13   VK_PAUSE            | Pause key
329             KeySym.capsLock,               //  20   0x14   VK_CAPITAL          | Caps-Lock
330             KeySym.unknown,                //  21   0x15   VK_KANA / VK_HANGUL | IME Kana or Hangul mode
331             KeySym.unknown,                //  22   0x16   -- unassigned --
332             KeySym.junja,                  //  23   0x17   VK_JUNJA            | IME Junja mode
333             KeySym.final_,                 //  24   0x18   VK_FINAL            | IME final mode
334             KeySym.hanja,                  //  25   0x19   VK_HANJA / VK_KANJI | IME Hanja or Kanji mode
335             KeySym.unknown,                //  26   0x1A   -- unassigned --
336             KeySym.escape,                 //  27   0x1B   VK_ESCAPE           | Esc key
337             KeySym.unknown,                //  28   0x1C   VK_CONVERT          | IME convert
338             KeySym.unknown,                //  29   0x1D   VK_NONCONVERT       | IME non-convert
339             KeySym.unknown,                //  30   0x1E   VK_ACCEPT           | IME accept
340             KeySym.modeSwitch,             //  31   0x1F   VK_MODECHANGE       | IME mode change request
341             KeySym.space,                  //  32   0x20   VK_SPACE            | Spacebar
342             KeySym.pageUp,                 //  33   0x21   VK_PRIOR            | Page Up key
343             KeySym.pageDown,               //  34   0x22   VK_NEXT             | Page Down key
344             KeySym.end,                    //  35   0x23   VK_END              | End key
345             KeySym.home,                   //  36   0x24   VK_HOME             | Home key
346             KeySym.left,                   //  37   0x25   VK_LEFT             | Left arrow key
347             KeySym.up,                     //  38   0x26   VK_UP               | Up arrow key
348             KeySym.right,                  //  39   0x27   VK_RIGHT            | Right arrow key
349             KeySym.down,                   //  40   0x28   VK_DOWN             | Down arrow key
350             KeySym.select,                 //  41   0x29   VK_SELECT           | Select key
351             KeySym.printer,                //  42   0x2A   VK_PRINT            | Print key
352             KeySym.execute,                //  43   0x2B   VK_EXECUTE          | Execute key
353             KeySym.print,                  //  44   0x2C   VK_SNAPSHOT         | Print Screen key
354             KeySym.insert,                 //  45   0x2D   VK_INSERT           | Ins key
355             KeySym.delete_,                //  46   0x2E   VK_DELETE           | Del key
356             KeySym.help,                   //  47   0x2F   VK_HELP             | Help key
357             KeySym.none,                   //  48   0x30   (VK_0)              | 0 key
358             KeySym.none,                   //  49   0x31   (VK_1)              | 1 key
359             KeySym.none,                   //  50   0x32   (VK_2)              | 2 key
360             KeySym.none,                   //  51   0x33   (VK_3)              | 3 key
361             KeySym.none,                   //  52   0x34   (VK_4)              | 4 key
362             KeySym.none,                   //  53   0x35   (VK_5)              | 5 key
363             KeySym.none,                   //  54   0x36   (VK_6)              | 6 key
364             KeySym.none,                   //  55   0x37   (VK_7)              | 7 key
365             KeySym.none,                   //  56   0x38   (VK_8)              | 8 key
366             KeySym.none,                   //  57   0x39   (VK_9)              | 9 key
367             KeySym.unknown,                //  58   0x3A   -- unassigned --
368             KeySym.unknown,                //  59   0x3B   -- unassigned --
369             KeySym.unknown,                //  60   0x3C   -- unassigned --
370             KeySym.unknown,                //  61   0x3D   -- unassigned --
371             KeySym.unknown,                //  62   0x3E   -- unassigned --
372             KeySym.unknown,                //  63   0x3F   -- unassigned --
373             KeySym.unknown,                //  64   0x40   -- unassigned --
374             KeySym.none,                   //  65   0x41   (VK_A)              | A key
375             KeySym.none,                   //  66   0x42   (VK_B)              | B key
376             KeySym.none,                   //  67   0x43   (VK_C)              | C key
377             KeySym.none,                   //  68   0x44   (VK_D)              | D key
378             KeySym.none,                   //  69   0x45   (VK_E)              | E key
379             KeySym.none,                   //  70   0x46   (VK_F)              | F key
380             KeySym.none,                   //  71   0x47   (VK_G)              | G key
381             KeySym.none,                   //  72   0x48   (VK_H)              | H key
382             KeySym.none,                   //  73   0x49   (VK_I)              | I key
383             KeySym.none,                   //  74   0x4A   (VK_J)              | J key
384             KeySym.none,                   //  75   0x4B   (VK_K)              | K key
385             KeySym.none,                   //  76   0x4C   (VK_L)              | L key
386             KeySym.none,                   //  77   0x4D   (VK_M)              | M key
387             KeySym.none,                   //  78   0x4E   (VK_N)              | N key
388             KeySym.none,                   //  79   0x4F   (VK_O)              | O key
389             KeySym.none,                   //  80   0x50   (VK_P)              | P key
390             KeySym.none,                   //  81   0x51   (VK_Q)              | Q key
391             KeySym.none,                   //  82   0x52   (VK_R)              | R key
392             KeySym.none,                   //  83   0x53   (VK_S)              | S key
393             KeySym.none,                   //  84   0x54   (VK_T)              | T key
394             KeySym.none,                   //  85   0x55   (VK_U)              | U key
395             KeySym.none,                   //  86   0x56   (VK_V)              | V key
396             KeySym.none,                   //  87   0x57   (VK_W)              | W key
397             KeySym.none,                   //  88   0x58   (VK_X)              | X key
398             KeySym.none,                   //  89   0x59   (VK_Y)              | Y key
399             KeySym.none,                   //  90   0x5A   (VK_Z)              | Z key
400             KeySym.leftSuper,              //  91   0x5B   VK_LWIN             | Left Windows  - MS Natural kbd
401             KeySym.rightSuper,             //  92   0x5C   VK_RWIN             | Right Windows - MS Natural kbd
402             KeySym.menu,                   //  93   0x5D   VK_APPS             | Application key-MS Natural kbd
403             KeySym.unknown,                //  94   0x5E   -- reserved --
404             KeySym.sleep,                  //  95   0x5F   VK_SLEEP
405             KeySym.kp_0,                   //  96   0x60   VK_NUMPAD0          | Numeric keypad 0 key
406             KeySym.kp_1,                   //  97   0x61   VK_NUMPAD1          | Numeric keypad 1 key
407             KeySym.kp_2,                   //  98   0x62   VK_NUMPAD2          | Numeric keypad 2 key
408             KeySym.kp_3,                   //  99   0x63   VK_NUMPAD3          | Numeric keypad 3 key
409             KeySym.kp_4,                   // 100   0x64   VK_NUMPAD4          | Numeric keypad 4 key
410             KeySym.kp_5,                   // 101   0x65   VK_NUMPAD5          | Numeric keypad 5 key
411             KeySym.kp_6,                   // 102   0x66   VK_NUMPAD6          | Numeric keypad 6 key
412             KeySym.kp_7,                   // 103   0x67   VK_NUMPAD7          | Numeric keypad 7 key
413             KeySym.kp_8,                   // 104   0x68   VK_NUMPAD8          | Numeric keypad 8 key
414             KeySym.kp_9,                   // 105   0x69   VK_NUMPAD9          | Numeric keypad 9 key
415             KeySym.kp_Multiply,            // 106   0x6A   VK_MULTIPLY         | Multiply key
416             KeySym.kp_Add,                 // 107   0x6B   VK_ADD              | Add key
417             KeySym.kp_Separator,           // 108   0x6C   VK_SEPARATOR        | Separator key
418             KeySym.kp_Subtract,            // 109   0x6D   VK_SUBTRACT         | Subtract key
419             KeySym.kp_Decimal,             // 110   0x6E   VK_DECIMAL          | Decimal key
420             KeySym.kp_Divide,              // 111   0x6F   VK_DIVIDE           | Divide key
421             KeySym.f1,                     // 112   0x70   VK_F1               | F1 key
422             KeySym.f2,                     // 113   0x71   VK_F2               | F2 key
423             KeySym.f3,                     // 114   0x72   VK_F3               | F3 key
424             KeySym.f4,                     // 115   0x73   VK_F4               | F4 key
425             KeySym.f5,                     // 116   0x74   VK_F5               | F5 key
426             KeySym.f6,                     // 117   0x75   VK_F6               | F6 key
427             KeySym.f7,                     // 118   0x76   VK_F7               | F7 key
428             KeySym.f8,                     // 119   0x77   VK_F8               | F8 key
429             KeySym.f9,                     // 120   0x78   VK_F9               | F9 key
430             KeySym.f10,                    // 121   0x79   VK_F10              | F10 key
431             KeySym.f11,                    // 122   0x7A   VK_F11              | F11 key
432             KeySym.f12,                    // 123   0x7B   VK_F12              | F12 key
433             KeySym.f13,                    // 124   0x7C   VK_F13              | F13 key
434             KeySym.f14,                    // 125   0x7D   VK_F14              | F14 key
435             KeySym.f15,                    // 126   0x7E   VK_F15              | F15 key
436             KeySym.f16,                    // 127   0x7F   VK_F16              | F16 key
437             KeySym.f17,                    // 128   0x80   VK_F17              | F17 key
438             KeySym.f18,                    // 129   0x81   VK_F18              | F18 key
439             KeySym.f19,                    // 130   0x82   VK_F19              | F19 key
440             KeySym.f20,                    // 131   0x83   VK_F20              | F20 key
441             KeySym.f21,                    // 132   0x84   VK_F21              | F21 key
442             KeySym.f22,                    // 133   0x85   VK_F22              | F22 key
443             KeySym.f23,                    // 134   0x86   VK_F23              | F23 key
444             KeySym.f24,                    // 135   0x87   VK_F24              | F24 key
445             KeySym.unknown,                // 136   0x88   -- unassigned --
446             KeySym.unknown,                // 137   0x89   -- unassigned --
447             KeySym.unknown,                // 138   0x8A   -- unassigned --
448             KeySym.unknown,                // 139   0x8B   -- unassigned --
449             KeySym.unknown,                // 140   0x8C   -- unassigned --
450             KeySym.unknown,                // 141   0x8D   -- unassigned --
451             KeySym.unknown,                // 142   0x8E   -- unassigned --
452             KeySym.unknown,                // 143   0x8F   -- unassigned --
453             KeySym.numLock,                // 144   0x90   VK_NUMLOCK          | Num Lock key
454             KeySym.scrollLock,             // 145   0x91   VK_SCROLL           | Scroll Lock key
455                                             // Fujitsu/OASYS kbd --------------------
456             KeySym.jisho,                  // 146   0x92   VK_OEM_FJ_JISHO     | 'Dictionary' key /
457                                             //              VK_OEM_NEC_EQUAL  = key on numpad on NEC PC-9800 kbd
458             KeySym.masshou,                // 147   0x93   VK_OEM_FJ_MASSHOU   | 'Unregister word' key
459             KeySym.touroku,                // 148   0x94   VK_OEM_FJ_TOUROKU   | 'Register word' key
460             KeySym.oyayubiLeft,            // 149   0x95   VK_OEM_FJ_LOYA      | 'Left OYAYUBI' key
461             KeySym.oyayubiRight,           // 150   0x96   VK_OEM_FJ_ROYA      | 'Right OYAYUBI' key
462             KeySym.unknown,                // 151   0x97   -- unassigned --
463             KeySym.unknown,                // 152   0x98   -- unassigned --
464             KeySym.unknown,                // 153   0x99   -- unassigned --
465             KeySym.unknown,                // 154   0x9A   -- unassigned --
466             KeySym.unknown,                // 155   0x9B   -- unassigned --
467             KeySym.unknown,                // 156   0x9C   -- unassigned --
468             KeySym.unknown,                // 157   0x9D   -- unassigned --
469             KeySym.unknown,                // 158   0x9E   -- unassigned --
470             KeySym.unknown,                // 159   0x9F   -- unassigned --
471             KeySym.leftShift,              // 160   0xA0   VK_LSHIFT           | Left Shift key
472             KeySym.rightShift,             // 161   0xA1   VK_RSHIFT           | Right Shift key
473             KeySym.leftCtrl,               // 162   0xA2   VK_LCONTROL         | Left Ctrl key
474             KeySym.rightCtrl,              // 163   0xA3   VK_RCONTROL         | Right Ctrl key
475             KeySym.leftAlt,                // 164   0xA4   VK_LMENU            | Left Menu key
476             KeySym.rightAlt,               // 165   0xA5   VK_RMENU            | Right Menu key
477             KeySym.browserBack,            // 166   0xA6   VK_BROWSER_BACK     | Browser Back key
478             KeySym.browserForward,         // 167   0xA7   VK_BROWSER_FORWARD  | Browser Forward key
479             KeySym.browserRefresh,         // 168   0xA8   VK_BROWSER_REFRESH  | Browser Refresh key
480             KeySym.browserStop,            // 169   0xA9   VK_BROWSER_STOP     | Browser Stop key
481             KeySym.browserSearch,          // 170   0xAA   VK_BROWSER_SEARCH   | Browser Search key
482             KeySym.browserFavorites,       // 171   0xAB   VK_BROWSER_FAVORITES| Browser Favorites key
483             KeySym.browserHome,            // 172   0xAC   VK_BROWSER_HOME     | Browser Start and Home key
484             KeySym.volumeMute,             // 173   0xAD   VK_VOLUME_MUTE      | Volume Mute key
485             KeySym.volumeDown,             // 174   0xAE   VK_VOLUME_DOWN      | Volume Down key
486             KeySym.volumeUp,               // 175   0xAF   VK_VOLUME_UP        | Volume Up key
487             KeySym.mediaNext,              // 176   0xB0   VK_MEDIA_NEXT_TRACK | Next Track key
488             KeySym.mediaPrevious,          // 177   0xB1   VK_MEDIA_PREV_TRACK | Previous Track key
489             KeySym.mediaStop,              // 178   0xB2   VK_MEDIA_STOP       | Stop Media key
490             KeySym.mediaPlay,              // 179   0xB3   VK_MEDIA_PLAY_PAUSE | Play/Pause Media key
491             KeySym.launchMail,             // 180   0xB4   VK_LAUNCH_MAIL      | Start Mail key
492             KeySym.launchMedia,            // 181   0xB5   VK_LAUNCH_MEDIA_SELECT Select Media key
493             KeySym.launch0,                // 182   0xB6   VK_LAUNCH_APP1      | Start Application 1 key
494             KeySym.launch1,                // 183   0xB7   VK_LAUNCH_APP2      | Start Application 2 key
495             KeySym.unknown,                // 184   0xB8   -- reserved --
496             KeySym.unknown,                // 185   0xB9   -- reserved --
497             KeySym.semicolon,              // 186   0xBA   VK_OEM_1            | ';:' for US
498             KeySym.plus,                   // 187   0xBB   VK_OEM_PLUS         | '+' any country
499             KeySym.comma,                  // 188   0xBC   VK_OEM_COMMA        | ',' any country
500             KeySym.minus,                  // 189   0xBD   VK_OEM_MINUS        | '-' any country
501             KeySym.period,                 // 190   0xBE   VK_OEM_PERIOD       | '.' any country
502             KeySym.slash,                  // 191   0xBF   VK_OEM_2            | '/?' for US
503             KeySym.asciiTilde,             // 192   0xC0   VK_OEM_3            | '`~' for US
504             KeySym.unknown,                // 193   0xC1   -- reserved --
505             KeySym.unknown,                // 194   0xC2   -- reserved --
506             KeySym.unknown,                // 195   0xC3   -- reserved --
507             KeySym.unknown,                // 196   0xC4   -- reserved --
508             KeySym.unknown,                // 197   0xC5   -- reserved --
509             KeySym.unknown,                // 198   0xC6   -- reserved --
510             KeySym.unknown,                // 199   0xC7   -- reserved --
511             KeySym.unknown,                // 200   0xC8   -- reserved --
512             KeySym.unknown,                // 201   0xC9   -- reserved --
513             KeySym.unknown,                // 202   0xCA   -- reserved --
514             KeySym.unknown,                // 203   0xCB   -- reserved --
515             KeySym.unknown,                // 204   0xCC   -- reserved --
516             KeySym.unknown,                // 205   0xCD   -- reserved --
517             KeySym.unknown,                // 206   0xCE   -- reserved --
518             KeySym.unknown,                // 207   0xCF   -- reserved --
519             KeySym.unknown,                // 208   0xD0   -- reserved --
520             KeySym.unknown,                // 209   0xD1   -- reserved --
521             KeySym.unknown,                // 210   0xD2   -- reserved --
522             KeySym.unknown,                // 211   0xD3   -- reserved --
523             KeySym.unknown,                // 212   0xD4   -- reserved --
524             KeySym.unknown,                // 213   0xD5   -- reserved --
525             KeySym.unknown,                // 214   0xD6   -- reserved --
526             KeySym.unknown,                // 215   0xD7   -- reserved --
527             KeySym.unknown,                // 216   0xD8   -- unassigned --
528             KeySym.unknown,                // 217   0xD9   -- unassigned --
529             KeySym.unknown,                // 218   0xDA   -- unassigned --
530             KeySym.bracketLeft,            // 219   0xDB   VK_OEM_4            | '[{' for US
531             KeySym.bar,                    // 220   0xDC   VK_OEM_5            | '\|' for US
532             KeySym.bracketRight,           // 221   0xDD   VK_OEM_6            | ']}' for US
533             KeySym.quoteDbl,               // 222   0xDE   VK_OEM_7            | ''"' for US
534             KeySym.unknown,                // 223   0xDF   VK_OEM_8
535             KeySym.unknown,                // 224   0xE0   -- reserved --
536             KeySym.unknown,                // 225   0xE1   VK_OEM_AX           | 'AX' key on Japanese AX kbd
537             KeySym.unknown,                // 226   0xE2   VK_OEM_102          | "<>" or "\|" on RT 102-key kbd
538             KeySym.unknown,                // 227   0xE3   VK_ICO_HELP         | Help key on ICO
539             KeySym.unknown,                // 228   0xE4   VK_ICO_00           | 00 key on ICO
540             KeySym.unknown,                // 229   0xE5   VK_PROCESSKEY       | IME Process key
541             KeySym.unknown,                // 230   0xE6   VK_ICO_CLEAR        |
542             KeySym.unknown,                // 231   0xE7   VK_PACKET           | Unicode char as keystrokes
543             KeySym.unknown,                // 232   0xE8   -- unassigned --
544                                             // Nokia/Ericsson definitions ---------------
545             KeySym.unknown,                // 233   0xE9   VK_OEM_RESET
546             KeySym.unknown,                // 234   0xEA   VK_OEM_JUMP
547             KeySym.unknown,                // 235   0xEB   VK_OEM_PA1
548             KeySym.unknown,                // 236   0xEC   VK_OEM_PA2
549             KeySym.unknown,                // 237   0xED   VK_OEM_PA3
550             KeySym.unknown,                // 238   0xEE   VK_OEM_WSCTRL
551             KeySym.unknown,                // 239   0xEF   VK_OEM_CUSEL
552             KeySym.unknown,                // 240   0xF0   VK_OEM_ATTN
553             KeySym.unknown,                // 241   0xF1   VK_OEM_FINISH
554             KeySym.unknown,                // 242   0xF2   VK_OEM_COPY
555             KeySym.unknown,                // 243   0xF3   VK_OEM_AUTO
556             KeySym.unknown,                // 244   0xF4   VK_OEM_ENLW
557             KeySym.unknown,                // 245   0xF5   VK_OEM_BACKTAB
558             KeySym.unknown,                // 246   0xF6   VK_ATTN             | Attn key
559             KeySym.unknown,                // 247   0xF7   VK_CRSEL            | CrSel key
560             KeySym.unknown,                // 248   0xF8   VK_EXSEL            | ExSel key
561             KeySym.unknown,                // 249   0xF9   VK_EREOF            | Erase EOF key
562             KeySym.play,                   // 250   0xFA   VK_PLAY             | Play key
563             KeySym.zoom,                   // 251   0xFB   VK_ZOOM             | Zoom key
564             KeySym.unknown,                // 252   0xFC   VK_NONAME           | Reserved
565             KeySym.unknown,                // 253   0xFD   VK_PA1              | PA1 key
566             KeySym.clear,                  // 254   0xFE   VK_OEM_CLEAR        | Clear key
567             KeySym.unknown,
568         ];
569 
570     }
571 
572 }