2 # KLL Compiler - HID Dictionary Lookup
4 # USB Code Lookup Dictionary
6 # Copyright (C) 2014-2015 by Jacob Alexander
8 # This file is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
13 # This file is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this file. If not, see <http://www.gnu.org/licenses/>.
21 # Rather than generating tables of hex USB codes for the keymapping tables, readable defines are used (which correspond to usb_hid.h)
22 hid_lookup_dictionary = dict([
23 ( 0x00, 'KEY_NOEVENT' ), # Event, not a physical key
24 ( 0x01, 'KEY_ERRORROLLOVER' ), # Event, not a physical key
25 ( 0x02, 'KEY_POSTFAIL' ), # Event, not a physical key
26 ( 0x03, 'KEY_ERRORUNDEFINED' ), # Event, not a physical key
63 ( 0x28, 'KEY_ENTER' ),
65 ( 0x2A, 'KEY_BACKSPACE' ),
67 ( 0x2C, 'KEY_SPACE' ),
68 ( 0x2D, 'KEY_MINUS' ),
69 ( 0x2E, 'KEY_EQUAL' ),
70 ( 0x2F, 'KEY_LEFT_BRACE' ),
71 ( 0x30, 'KEY_RIGHT_BRACE' ),
72 ( 0x31, 'KEY_BACKSLASH' ),
73 ( 0x32, 'KEY_NUMBER' ),
74 ( 0x33, 'KEY_SEMICOLON' ),
75 ( 0x34, 'KEY_QUOTE' ),
76 ( 0x35, 'KEY_BACKTICK' ),
77 ( 0x36, 'KEY_COMMA' ),
78 ( 0x37, 'KEY_PERIOD' ),
79 ( 0x38, 'KEY_SLASH' ),
80 ( 0x39, 'KEY_CAPS_LOCK' ),
93 ( 0x46, 'KEY_PRINTSCREEN' ),
94 ( 0x47, 'KEY_SCROLL_LOCK' ),
95 ( 0x48, 'KEY_PAUSE' ),
96 ( 0x49, 'KEY_INSERT' ),
98 ( 0x4B, 'KEY_PAGE_UP' ),
99 ( 0x4C, 'KEY_DELETE' ),
101 ( 0x4E, 'KEY_PAGE_DOWN' ),
102 ( 0x4F, 'KEY_RIGHT' ),
103 ( 0x50, 'KEY_LEFT' ),
104 ( 0x51, 'KEY_DOWN' ),
106 ( 0x53, 'KEY_NUM_LOCK' ),
107 ( 0x54, 'KEYPAD_SLASH' ),
108 ( 0x55, 'KEYPAD_ASTERISK' ),
109 ( 0x56, 'KEYPAD_MINUS' ),
110 ( 0x57, 'KEYPAD_PLUS' ),
111 ( 0x58, 'KEYPAD_ENTER' ),
112 ( 0x59, 'KEYPAD_1' ),
113 ( 0x5A, 'KEYPAD_2' ),
114 ( 0x5B, 'KEYPAD_3' ),
115 ( 0x5C, 'KEYPAD_4' ),
116 ( 0x5D, 'KEYPAD_5' ),
117 ( 0x5E, 'KEYPAD_6' ),
118 ( 0x5F, 'KEYPAD_7' ),
119 ( 0x60, 'KEYPAD_8' ),
120 ( 0x61, 'KEYPAD_9' ),
121 ( 0x62, 'KEYPAD_0' ),
122 ( 0x63, 'KEYPAD_PERIOD' ),
123 ( 0x64, 'KEY_ISO_SLASH' ),
125 ( 0x66, 'KEYBOARD_STATUS' ), # Used for indicating status or errors, not a key
126 ( 0x67, 'KEYPAD_EQUAL' ),
139 ( 0x74, 'KEY_EXEC' ),
140 ( 0x75, 'KEY_HELP' ),
141 ( 0x76, 'KEY_MENU' ),
142 ( 0x77, 'KEY_SELECT' ),
143 ( 0x78, 'KEY_STOP' ),
144 ( 0x79, 'KEY_AGAIN' ),
145 ( 0x7A, 'KEY_UNDO' ),
147 ( 0x7C, 'KEY_COPY' ),
148 ( 0x7D, 'KEY_PASTE' ),
149 ( 0x7E, 'KEY_FIND' ),
150 ( 0x7F, 'KEY_MUTE' ),
151 ( 0x80, 'KEY_VOL_UP' ),
152 ( 0x81, 'KEY_VOL_DOWN' ),
153 ( 0x82, 'KEY_CAPS_TLOCK' ), # Toggle "Locking" Scroll Lock (Old keyboards with Locking Caps Lock)
154 ( 0x83, 'KEY_NUM_TLOCK' ),
155 ( 0x84, 'KEY_SCROLL_TLOCK' ),
156 ( 0x85, 'KEYPAD_COMMA' ), # Brazillian (See spec)
157 ( 0x86, 'KEYPAD_EQUAL_AS' ), # AS/400 Keyboard (See spec)
158 ( 0x87, 'KEY_INTER1' ), # KANJI1 - Brazillian and Japanese "Ru" and "-"
159 ( 0x88, 'KEY_INTER2' ), # KANJI2 - Japanese Katakana/Hiragana
160 ( 0x89, 'KEY_INTER3' ), # KANJI3 - Japanese Yen
161 ( 0x8A, 'KEY_INTER4' ), # KANJI4 - Japanese Henkan
162 ( 0x8B, 'KEY_INTER5' ), # KANJI5 - Japanese Muhenkan
163 ( 0x8C, 'KEY_INTER6' ), # KANJI6 - PC0x62 Comma (Ka-m-ma)
164 ( 0x8D, 'KEY_INTER7' ), # KANJI7 - Double-Byte/Single-Byte Toggle
165 ( 0x8E, 'KEY_INTER8' ), # KANJI8 - Undefined
166 ( 0x8F, 'KEY_INTER9' ), # KANJI9 - Undefined
167 ( 0x90, 'KEY_LANG1' ), # Korean Hangul/English Toggle
168 ( 0x91, 'KEY_LANG2' ), # Korean Hanja Conversion - Japanese Eisu
169 ( 0x92, 'KEY_LANG3' ), # Japanese Katakana Key (USB)
170 ( 0x93, 'KEY_LANG4' ), # Japanese Hiragana Key (USB)
171 ( 0x94, 'KEY_LANG5' ), # Japanese Zenkaku/Hankaku Key (USB)
172 ( 0x95, 'KEY_LANG6' ), # Reserved (Application Specific)
173 ( 0x96, 'KEY_LANG7' ), # Reserved (Application Specific)
174 ( 0x97, 'KEY_LANG8' ), # Reserved (Application Specific)
175 ( 0x98, 'KEY_LANG9' ), # Reserved (Application Specific)
176 ( 0x99, 'KEY_ALT_ERASE' ), # Special Erase (See Spec)
177 ( 0x9A, 'KEY_SYSREQ_ATT' ), # Modifier Type
178 ( 0x9B, 'KEY_CANCEL' ),
179 ( 0x9C, 'KEY_CLEAR' ),
180 ( 0x9D, 'KEY_PRIOR' ),
181 ( 0x9E, 'KEY_RETURN' ),
182 ( 0x9F, 'KEY_SEPARATOR' ),
184 ( 0xA1, 'KEY_OPER' ),
185 ( 0xA2, 'KEY_CLEAR_AGAIN' ),
186 ( 0xA3, 'KEY_CRSEL_PROPS' ),
187 ( 0xA4, 'KEY_EXSEL' ),
188 # 0xA5 - 0xAF Reserved
189 ( 0xB0, 'KEYPAD_00' ),
190 ( 0xB1, 'KEYPAD_000' ),
191 ( 0xB2, 'KEY_1000_SEP' ),
192 ( 0xB3, 'KEY_DECIMAL_SEP' ),
193 ( 0xB4, 'KEY_CURRENCY_MAIN' ),
194 ( 0xB5, 'KEY_CURRENCY_SUB' ),
195 ( 0xB6, 'KEYPAD_LPAREN' ),
196 ( 0xB7, 'KEYPAD_RPAREN' ),
197 ( 0xB8, 'KEYPAD_LBRACE' ),
198 ( 0xB9, 'KEYPAD_RBRACE' ),
199 ( 0xBA, 'KEYPAD_TAB' ),
200 ( 0xBB, 'KEYPAD_BACKSPACE' ),
201 ( 0xBC, 'KEYPAD_A' ),
202 ( 0xBD, 'KEYPAD_B' ),
203 ( 0xBE, 'KEYPAD_C' ),
204 ( 0xBF, 'KEYPAD_D' ),
205 ( 0xC0, 'KEYPAD_E' ),
206 ( 0xC1, 'KEYPAD_F' ),
207 ( 0xC2, 'KEYPAD_XOR' ),
208 ( 0xC3, 'KEYPAD_CHEVRON' ),
209 ( 0xC4, 'KEYPAD_PERCENT' ),
210 ( 0xC5, 'KEYPAD_LTHAN' ),
211 ( 0xC6, 'KEYPAD_GTHAN' ),
212 ( 0xC7, 'KEYPAD_BITAND' ),
213 ( 0xC8, 'KEYPAD_AND' ),
214 ( 0xC9, 'KEYPAD_BITOR' ),
215 ( 0xCA, 'KEYPAD_OR' ),
216 ( 0xCB, 'KEYPAD_COLON' ),
217 ( 0xCC, 'KEYPAD_POUND' ),
218 ( 0xCD, 'KEYPAD_SPACE' ),
219 ( 0xCE, 'KEYPAD_AT' ),
220 ( 0xCF, 'KEYPAD_EXCLAIM' ),
221 ( 0xD0, 'KEYPAD_MEM_STORE' ),
222 ( 0xD1, 'KEYPAD_MEM_RECALL' ),
223 ( 0xD2, 'KEYPAD_MEM_CLEAR' ),
224 ( 0xD3, 'KEYPAD_MEM_ADD' ),
225 ( 0xD4, 'KEYPAD_MEM_SUB' ),
226 ( 0xD5, 'KEYPAD_MEM_MULT' ),
227 ( 0xD6, 'KEYPAD_MEM_DIV' ),
228 ( 0xD7, 'KEYPAD_PLUS_MINUS' ),
229 ( 0xD8, 'KEYPAD_CLEAR' ),
230 ( 0xD9, 'KEYPAD_CLEAR_ENTRY' ),
231 ( 0xDA, 'KEYPAD_BINARY' ),
232 ( 0xDB, 'KEYPAD_OCTAL' ),
233 ( 0xDC, 'KEYPAD_DECIMAL' ),
234 ( 0xDD, 'KEYPAD_HEX' ),
235 # 0xDE - 0xDF Reserved
236 ( 0xE0, 'KEY_LCTRL' ),
237 ( 0xE1, 'KEY_LSHIFT' ),
238 ( 0xE2, 'KEY_LALT' ),
239 ( 0xE3, 'KEY_LGUI' ),
240 ( 0xE4, 'KEY_RCTRL' ),
241 ( 0xE5, 'KEY_RSHIFT' ),
242 ( 0xE6, 'KEY_RALT' ),
243 ( 0xE7, 'KEY_RGUI' ),
244 # 0xE8 - 0xFFFF Reserved, using 0xF0 to 0xFF for function key placeholders
245 ( 0xF0, 'KEY_FUN1' ),
246 ( 0xF1, 'KEY_FUN2' ),
247 ( 0xF2, 'KEY_FUN3' ),
248 ( 0xF3, 'KEY_FUN4' ),
249 ( 0xF4, 'KEY_FUN5' ),
250 ( 0xF5, 'KEY_FUN6' ),
251 ( 0xF6, 'KEY_FUN7' ),
252 ( 0xF7, 'KEY_FUN8' ),
253 ( 0xF8, 'KEY_FUN9' ),
254 ( 0xF9, 'KEY_FUN10' ),
255 ( 0xFA, 'KEY_FUN11' ),
256 ( 0xFB, 'KEY_FUN12' ),
257 ( 0xFC, 'KEY_FUN13' ),
258 ( 0xFD, 'KEY_FUN14' ),
259 ( 0xFE, 'KEY_FUN15' ),
260 ( 0xFF, 'KEY_FUN16' ),
265 # Lookup for KLL defined HID values, internally the compiler uses numbers to combine the keymaps
266 kll_hid_lookup_dictionary = dict([
304 ( 'ESC', 0x29 ), ( 'ESCAPE', 0x29 ),
305 ( 'BACKSPACE', 0x2A ),
307 ( 'SPACE', 0x2C ), ( 'SPACEBAR', 0x2C ),
308 ( '-', 0x2D ), ( 'MINUS', 0x2D ),
309 ( '=', 0x2E ), ( 'EQUALS', 0x2E ), ( 'EQUAL', 0x2E ),
310 ( '{', 0x2F ), ( 'LEFT BRACE', 0x2F ), ( 'LBRACE', 0x2F ),
311 ( '}', 0x30 ), ( 'RIGHT BRACE', 0x30 ), ( 'RBRACE', 0x30 ),
312 ( '\\', 0x31 ), ( 'BACKSLASH', 0x31 ),
313 ( '#', 0x32 ), ( 'NUMBER', 0x32 ), ( 'HASH', 0x32 ),
314 ( ';', 0x33 ), ( 'SEMICOLON', 0x33 ),
315 ( "'", 0x34 ), ( 'QUOTE', 0x34 ), ( 'SINGLE QUOTE', 0x34 ),
316 ( '`', 0x35 ), ( 'BACKTICK', 0x35 ),
317 ( ',', 0x36 ), ( 'COMMA', 0x36 ),
318 ( '.', 0x37 ), ( 'PERIOD', 0x37 ),
319 ( '/', 0x38 ), ( 'SLASH', 0x38 ),
320 ( 'CAPSLOCK', 0x39 ), { 'CAPS LOCK', 0x39 },
333 ( 'PRINTSCREEN', 0x46 ), ( 'PRINT SCREEN', 0x46 ),
334 ( 'SCROLLLOCK', 0x47 ), ( 'SCROLL LOCK', 0x47 ),
338 ( 'PAGEUP', 0x4B ), ( 'PAGE UP', 0x4B ),
341 ( 'PAGEDOWN', 0x4E ), ( 'PAGE DOWN', 0x4E ),
346 ( 'NUMLOCK', 0x53 ), ( 'NUM LOCK', 0x53 ),
347 ( 'P/', 0x54 ), ( 'KEYPAD SLASH', 0x54 ),
348 ( 'P*', 0x55 ), ( 'KEYPAD ASTERIX', 0x55 ), ( 'KEYPAD ASTERISK', 0x55 ),
349 ( 'P-', 0x56 ), ( 'KEYPAD MINUS', 0x56 ),
350 ( 'P+', 0x57 ), ( 'KEYPAD PLUS', 0x57 ),
351 ( 'PENTER', 0x58 ), ( 'KEYPAD ENTER', 0x58 ),
352 ( 'P1', 0x59 ), ( 'KEYPAD 1', 0x59 ),
353 ( 'P2', 0x5A ), ( 'KEYPAD 2', 0x5A ),
354 ( 'P3', 0x5B ), ( 'KEYPAD 3', 0x5B ),
355 ( 'P4', 0x5C ), ( 'KEYPAD 4', 0x5C ),
356 ( 'P5', 0x5D ), ( 'KEYPAD 5', 0x5D ),
357 ( 'P6', 0x5E ), ( 'KEYPAD 6', 0x5E ),
358 ( 'P7', 0x5F ), ( 'KEYPAD 7', 0x5F ),
359 ( 'P8', 0x60 ), ( 'KEYPAD 8', 0x60 ),
360 ( 'P9', 0x61 ), ( 'KEYPAD 9', 0x61 ),
361 ( 'P0', 0x62 ), ( 'KEYPAD 0', 0x62 ),
362 ( 'P.', 0x63 ), ( 'KEYPAD PERIOD', 0x63 ),
363 ( 'ISO/', 0x64 ), ( 'ISO SLASH', 0x64 ),
366 ( 'P=', 0x67 ), ( 'KEYPAD EQUAL', 0x67 ),
391 ( 'VOLUMEUP', 0x80 ), ( 'VOLUME UP', 0x80 ),
392 ( 'VOLUMEDOWN', 0x81 ), ( 'VOLUME DOWN', 0x81 ),
393 ( 'CAPSTOGGLELOCK', 0x82 ), ( 'CAPS TOGGLE LOCK', 0x82 ),
394 ( 'NUMTOGGLELOCK', 0x83 ), ( 'NUM TOGGLE LOCK', 0x83 ),
395 ( 'SCROLLTOGGLELOCK', 0x84 ), ( 'SCROLL TOGGLE LOCK', 0x84 ),
397 ( 'KEYPAD AS400 EQUAL', 0x86 ),
398 ( 'INTER1', 0x87 ), ( 'KANJI1', 0x87 ),
399 ( 'INTER2', 0x88 ), ( 'KANJI2', 0x88 ), ( 'KANA', 0x88 ),
400 ( 'INTER3', 0x89 ), ( 'KANJI3', 0x89 ), ( 'YEN', 0x89 ),
401 ( 'INTER4', 0x8A ), ( 'KANJI4', 0x8A ), ( 'HENKAN', 0x8A ),
402 ( 'INTER5', 0x8B ), ( 'KANJI5', 0x8B ), ( 'MUHENKAN', 0x8B ),
403 ( 'INTER6', 0x8C ), ( 'KANJI6', 0x8C ),
404 ( 'INTER7', 0x8D ), ( 'KANJI7', 0x8D ), ( 'BYTETOGGLE', 0x8D ), ( 'BYTE TOGGLE', 0x8D ),
405 ( 'INTER8', 0x8E ), ( 'KANJI8', 0x8E ),
406 ( 'INTER9', 0x8F ), ( 'KANJI9', 0x8F ),
407 ( 'LANG1', 0x90 ), ( 'HANGULENGLISH', 0x90 ), ( 'HANGUL ENGLISH', 0x90 ),
408 ( 'LANG2', 0x91 ), ( 'HANJA', 0x91 ), ( 'EISU', 0x91 ),
409 ( 'LANG3', 0x92 ), ( 'KATAKANA', 0x92 ),
410 ( 'LANG4', 0x93 ), ( 'HIRAGANA', 0x93 ),
411 ( 'LANG5', 0x94 ), ( 'ZENKAKUHANKAKU', 0x94 ), ( 'ZENKAKU HANKAKU', 0x94 ),
416 ( 'ALTERASE', 0x99 ), ( 'ALT ERASE', 0x99 ),
417 ( 'SYSREQATT', 0x9A ), ( 'SYSREQ', 0x9A ), ( 'SYSTEM REQUEST', 0x9A ),
422 ( 'SEP', 0x9F ), ( 'SEPARATOR', 0x9F ),
425 ( 'CLEAR AGAIN', 0xA2 ),
426 ( 'CRSEL PROPS', 0xA3 ),
429 ( 'P00', 0xB0 ), ( 'KEYPAD 00', 0xB0 ),
430 ( 'P000', 0xB1 ), ( 'KEYPAD 000', 0xB1 ),
431 ( '1000SEP', 0xB2 ), ( 'THOUSANDSEPARATOR', 0xB2 ), ( 'THOUSAND SEPARATOR', 0xB2 ),
432 ( 'DECIMALSEP', 0xB3 ), ( 'DECIMALSEPARATOR', 0xB3 ), ( 'DECIMAL SEPARATOR', 0xB3 ),
433 ( 'CURRENCY', 0xB4 ), ( 'CURRENCYUNIT', 0xB4 ), ( 'CURRENCY UNIT', 0xB4 ),
434 ( 'CURRENCYSUB', 0xB5 ), ( 'CURRENCYSUBUNIT', 0xB5 ), ( 'CURRENCY SUB UNIT', 0xB5 ),
435 ( 'P(', 0xB6 ), ( 'KEYPAD LEFT PARENTHESES', 0xB6 ),
436 ( 'P)', 0xB7 ), ( 'KEYPAD RIGHT PARENTHESES', 0xB7 ),
437 ( 'P{', 0xB8 ), ( 'KEYPAD LEFT BRACE', 0xB8 ),
438 ( 'P}', 0xB9 ), ( 'KEYPAD RIGHT BRACE', 0xB9 ),
439 ( 'PTAB', 0xBA ), ( 'KEYPAD TAB', 0xBA ),
440 ( 'PBACKSPACE', 0xBB ), ( 'KEYPAD BACKSPACE', 0xBB ),
441 ( 'PA', 0xBC ), ( 'KEYPAD A', 0xBC ),
442 ( 'PB', 0xBD ), ( 'KEYPAD B', 0xBD ),
443 ( 'PC', 0xBE ), ( 'KEYPAD C', 0xBE ),
444 ( 'PD', 0xBF ), ( 'KEYPAD D', 0xBF ),
445 ( 'PE', 0xC0 ), ( 'KEYPAD E', 0xC0 ),
446 ( 'PF', 0xC1 ), ( 'KEYPAD F', 0xC1 ),
447 ( 'PXOR', 0xC2 ), ( 'KEYPAD XOR', 0xC2 ),
448 ( 'P^', 0xC3 ), ( 'KEYPAD CHEVRON', 0xC3 ),
449 ( 'P%', 0xC4 ), ( 'KEYPAD PERCENT', 0xC4 ),
450 ( 'P<', 0xC5 ), ( 'KEYPAD LESSTHAN', 0xC5 ), ( 'KEYPAD LESS THAN', 0xC5 ),
451 ( 'P>', 0xC6 ), ( 'KEYPAD GREATERTHAN', 0xC6 ), ( 'KEYPAD GREATER THAN', 0xC6 ),
452 ( 'P&', 0xC7 ), ( 'KEYPAD BITAND', 0xC7 ), ( 'KEYPAD BIT AND', 0xC7 ),
453 ( 'P&&', 0xC8 ), ( 'KEYPAD AND', 0xC8 ),
454 ( 'P|', 0xC9 ), ( 'KEYPAD BITOR', 0xC9 ), ( 'KEYPAD BIT OR', 0xC9 ),
455 ( 'P||', 0xCA ), ( 'KEYPAD OR', 0xCA ),
456 ( 'P:', 0xCB ), ( 'KEYPAD COLON', 0xCB ),
457 ( 'P#', 0xCC ), ( 'KEYPAD NUMBER', 0xCC ), ( 'KEYPAD HASH', 0xCC ),
458 ( 'PSPACE', 0xCD ), ( 'KEYPAD SPACE', 0xCD ),
459 ( 'P@', 0xCE ), ( 'KEYPAD AT', 0xCE ),
460 ( 'P!', 0xCF ), ( 'KEYPAD EXCLAIM', 0xCF ),
461 ( 'PMEMSTORE', 0xD0 ), ( 'KEYPAD MEMSTORE', 0xD0 ), ( 'KEYPAD MEMORY STORE', 0xD0 ),
462 ( 'PMEMRECALL', 0xD1 ), ( 'KEYPAD MEMRECALL', 0xD1 ), ( 'KEYPAD MEMORY RECALL', 0xD1 ),
463 ( 'PMEMCLEAR', 0xD2 ), ( 'KEYPAD MEMCLEAR', 0xD2 ), ( 'KEYPAD MEMORY CLEAR', 0xD2 ),
464 ( 'PMEMADD', 0xD3 ), ( 'KEYPAD MEMADD', 0xD3 ), ( 'KEYPAD MEMORY ADD', 0xD3 ),
465 ( 'PMEMSUB', 0xD4 ), ( 'KEYPAD MEMSUB', 0xD4 ), ( 'KEYPAD MEMORY SUB', 0xD4 ),
466 ( 'PMEMMULT', 0xD5 ), ( 'KEYPAD MEMMULT', 0xD5 ), ( 'KEYPAD MEMORY MULTIPLY', 0xD5 ),
467 ( 'PMEMDIV', 0xD6 ), ( 'KEYPAD MEMDIV', 0xD6 ), ( 'KEYPAD MEMORY DIVIDE', 0xD6 ),
468 ( 'P+/-', 0xD7 ), ( 'KEYPAD PLUSMINUS', 0xD7 ), ( 'KEYPAD PLUS MINUS', 0xD7 ),
469 ( 'PCLEAR', 0xD8 ), ( 'KEYPAD CLEAR', 0xD8 ),
470 ( 'PCLEARENTRY', 0xD9 ), ( 'KEYPAD CLEARENTRY', 0xD9 ), ( 'KEYPAD CLEAR ENTRY', 0xD9 ),
471 ( 'PBINARY', 0xDA ), ( 'KEYPAD BINARY', 0xDA ),
472 ( 'POCTAL', 0xDB ), ( 'KEYPAD OCTAL', 0xDB ),
473 ( 'PDECIMAL', 0xDC ), ( 'KEYPAD DECIMAL', 0xDC ),
474 ( 'PHEX', 0xDD ), ( 'KEYPAD HEX', 0xDD ),
476 ( 'LCTRL', 0xE0 ), ( 'LEFT CTRL', 0xE0 ), ( 'CTRL', 0xE0 ), ( 'CONTROL', 0xE0 ), ( 'LEFT CONTROL', 0xE0 ),
477 ( 'LSHIFT', 0xE1 ), ( 'LEFT SHIFT', 0xE1 ), ( 'SHIFT', 0xE1 ),
478 ( 'LALT', 0xE2 ), ( 'LEFT ALT', 0xE2 ), ( 'ALT', 0xE2 ), ( 'ALTERNATE', 0xE2 ), ( 'LEFT ALTERNATE', 0xE2 ),
479 ( 'LGUI', 0xE3 ), ( 'LEFT GUI', 0xE3 ), ( 'GUI', 0xE3 ), ( 'SUPER', 0xE3 ), ( 'LEFT SUPER', 0xE3 ), ( 'WINDOWS', 0xE3 ), ( 'LEFT WINDOWS', 0xE3 ), ( 'WIN', 0xE3 ), ( 'LEFT WIN', 0xE3 ),
480 ( 'RCTRL', 0xE4 ), ( 'RIGHT CTRL', 0xE4 ), ( 'RIGHT CONTROL', 0xE4 ),
481 ( 'RSHIFT', 0xE5 ), ( 'RIGHT SHIFT', 0xE5 ),
482 ( 'RALT', 0xE6 ), ( 'RIGHT ALT', 0xE6 ), ( 'RIGHT ALTERNATE', 0xE6 ),
483 ( 'RGUI', 0xE7 ), ( 'RIGHT GUI', 0xE7 ), ( 'RIGHT SUPER', 0xE7 ), ( 'RIGHT WINDOWS', 0xE7 ), ( 'RIGHT WIN', 0xE7 ),
485 ( 'FUN1', 0xF0 ), ( 'FUNCTION1', 0xF0 ), ( 'FUN', 0xF0 ),
486 ( 'FUN2', 0xF1 ), ( 'FUNCTION2', 0xF1 ),
487 ( 'FUN3', 0xF2 ), ( 'FUNCTION3', 0xF2 ),
488 ( 'FUN4', 0xF3 ), ( 'FUNCTION4', 0xF3 ),
489 ( 'FUN5', 0xF4 ), ( 'FUNCTION5', 0xF4 ),
490 ( 'FUN6', 0xF5 ), ( 'FUNCTION6', 0xF5 ),
491 ( 'FUN7', 0xF6 ), ( 'FUNCTION7', 0xF6 ),
492 ( 'FUN8', 0xF7 ), ( 'FUNCTION8', 0xF7 ),
493 ( 'FUN9', 0xF8 ), ( 'FUNCTION9', 0xF8 ),
494 ( 'FUN10', 0xF9 ), ( 'FUNCTION10', 0xF9 ),
495 ( 'FUN11', 0xFA ), ( 'FUNCTION11', 0xFA ),
496 ( 'FUN12', 0xFB ), ( 'FUNCTION12', 0xFB ),
497 ( 'FUN13', 0xFC ), ( 'FUNCTION13', 0xFC ),
498 ( 'FUN14', 0xFD ), ( 'FUNCTION14', 0xFD ),
499 ( 'FUN15', 0xFE ), ( 'FUNCTION15', 0xFE ),
500 ( 'FUN16', 0xFF ), ( 'FUNCTION16', 0xFF ),