Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / lib / libusb / usb-key.c
1 /*****************************************************************************
2  * Copyright (c) 2013 IBM Corporation
3  * All rights reserved.
4  * This program and the accompanying materials
5  * are made available under the terms of the BSD License
6  * which accompanies this distribution, and is available at
7  * http://www.opensource.org/licenses/bsd-license.php
8  *
9  * Contributors:
10  *     IBM Corporation - initial implementation
11  *****************************************************************************/
12
13 #include <stdint.h>
14
15 /***********************************/
16 /* Keycodes for US Keyboard        */
17 /*   - no control keys pressed -   */
18 /***********************************/
19 const uint8_t keycodes_std_US[] = {
20         0,      /* 0    00      Reserved (no event indicated) */
21         0,      /* 1    01      Keyboard ErrorRollOver      */
22         0,      /* 2    02      Keyboard POSTFail           */
23         0,      /* 3    03      Keyboard ErrorUndefined     */
24         'a',    /* 4    04      Keyboard a and A        31  */
25         'b',    /* 5    05      Keyboard b and B        50  */
26         'c',    /* 6    06      Keyboard c and C        48  */
27         'd',    /* 7    07      Keyboard d and D        33  */
28         'e',    /* 8    08      Keyboard e and E        19  */
29         'f',    /* 9    09      Keyboard f and F        34  */
30         'g',    /* 10   0A      Keyboard g and G        35  */
31         'h',    /* 11   0B      Keyboard h and H        36  */
32         'i',    /* 12   0C      Keyboard i and I        24  */
33         'j',    /* 13   0D      Keyboard j and J        37  */
34         'k',    /* 14   0E      Keyboard k and K        38  */
35         'l',    /* 15   0F      Keyboard l and L        39  */
36         'm',    /* 16   10      Keyboard m and M        52  */
37         'n',    /* 17   11      Keyboard n and N        51  */
38         'o',    /* 18   12      Keyboard o and O        25  */
39         'p',    /* 19   13      Keyboard p and P        26  */
40         'q',    /* 20   14      Keyboard q and Q        17  */
41         'r',    /* 21   15      Keyboard r and R        20  */
42         's',    /* 22   16      Keyboard s and S        32  */
43         't',    /* 23   17      Keyboard t and T        21  */
44         'u',    /* 24   18      Keyboard u and U        23  */
45         'v',    /* 25   19      Keyboard v and V        49  */
46         'w',    /* 26   1A      Keyboard w and W        18  */
47         'x',    /* 27   1B      Keyboard x and X        47  */
48         'y',    /* 28   1C      Keyboard y and Y        22  */
49         'z',    /* 29   1D      Keyboard z and Z        46  */
50         '1',    /* 30   1E      Keyboard 1 and !        2   */
51         '2',    /* 31   1F      Keyboard 2 and @        3   */
52         '3',    /* 32   20      Keyboard 3 and #        4   */
53         '4',    /* 33   21      Keyboard 4 and $        5   */
54         '5',    /* 34   22      Keyboard 5 and %        6   */
55         '6',    /* 35   23      Keyboard 6 and ^        7   */
56         '7',    /* 36   24      Keyboard 7 and &        8   */
57         '8',    /* 37   25      Keyboard 8 and *        9   */
58         '9',    /* 38   26      Keyboard 9 and (        10  */
59         '0',    /* 39   27      Keyboard 0 and )        11  */
60         13,     /* 40   28      Keyboard Return (ENTER) 43  */
61         27,     /* 41   29      Keyboard ESCAPE         110 */
62         8,      /* 42   2A      Keyboard DELETE (BS)    15  */
63         9,      /* 43   2B      Keyboard Tab            16  */
64         ' ',    /* 44   2C      Keyboard Spacebar       61  */
65         '-',    /* 45   2D      Keyboard - and (underscore) 12 */
66         '=',    /* 46   2E      Keyboard = and +        13  */
67         '[',    /* 47   2F      Keyboard [ and {        27  */
68         ']',    /* 48   30      Keyboard ] and }        28  */
69         '\\',   /* 49   31      Keyboard \ and |        29  */
70         '\\',   /* 50   32      Keyboard \ and |        42  */
71         ';',    /* 51   33      Keyboard ; and :        40  */
72         39,     /* 52   34      Keyboard ' and "        41  */
73         96,     /* 53   35      Keyboard Grave Accent and Tilde 1 */
74         ',',    /* 54   36      Keyboard , and <        53  */
75         '.',    /* 55   37      Keyboard . and >        54  */
76         '/',    /* 56   38      Keyboard / and ?        55  */
77         0,      /* 57   39      Keyboard Caps Lock      30  */
78         0,      /* 58   3A      Keyboard F1             112 */
79         0,      /* 59   3B      Keyboard F2             113 */
80         0,      /* 60   3C      Keyboard F3             114 */
81         0,      /* 61   3D      Keyboard F4             115 */
82         0,      /* 62   3E      Keyboard F5             116 */
83         0,      /* 63   3F      Keyboard F6             117 */
84         0,      /* 64   40      Keyboard F7             118 */
85         0,      /* 65   41      Keyboard F8             119 */
86         0,      /* 66   42      Keyboard F9             120 */
87         0,      /* 67   43      Keyboard F10            121 */
88         0,      /* 68   44      Keyboard F11            122 */
89         0,      /* 69   45      Keyboard F12            123 */
90         0,      /* 70   46      Keyboard PrintScreen    124 */
91         0,      /* 71   47      Keyboard Scroll Lock    125 */
92         0,      /* 72   48      Keyboard Pause          126 */
93         0,      /* 73   49      Keyboard Insert         75 */
94         0,      /* 74   4A      Keyboard Home           80 */
95         0,      /* 75   4B      Keyboard PageUp         85 */
96         0,      /* 76   4C      Keyboard Delete Forward 76 */
97         0,      /* 77   4D      Keyboard End            81 */
98         0,      /* 78   4E      Keyboard PageDown       86 */
99         0,      /* 79   4F      Keyboard RightArrow     89 */
100         0,      /* 80   50      Keyboard LeftArrow      79 */
101         0,      /* 81   51      Keyboard DownArrow      84 */
102         0,      /* 82   52      Keyboard UpArrow        83 */
103         0,      /* 83   53      Keypad Num Lock and Clear 90 */
104         '/',    /* 84   54      Keypad /                95 */
105         '*',    /* 85   55      Keypad *                100 */
106         '-',    /* 86   56      Keypad -                105 */
107         '+',    /* 87   57      Keypad +                106 */
108         13,     /* 88   58      Keypad ENTER            108 */
109         '1',    /* 89   59      Keypad 1 and End        93  */
110         '2',    /* 90   5A      Keypad 2 and Down Arrow 98  */
111         '3',    /* 91   5B      Keypad 3 and PageDn     103 */
112         '4',    /* 92   5C      Keypad 4 and Left Arrow 92  */
113         '5',    /* 93   5D      Keypad 5                97  */
114         '6',    /* 94   5E      Keypad 6 and Right Arrow 102 */
115         '7',    /* 95   5F      Keypad 7 and Home       91  */
116         '8',    /* 96   60      Keypad 8 and Up Arrow   96  */
117         '9',    /* 97   61      Keypad 9 and PageUp     101 */
118         '0',    /* 98   62      Keypad 0 and Insert     99  */
119         '.',    /* 99   63      Keypad . and Delete     104 */
120         '\\'    /* 100  64      Keyboard Non-US \ and | 45  */
121 };
122
123 /***********************************/
124 /* Keycodes for US Keyboard        */
125 /*     - SHIFT-KEY pressed -       */
126 /***********************************/
127 const uint8_t keycodes_shift_US[] = {
128         0,      /* 0    00      Reserved (no event indicated) */
129         0,      /* 1    01      Keyboard ErrorRollOver      */
130         0,      /* 2    02      Keyboard POSTFail           */
131         0,      /* 3    03      Keyboard ErrorUndefined     */
132         'A',    /* 4    04      Keyboard a and A        31  */
133         'B',    /* 5    05      Keyboard b and B        50  */
134         'C',    /* 6    06      Keyboard c and C        48  */
135         'D',    /* 7    07      Keyboard d and D        33  */
136         'E',    /* 8    08      Keyboard e and E        19  */
137         'F',    /* 9    09      Keyboard f and F        34  */
138         'G',    /* 10   0A      Keyboard g and G        35  */
139         'H',    /* 11   0B      Keyboard h and H        36  */
140         'I',    /* 12   0C      Keyboard i and I        24  */
141         'J',    /* 13   0D      Keyboard j and J        37  */
142         'K',    /* 14   0E      Keyboard k and K        38  */
143         'L',    /* 15   0F      Keyboard l and L        39  */
144         'M',    /* 16   10      Keyboard m and M        52  */
145         'N',    /* 17   11      Keyboard n and N        51  */
146         'O',    /* 18   12      Keyboard o and O        25  */
147         'P',    /* 19   13      Keyboard p and P        26  */
148         'Q',    /* 20   14      Keyboard q and Q        17  */
149         'R',    /* 21   15      Keyboard r and R        20  */
150         'S',    /* 22   16      Keyboard s and S        32  */
151         'T',    /* 23   17      Keyboard t and T        21  */
152         'U',    /* 24   18      Keyboard u and U        23  */
153         'V',    /* 25   19      Keyboard v and V        49  */
154         'W',    /* 26   1A      Keyboard w and W        18  */
155         'X',    /* 27   1B      Keyboard x and X        47  */
156         'Y',    /* 28   1C      Keyboard y and Y        22  */
157         'Z',    /* 29   1D      Keyboard z and Z        46  */
158         '!',    /* 30   1E      Keyboard 1 and !        2   */
159         '@',    /* 31   1F      Keyboard 2 and @        3   */
160         '#',    /* 32   20      Keyboard 3 and #        4   */
161         '$',    /* 33   21      Keyboard 4 and $        5   */
162         '%',    /* 34   22      Keyboard 5 and %        6   */
163         '^',    /* 35   23      Keyboard 6 and ^        7   */
164         '&',    /* 36   24      Keyboard 7 and &        8   */
165         '*',    /* 37   25      Keyboard 8 and *        9   */
166         '(',    /* 38   26      Keyboard 9 and (        10  */
167         ')',    /* 39   27      Keyboard 0 and )        11  */
168         13,     /* 40   28      Keyboard Return (ENTER) 43  */
169         27,     /* 41   29      Keyboard ESCAPE         110 */
170         8,      /* 42   2A      Keyboard DELETE (BS)    15  */
171         9,      /* 43   2B      Keyboard Tab            16  */
172         ' ',    /* 44   2C      Keyboard Spacebar       61  */
173         '_',    /* 45   2D      Keyboard - and (underscore) 12 */
174         '+',    /* 46   2E      Keyboard = and +        13  */
175         '{',    /* 47   2F      Keyboard [ and {        27  */
176         '}',    /* 48   30      Keyboard ] and }        28  */
177         '|',    /* 49   31      Keyboard \ and |        29  */
178         '|',    /* 50   32      Keyboard \ and |        42  */
179         ':',    /* 51   33      Keyboard ; and :        40  */
180         '"',    /* 52   34      Keyboard ' and "        41  */
181         '~',    /* 53   35      Keyboard Grave Accent and Tilde 1 */
182         '<',    /* 54   36      Keyboard , and <        53  */
183         '>',    /* 55   37      Keyboard . and >        54  */
184         '?',    /* 56   38      Keyboard / and ?        55  */
185         0,      /* 57   39      Keyboard Caps Lock      30  */
186         0,      /* 58   3A      Keyboard F1             112 */
187         0,      /* 59   3B      Keyboard F2             113 */
188         0,      /* 60   3C      Keyboard F3             114 */
189         0,      /* 61   3D      Keyboard F4             115 */
190         0,      /* 62   3E      Keyboard F5             116 */
191         0,      /* 63   3F      Keyboard F6             117 */
192         0,      /* 64   40      Keyboard F7             118 */
193         0,      /* 65   41      Keyboard F8             119 */
194         0,      /* 66   42      Keyboard F9             120 */
195         0,      /* 67   43      Keyboard F10            121 */
196         0,      /* 68   44      Keyboard F11            122 */
197         0,      /* 69   45      Keyboard F12            123 */
198         0,      /* 70   46      Keyboard PrintScreen    124 */
199         0,      /* 71   47      Keyboard Scroll Lock    125 */
200         0,      /* 72   48      Keyboard Pause          126 */
201         48,     /* 73   49      Keyboard Insert         75  */
202         55,     /* 74   4A      Keyboard Home           80  */
203         57,     /* 75   4B      Keyboard PageUp         85  */
204         46,     /* 76   4C      Keyboard Delete Forward 76  */
205         49,     /* 77   4D      Keyboard End            81  */
206         51,     /* 78   4E      Keyboard PageDown       86  */
207         54,     /* 79   4F      Keyboard RightArrow     89  */
208         52,     /* 80   50      Keyboard LeftArrow      79  */
209         50,     /* 81   51      Keyboard DownArrow      84  */
210         56,     /* 82   52      Keyboard UpArrow        83  */
211         0,      /* 83   53      Keypad Num Lock and Clear 90 */
212         '/',    /* 84   54      Keypad /                95 */
213         '*',    /* 85   55      Keypad *                100 */
214         '-',    /* 86   56      Keypad -                105 */
215         '+',    /* 87   57      Keypad +                106 */
216         13,     /* 88   58      Keypad ENTER            108 */
217         '1',    /* 89   59      Keypad 1 and End        93  */
218         '2',    /* 90   5A      Keypad 2 and Down Arrow 98  */
219         '3',    /* 91   5B      Keypad 3 and PageDn     103 */
220         '4',    /* 92   5C      Keypad 4 and Left Arrow 92  */
221         '5',    /* 93   5D      Keypad 5                97  */
222         '6',    /* 94   5E      Keypad 6 and Right Arrow 102 */
223         '7',    /* 95   5F      Keypad 7 and Home       91  */
224         '8',    /* 96   60      Keypad 8 and Up Arrow   96  */
225         '9',    /* 97   61      Keypad 9 and PageUp     101 */
226         '0',    /* 98   62      Keypad 0 and Insert     99  */
227         '.',    /* 99   63      Keypad . and Delete     104 */
228         '|'     /* 100  64      Keyboard Non-US \ and | 45  */
229 };
230
231 /***********************************/
232 /* Keycodes for 1 byte translation */
233 /*     - CONTROL-KEY pressed -     */
234 /***********************************/
235 const uint8_t keycodes_alt_GR[] = {
236         0,      /* 0    00      Reserved (no event indicated) */
237         0,      /* 1    01      Keyboard ErrorRollOver      */
238         0,      /* 2    02      Keyboard POSTFail           */
239         0,      /* 3    03      Keyboard ErrorUndefined     */
240         0,      /* 4    04      Keyboard a and A        31  */
241         0,      /* 5    05      Keyboard b and B        50  */
242         0,      /* 6    06      Keyboard c and C        48  */
243         0,      /* 7    07      Keyboard d and D        33  */
244         0,      /* 8    08      Keyboard e and E        19  */
245         0,      /* 9    09      Keyboard f and F        34  */
246         0,      /* 10   0A      Keyboard g and G        35  */
247         0,      /* 11   0B      Keyboard h and H        36  */
248         0,      /* 12   0C      Keyboard i and I        24  */
249         0,      /* 13   0D      Keyboard j and J        37  */
250         0,      /* 14   0E      Keyboard k and K        38  */
251         0,      /* 15   0F      Keyboard l and L        39  */
252         0,      /* 16   10      Keyboard m and M        52  */
253         0,      /* 17   11      Keyboard n and N        51  */
254         0,      /* 18   12      Keyboard o and O        25  */
255         0,      /* 19   13      Keyboard p and P        26  */
256         '@',    /* 20   14      Keyboard q and Q        17  */
257         0,      /* 21   15      Keyboard r and R        20  */
258         0,      /* 22   16      Keyboard s and S        32  */
259         0,      /* 23   17      Keyboard t and T        21  */
260         0,      /* 24   18      Keyboard u and U        23  */
261         0,      /* 25   19      Keyboard v and V        49  */
262         0,      /* 26   1A      Keyboard w and W        18  */
263         0,      /* 27   1B      Keyboard x and X        47  */
264         0,      /* 28   1C      Keyboard y and Y        22  */
265         0,      /* 29   1D      Keyboard z and Z        46  */
266         0,      /* 30   1E      Keyboard 1 and !        2   */
267         0,      /* 31   1F      Keyboard 2 and @        3   */
268         0,      /* 32   20      Keyboard 3 and #        4   */
269         0,      /* 33   21      Keyboard 4 and $        5   */
270         0,      /* 34   22      Keyboard 5 and %        6   */
271         0,      /* 35   23      Keyboard 6 and ^        7   */
272         '{',    /* 36   24      Keyboard 7 and &        8   */
273         '[',    /* 37   25      Keyboard 8 and *        9   */
274         ']',    /* 38   26      Keyboard 9 and (        10  */
275         '}',    /* 39   27      Keyboard 0 and )        11  */
276         0,      /* 40   28      Keyboard Return (ENTER) 43  */
277         0,      /* 41   29      Keyboard ESCAPE         110 */
278         0,      /* 42   2A      Keyboard DELETE (BS)    15  */
279         0,      /* 43   2B      Keyboard Tab            16  */
280         0,      /* 44   2C      Keyboard Spacebar       61  */
281         '\\',   /* 45   2D      Keyboard - and (underscore) 12 */
282         0,      /* 46   2E      Keyboard = and +        13  */
283         0,      /* 47   2F      Keyboard [ and {        27  */
284         '~',    /* 48   30      Keyboard ] and }        28  */
285         0,      /* 49   31      Keyboard \ and |        29  */
286         0,      /* 50   32      Keyboard Non-US # and ~ 42  */
287         0,      /* 51   33      Keyboard ; and :        40  */
288         0,      /* 52   34      Keyboard ' and "        41  */
289         0,      /* 53   35      Keyboard Grave Accent and Tilde 1 */
290         0,      /* 54   36      Keyboard , and <        53  */
291         0,      /* 55   37      Keyboard . and >        54  */
292         0,      /* 56   38      Keyboard / and ?        55  */
293         0,      /* 57   39      Keyboard Caps Lock      30  */
294         0,      /* 58   3A      Keyboard F1             112 */
295         0,      /* 59   3B      Keyboard F2             113 */
296         0,      /* 60   3C      Keyboard F3             114 */
297         0,      /* 61   3D      Keyboard F4             115 */
298         0,      /* 62   3E      Keyboard F5             116 */
299         0,      /* 63   3F      Keyboard F6             117 */
300         0,      /* 64   40      Keyboard F7             118 */
301         0,      /* 65   41      Keyboard F8             119 */
302         0,      /* 66   42      Keyboard F9             120 */
303         0,      /* 67   43      Keyboard F10            121 */
304         0,      /* 68   44      Keyboard F11            122 */
305         0,      /* 69   45      Keyboard F12            123 */
306         0,      /* 70   46      Keyboard PrintScreen    124 */
307         0,      /* 71   47      Keyboard Scroll Lock    125 */
308         0,      /* 72   48      Keyboard Pause          126 */
309         0,      /* 73   49      Keyboard Insert         75 */
310         0,      /* 74   4A      Keyboard Home           80 */
311         0,      /* 75   4B      Keyboard PageUp         85 */
312         0,      /* 76   4C      Keyboard Delete Forward 76 */
313         0,      /* 77   4D      Keyboard End            81 */
314         0,      /* 78   4E      Keyboard PageDown       86 */
315         0,      /* 79   4F      Keyboard RightArrow     89 */
316         0,      /* 80   50      Keyboard LeftArrow      79 */
317         0,      /* 81   51      Keyboard DownArrow      84 */
318         0,      /* 82   52      Keyboard UpArrow        83 */
319         0,      /* 83   53      Keypad Num Lock and Clear 90 */
320         0,      /* 84   54      Keypad /                95 */
321         0,      /* 85   55      Keypad *                100 */
322         0,      /* 86   56      Keypad -                105 */
323         0,      /* 87   57      Keypad +                106 */
324         0,      /* 88   58      Keypad ENTER            108 */
325         0,      /* 89   59      Keypad 1 and End        93  */
326         0,      /* 90   5A      Keypad 2 and Down Arrow 98  */
327         0,      /* 91   5B      Keypad 3 and PageDn     103 */
328         0,      /* 92   5C      Keypad 4 and Left Arrow 92  */
329         0,      /* 93   5D      Keypad 5                97  */
330         0,      /* 94   5E      Keypad 6 and Right Arrow 102 */
331         0,      /* 95   5F      Keypad 7 and Home       91  */
332         0,      /* 96   60      Keypad 8 and Up Arrow   96  */
333         0,      /* 97   61      Keypad 9 and PageUp     101 */
334         0,      /* 98   62      Keypad 0 and Insert     99  */
335         0,      /* 99   63      Keypad . and Delete     104 */
336         '|'     /* 100  64      Keyboard Non-US \ and | 45  */
337 };
338
339
340 /***********************************/
341 /* Keycodes for 1 byte translation */
342 /*     - CONTROL-KEY pressed -     */
343 /***********************************/
344 const uint8_t keycodes_ctrl[] = {
345         0,      /* 0    00      Reserved (no event indicated) */
346         0,      /* 1    01      Keyboard ErrorRollOver      */
347         0,      /* 2    02      Keyboard POSTFail           */
348         0,      /* 3    03      Keyboard ErrorUndefined     */
349         1,      /* 4    04      Keyboard a and A        31  */
350         2,      /* 5    05      Keyboard b and B        50  */
351         3,      /* 6    06      Keyboard c and C        48  */
352         4,      /* 7    07      Keyboard d and D        33  */
353         5,      /* 8    08      Keyboard e and E        19  */
354         6,      /* 9    09      Keyboard f and F        34  */
355         7,      /* 10   0A      Keyboard g and G        35  */
356         8,      /* 11   0B      Keyboard h and H        36  */
357         9,      /* 12   0C      Keyboard i and I        24  */
358         10,     /* 13   0D      Keyboard j and J        37  */
359         11,     /* 14   0E      Keyboard k and K        38  */
360         12,     /* 15   0F      Keyboard l and L        39  */
361         13,     /* 16   10      Keyboard m and M        52  */
362         14,     /* 17   11      Keyboard n and N        51  */
363         15,     /* 18   12      Keyboard o and O        25  */
364         16,     /* 19   13      Keyboard p and P        26  */
365         17,     /* 20   14      Keyboard q and Q        17  */
366         18,     /* 21   15      Keyboard r and R        20  */
367         19,     /* 22   16      Keyboard s and S        32  */
368         20,     /* 23   17      Keyboard t and T        21  */
369         21,     /* 24   18      Keyboard u and U        23  */
370         22,     /* 25   19      Keyboard v and V        49  */
371         23,     /* 26   1A      Keyboard w and W        18  */
372         24,     /* 27   1B      Keyboard x and X        47  */
373         25,     /* 28   1C      Keyboard y and Y        22  */
374         26,     /* 29   1D      Keyboard z and Z        46  */
375         0,      /* 30   1E      Keyboard 1 and !        2   */
376         0,      /* 31   1F      Keyboard 2 and @        3   */
377         0,      /* 32   20      Keyboard 3 and #        4   */
378         0,      /* 33   21      Keyboard 4 and $        5   */
379         0,      /* 34   22      Keyboard 5 and %        6   */
380         0,      /* 35   23      Keyboard 6 and ^        7   */
381         0,      /* 36   24      Keyboard 7 and &        8   */
382         0,      /* 37   25      Keyboard 8 and *        9   */
383         0,      /* 38   26      Keyboard 9 and (        10  */
384         0,      /* 39   27      Keyboard 0 and )        11  */
385         0,      /* 40   28      Keyboard Return (ENTER) 43  */
386         0,      /* 41   29      Keyboard ESCAPE         110 */
387         0,      /* 42   2A      Keyboard DELETE (BS)    15  */
388         0,      /* 43   2B      Keyboard Tab            16  */
389         0,      /* 44   2C      Keyboard Spacebar       61  */
390         0,      /* 45   2D      Keyboard - and (underscore) 12 */
391         0,      /* 46   2E      Keyboard = and +        13  */
392         0,      /* 47   2F      Keyboard [ and {        27  */
393         0,      /* 48   30      Keyboard ] and }        28  */
394         0,      /* 49   31      Keyboard \ and |        29  */
395         0,      /* 50   32      Keyboard Non-US # and ~ 42  */
396         0,      /* 51   33      Keyboard ; and :        40  */
397         0,      /* 52   34      Keyboard ' and "        41  */
398         0,      /* 53   35      Keyboard Grave Accent and Tilde 1 */
399         0,      /* 54   36      Keyboard , and <        53  */
400         0,      /* 55   37      Keyboard . and >        54  */
401         0,      /* 56   38      Keyboard / and ?        55  */
402         0,      /* 57   39      Keyboard Caps Lock      30  */
403         0,      /* 58   3A      Keyboard F1             112 */
404         0,      /* 59   3B      Keyboard F2             113 */
405         0,      /* 60   3C      Keyboard F3             114 */
406         0,      /* 61   3D      Keyboard F4             115 */
407         0,      /* 62   3E      Keyboard F5             116 */
408         0,      /* 63   3F      Keyboard F6             117 */
409         0,      /* 64   40      Keyboard F7             118 */
410         0,      /* 65   41      Keyboard F8             119 */
411         0,      /* 66   42      Keyboard F9             120 */
412         0,      /* 67   43      Keyboard F10            121 */
413         0,      /* 68   44      Keyboard F11            122 */
414         0,      /* 69   45      Keyboard F12            123 */
415         0,      /* 70   46      Keyboard PrintScreen    124 */
416         0,      /* 71   47      Keyboard Scroll Lock    125 */
417         0,      /* 72   48      Keyboard Pause          126 */
418         0,      /* 73   49      Keyboard Insert         75 */
419         0,      /* 74   4A      Keyboard Home           80 */
420         0,      /* 75   4B      Keyboard PageUp         85 */
421         0,      /* 76   4C      Keyboard Delete Forward 76 */
422         0,      /* 77   4D      Keyboard End            81 */
423         0,      /* 78   4E      Keyboard PageDown       86 */
424         0,      /* 79   4F      Keyboard RightArrow     89 */
425         0,      /* 80   50      Keyboard LeftArrow      79 */
426         0,      /* 81   51      Keyboard DownArrow      84 */
427         0,      /* 82   52      Keyboard UpArrow        83 */
428         0,      /* 83   53      Keypad Num Lock and Clear 90 */
429         0,      /* 84   54      Keypad /                95 */
430         0,      /* 85   55      Keypad *                100 */
431         0,      /* 86   56      Keypad -                105 */
432         0,      /* 87   57      Keypad +                106 */
433         0,      /* 88   58      Keypad ENTER            108 */
434         0,      /* 89   59      Keypad 1 and End        93  */
435         0,      /* 90   5A      Keypad 2 and Down Arrow 98  */
436         0,      /* 91   5B      Keypad 3 and PageDn     103 */
437         0,      /* 92   5C      Keypad 4 and Left Arrow 92  */
438         0,      /* 93   5D      Keypad 5                97  */
439         0,      /* 94   5E      Keypad 6 and Right Arrow 102 */
440         0,      /* 95   5F      Keypad 7 and Home       91  */
441         0,      /* 96   60      Keypad 8 and Up Arrow   96  */
442         0,      /* 97   61      Keypad 9 and PageUp     101 */
443         0,      /* 98   62      Keypad 0 and Insert     99  */
444         0,      /* 99   63      Keypad . and Delete     104 */
445         0       /* 100  64      Keyboard Non-US \ and | 45  */
446 };