]> git.donarmstrong.com Git - kiibohd-kll.git/blob - kll_lib/hid_dict.py
Adding Lock and Latch symbolic names (e.g. Function)
[kiibohd-kll.git] / kll_lib / hid_dict.py
1 #!/usr/bin/env python3
2 # KLL Compiler - HID Dictionary Lookup
3 #
4 # USB Code Lookup Dictionary
5 #
6 # Copyright (C) 2014-2015 by Jacob Alexander
7 #
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.
12 #
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.
17 #
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/>.
20
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         # Fall-through block
24         ( ('NONE', 0), '' ), # Special case, there are no arguments
25
26         # USB HID Keyboard Codes
27         ( ('USB', 0x00), 'KEY_NOEVENT' ), # Event, not a physical key
28         ( ('USB', 0x01), 'KEY_ERRORROLLOVER' ), # Event, not a physical key
29         ( ('USB', 0x02), 'KEY_POSTFAIL' ), # Event, not a physical key
30         ( ('USB', 0x03), 'KEY_ERRORUNDEFINED' ), # Event, not a physical key
31         ( ('USB', 0x04), 'KEY_A' ),
32         ( ('USB', 0x05), 'KEY_B' ),
33         ( ('USB', 0x06), 'KEY_C' ),
34         ( ('USB', 0x07), 'KEY_D' ),
35         ( ('USB', 0x08), 'KEY_E' ),
36         ( ('USB', 0x09), 'KEY_F' ),
37         ( ('USB', 0x0A), 'KEY_G' ),
38         ( ('USB', 0x0B), 'KEY_H' ),
39         ( ('USB', 0x0C), 'KEY_I' ),
40         ( ('USB', 0x0D), 'KEY_J' ),
41         ( ('USB', 0x0E), 'KEY_K' ),
42         ( ('USB', 0x0F), 'KEY_L' ),
43         ( ('USB', 0x10), 'KEY_M' ),
44         ( ('USB', 0x11), 'KEY_N' ),
45         ( ('USB', 0x12), 'KEY_O' ),
46         ( ('USB', 0x13), 'KEY_P' ),
47         ( ('USB', 0x14), 'KEY_Q' ),
48         ( ('USB', 0x15), 'KEY_R' ),
49         ( ('USB', 0x16), 'KEY_S' ),
50         ( ('USB', 0x17), 'KEY_T' ),
51         ( ('USB', 0x18), 'KEY_U' ),
52         ( ('USB', 0x19), 'KEY_V' ),
53         ( ('USB', 0x1A), 'KEY_W' ),
54         ( ('USB', 0x1B), 'KEY_X' ),
55         ( ('USB', 0x1C), 'KEY_Y' ),
56         ( ('USB', 0x1D), 'KEY_Z' ),
57         ( ('USB', 0x1E), 'KEY_1' ),
58         ( ('USB', 0x1F), 'KEY_2' ),
59         ( ('USB', 0x20), 'KEY_3' ),
60         ( ('USB', 0x21), 'KEY_4' ),
61         ( ('USB', 0x22), 'KEY_5' ),
62         ( ('USB', 0x23), 'KEY_6' ),
63         ( ('USB', 0x24), 'KEY_7' ),
64         ( ('USB', 0x25), 'KEY_8' ),
65         ( ('USB', 0x26), 'KEY_9' ),
66         ( ('USB', 0x27), 'KEY_0' ),
67         ( ('USB', 0x28), 'KEY_ENTER' ),
68         ( ('USB', 0x29), 'KEY_ESC' ),
69         ( ('USB', 0x2A), 'KEY_BACKSPACE' ),
70         ( ('USB', 0x2B), 'KEY_TAB' ),
71         ( ('USB', 0x2C), 'KEY_SPACE' ),
72         ( ('USB', 0x2D), 'KEY_MINUS' ),
73         ( ('USB', 0x2E), 'KEY_EQUAL' ),
74         ( ('USB', 0x2F), 'KEY_LEFT_BRACE' ),
75         ( ('USB', 0x30), 'KEY_RIGHT_BRACE' ),
76         ( ('USB', 0x31), 'KEY_BACKSLASH' ),
77         ( ('USB', 0x32), 'KEY_NUMBER' ),
78         ( ('USB', 0x33), 'KEY_SEMICOLON' ),
79         ( ('USB', 0x34), 'KEY_QUOTE' ),
80         ( ('USB', 0x35), 'KEY_BACKTICK' ),
81         ( ('USB', 0x36), 'KEY_COMMA' ),
82         ( ('USB', 0x37), 'KEY_PERIOD' ),
83         ( ('USB', 0x38), 'KEY_SLASH' ),
84         ( ('USB', 0x39), 'KEY_CAPS_LOCK' ),
85         ( ('USB', 0x3A), 'KEY_F1' ),
86         ( ('USB', 0x3B), 'KEY_F2' ),
87         ( ('USB', 0x3C), 'KEY_F3' ),
88         ( ('USB', 0x3D), 'KEY_F4' ),
89         ( ('USB', 0x3E), 'KEY_F5' ),
90         ( ('USB', 0x3F), 'KEY_F6' ),
91         ( ('USB', 0x40), 'KEY_F7' ),
92         ( ('USB', 0x41), 'KEY_F8' ),
93         ( ('USB', 0x42), 'KEY_F9' ),
94         ( ('USB', 0x43), 'KEY_F10' ),
95         ( ('USB', 0x44), 'KEY_F11' ),
96         ( ('USB', 0x45), 'KEY_F12' ),
97         ( ('USB', 0x46), 'KEY_PRINTSCREEN' ),
98         ( ('USB', 0x47), 'KEY_SCROLL_LOCK' ),
99         ( ('USB', 0x48), 'KEY_PAUSE' ),
100         ( ('USB', 0x49), 'KEY_INSERT' ),
101         ( ('USB', 0x4A), 'KEY_HOME' ),
102         ( ('USB', 0x4B), 'KEY_PAGE_UP' ),
103         ( ('USB', 0x4C), 'KEY_DELETE' ),
104         ( ('USB', 0x4D), 'KEY_END' ),
105         ( ('USB', 0x4E), 'KEY_PAGE_DOWN' ),
106         ( ('USB', 0x4F), 'KEY_RIGHT' ),
107         ( ('USB', 0x50), 'KEY_LEFT' ),
108         ( ('USB', 0x51), 'KEY_DOWN' ),
109         ( ('USB', 0x52), 'KEY_UP' ),
110         ( ('USB', 0x53), 'KEY_NUM_LOCK' ),
111         ( ('USB', 0x54), 'KEYPAD_SLASH' ),
112         ( ('USB', 0x55), 'KEYPAD_ASTERISK' ),
113         ( ('USB', 0x56), 'KEYPAD_MINUS' ),
114         ( ('USB', 0x57), 'KEYPAD_PLUS' ),
115         ( ('USB', 0x58), 'KEYPAD_ENTER' ),
116         ( ('USB', 0x59), 'KEYPAD_1' ),
117         ( ('USB', 0x5A), 'KEYPAD_2' ),
118         ( ('USB', 0x5B), 'KEYPAD_3' ),
119         ( ('USB', 0x5C), 'KEYPAD_4' ),
120         ( ('USB', 0x5D), 'KEYPAD_5' ),
121         ( ('USB', 0x5E), 'KEYPAD_6' ),
122         ( ('USB', 0x5F), 'KEYPAD_7' ),
123         ( ('USB', 0x60), 'KEYPAD_8' ),
124         ( ('USB', 0x61), 'KEYPAD_9' ),
125         ( ('USB', 0x62), 'KEYPAD_0' ),
126         ( ('USB', 0x63), 'KEYPAD_PERIOD' ),
127         ( ('USB', 0x64), 'KEY_ISO_SLASH' ),
128         ( ('USB', 0x65), 'KEY_APP' ),
129         ( ('USB', 0x66), 'KEYBOARD_STATUS' ), # Used for indicating status or errors, not a key
130         ( ('USB', 0x67), 'KEYPAD_EQUAL' ),
131         ( ('USB', 0x68), 'KEY_F13' ),
132         ( ('USB', 0x69), 'KEY_F14' ),
133         ( ('USB', 0x6A), 'KEY_F15' ),
134         ( ('USB', 0x6B), 'KEY_F16' ),
135         ( ('USB', 0x6C), 'KEY_F17' ),
136         ( ('USB', 0x6D), 'KEY_F18' ),
137         ( ('USB', 0x6E), 'KEY_F19' ),
138         ( ('USB', 0x6F), 'KEY_F20' ),
139         ( ('USB', 0x70), 'KEY_F21' ),
140         ( ('USB', 0x71), 'KEY_F22' ),
141         ( ('USB', 0x72), 'KEY_F23' ),
142         ( ('USB', 0x73), 'KEY_F24' ),
143         ( ('USB', 0x74), 'KEY_EXEC' ),
144         ( ('USB', 0x75), 'KEY_HELP' ),
145         ( ('USB', 0x76), 'KEY_MENU' ),
146         ( ('USB', 0x77), 'KEY_SELECT' ),
147         ( ('USB', 0x78), 'KEY_STOP' ),
148         ( ('USB', 0x79), 'KEY_AGAIN' ),
149         ( ('USB', 0x7A), 'KEY_UNDO' ),
150         ( ('USB', 0x7B), 'KEY_CUT' ),
151         ( ('USB', 0x7C), 'KEY_COPY' ),
152         ( ('USB', 0x7D), 'KEY_PASTE' ),
153         ( ('USB', 0x7E), 'KEY_FIND' ),
154         ( ('USB', 0x7F), 'KEY_MUTE' ),
155         ( ('USB', 0x80), 'KEY_VOL_UP' ),
156         ( ('USB', 0x81), 'KEY_VOL_DOWN' ),
157         ( ('USB', 0x82), 'KEY_CAPS_TLOCK' ), # Toggle "Locking" Scroll Lock (Old keyboards with Locking Caps Lock)
158         ( ('USB', 0x83), 'KEY_NUM_TLOCK' ),
159         ( ('USB', 0x84), 'KEY_SCROLL_TLOCK' ),
160         ( ('USB', 0x85), 'KEYPAD_COMMA' ), # Brazillian (See spec)
161         ( ('USB', 0x86), 'KEYPAD_EQUAL_AS' ), # AS/400 Keyboard (See spec)
162         ( ('USB', 0x87), 'KEY_INTER1' ), # KANJI1 - Brazillian and Japanese "Ru" and "-"
163         ( ('USB', 0x88), 'KEY_INTER2' ), # KANJI2 - Japanese Katakana/Hiragana
164         ( ('USB', 0x89), 'KEY_INTER3' ), # KANJI3 - Japanese Yen
165         ( ('USB', 0x8A), 'KEY_INTER4' ), # KANJI4 - Japanese Henkan
166         ( ('USB', 0x8B), 'KEY_INTER5' ), # KANJI5 - Japanese Muhenkan
167         ( ('USB', 0x8C), 'KEY_INTER6' ), # KANJI6 - PC('USB', 0x62) Comma (Ka-m-ma)
168         ( ('USB', 0x8D), 'KEY_INTER7' ), # KANJI7 - Double-Byte/Single-Byte Toggle
169         ( ('USB', 0x8E), 'KEY_INTER8' ), # KANJI8 - Undefined
170         ( ('USB', 0x8F), 'KEY_INTER9' ), # KANJI9 - Undefined
171         ( ('USB', 0x90), 'KEY_LANG1' ), # Korean Hangul/English Toggle
172         ( ('USB', 0x91), 'KEY_LANG2' ), # Korean Hanja Conversion - Japanese Eisu
173         ( ('USB', 0x92), 'KEY_LANG3' ), # Japanese Katakana Key (USB)
174         ( ('USB', 0x93), 'KEY_LANG4' ), # Japanese Hiragana Key (USB)
175         ( ('USB', 0x94), 'KEY_LANG5' ), # Japanese Zenkaku/Hankaku Key (USB)
176         ( ('USB', 0x95), 'KEY_LANG6' ), # Reserved (Application Specific)
177         ( ('USB', 0x96), 'KEY_LANG7' ), # Reserved (Application Specific)
178         ( ('USB', 0x97), 'KEY_LANG8' ), # Reserved (Application Specific)
179         ( ('USB', 0x98), 'KEY_LANG9' ), # Reserved (Application Specific)
180         ( ('USB', 0x99), 'KEY_ALT_ERASE' ), # Special Erase (See Spec)
181         ( ('USB', 0x9A), 'KEY_SYSREQ_ATT' ), # Modifier Type
182         ( ('USB', 0x9B), 'KEY_CANCEL' ),
183         ( ('USB', 0x9C), 'KEY_CLEAR' ),
184         ( ('USB', 0x9D), 'KEY_PRIOR' ),
185         ( ('USB', 0x9E), 'KEY_RETURN' ),
186         ( ('USB', 0x9F), 'KEY_SEPARATOR' ),
187         ( ('USB', 0xA0), 'KEY_OUT' ),
188         ( ('USB', 0xA1), 'KEY_OPER' ),
189         ( ('USB', 0xA2), 'KEY_CLEAR_AGAIN' ),
190         ( ('USB', 0xA3), 'KEY_CRSEL_PROPS' ),
191         ( ('USB', 0xA4), 'KEY_EXSEL' ),
192 # ('USB', 0xA5) - ('USB', 0xAF) Reserved
193         ( ('USB', 0xB0), 'KEYPAD_00' ),
194         ( ('USB', 0xB1), 'KEYPAD_000' ),
195         ( ('USB', 0xB2), 'KEY_1000_SEP' ),
196         ( ('USB', 0xB3), 'KEY_DECIMAL_SEP' ),
197         ( ('USB', 0xB4), 'KEY_CURRENCY_MAIN' ),
198         ( ('USB', 0xB5), 'KEY_CURRENCY_SUB' ),
199         ( ('USB', 0xB6), 'KEYPAD_LPAREN' ),
200         ( ('USB', 0xB7), 'KEYPAD_RPAREN' ),
201         ( ('USB', 0xB8), 'KEYPAD_LBRACE' ),
202         ( ('USB', 0xB9), 'KEYPAD_RBRACE' ),
203         ( ('USB', 0xBA), 'KEYPAD_TAB' ),
204         ( ('USB', 0xBB), 'KEYPAD_BACKSPACE' ),
205         ( ('USB', 0xBC), 'KEYPAD_A' ),
206         ( ('USB', 0xBD), 'KEYPAD_B' ),
207         ( ('USB', 0xBE), 'KEYPAD_C' ),
208         ( ('USB', 0xBF), 'KEYPAD_D' ),
209         ( ('USB', 0xC0), 'KEYPAD_E' ),
210         ( ('USB', 0xC1), 'KEYPAD_F' ),
211         ( ('USB', 0xC2), 'KEYPAD_XOR' ),
212         ( ('USB', 0xC3), 'KEYPAD_CHEVRON' ),
213         ( ('USB', 0xC4), 'KEYPAD_PERCENT' ),
214         ( ('USB', 0xC5), 'KEYPAD_LTHAN' ),
215         ( ('USB', 0xC6), 'KEYPAD_GTHAN' ),
216         ( ('USB', 0xC7), 'KEYPAD_BITAND' ),
217         ( ('USB', 0xC8), 'KEYPAD_AND' ),
218         ( ('USB', 0xC9), 'KEYPAD_BITOR' ),
219         ( ('USB', 0xCA), 'KEYPAD_OR' ),
220         ( ('USB', 0xCB), 'KEYPAD_COLON' ),
221         ( ('USB', 0xCC), 'KEYPAD_POUND' ),
222         ( ('USB', 0xCD), 'KEYPAD_SPACE' ),
223         ( ('USB', 0xCE), 'KEYPAD_AT' ),
224         ( ('USB', 0xCF), 'KEYPAD_EXCLAIM' ),
225         ( ('USB', 0xD0), 'KEYPAD_MEM_STORE' ),
226         ( ('USB', 0xD1), 'KEYPAD_MEM_RECALL' ),
227         ( ('USB', 0xD2), 'KEYPAD_MEM_CLEAR' ),
228         ( ('USB', 0xD3), 'KEYPAD_MEM_ADD' ),
229         ( ('USB', 0xD4), 'KEYPAD_MEM_SUB' ),
230         ( ('USB', 0xD5), 'KEYPAD_MEM_MULT' ),
231         ( ('USB', 0xD6), 'KEYPAD_MEM_DIV' ),
232         ( ('USB', 0xD7), 'KEYPAD_PLUS_MINUS' ),
233         ( ('USB', 0xD8), 'KEYPAD_CLEAR' ),
234         ( ('USB', 0xD9), 'KEYPAD_CLEAR_ENTRY' ),
235         ( ('USB', 0xDA), 'KEYPAD_BINARY' ),
236         ( ('USB', 0xDB), 'KEYPAD_OCTAL' ),
237         ( ('USB', 0xDC), 'KEYPAD_DECIMAL' ),
238         ( ('USB', 0xDD), 'KEYPAD_HEX' ),
239 # ('USB', 0xDE) - ('USB', 0xDF) Reserved
240         ( ('USB', 0xE0), 'KEY_LCTRL' ),
241         ( ('USB', 0xE1), 'KEY_LSHIFT' ),
242         ( ('USB', 0xE2), 'KEY_LALT' ),
243         ( ('USB', 0xE3), 'KEY_LGUI' ),
244         ( ('USB', 0xE4), 'KEY_RCTRL' ),
245         ( ('USB', 0xE5), 'KEY_RSHIFT' ),
246         ( ('USB', 0xE6), 'KEY_RALT' ),
247         ( ('USB', 0xE7), 'KEY_RGUI' ),
248 # ('USB', 0xE8) - ('USB', 0xFF)FF Reserved, using ('USB', 0xF0) to ('USB', 0xFF) for function key placeholders
249         ( ('USB', 0xF0), 'KEY_FUN1' ),
250         ( ('USB', 0xF1), 'KEY_FUN2' ),
251         ( ('USB', 0xF2), 'KEY_FUN3' ),
252         ( ('USB', 0xF3), 'KEY_FUN4' ),
253         ( ('USB', 0xF4), 'KEY_FUN5' ),
254         ( ('USB', 0xF5), 'KEY_FUN6' ),
255         ( ('USB', 0xF6), 'KEY_FUN7' ),
256         ( ('USB', 0xF7), 'KEY_FUN8' ),
257         ( ('USB', 0xF8), 'KEY_FUN9' ),
258         ( ('USB', 0xF9), 'KEY_FUN10' ),
259         ( ('USB', 0xFA), 'KEY_FUN11' ),
260         ( ('USB', 0xFB), 'KEY_FUN12' ),
261         ( ('USB', 0xFC), 'KEY_FUN13' ),
262         ( ('USB', 0xFD), 'KEY_FUN14' ),
263         ( ('USB', 0xFE), 'KEY_FUN15' ),
264         ( ('USB', 0xFF), 'KEY_FUN16' ),
265 # ('USB', 0x100) to ('USB', 0x11F) for function key placeholders, not valid usb codes (must use a translation .kll file before firmware compilation)
266         ( ('USB', 0x100), 'KEY_LCK1' ),
267         ( ('USB', 0x101), 'KEY_LCK2' ),
268         ( ('USB', 0x102), 'KEY_LCK3' ),
269         ( ('USB', 0x103), 'KEY_LCK4' ),
270         ( ('USB', 0x104), 'KEY_LCK5' ),
271         ( ('USB', 0x105), 'KEY_LCK6' ),
272         ( ('USB', 0x106), 'KEY_LCK7' ),
273         ( ('USB', 0x107), 'KEY_LCK8' ),
274         ( ('USB', 0x108), 'KEY_LCK9' ),
275         ( ('USB', 0x109), 'KEY_LCK10' ),
276         ( ('USB', 0x10A), 'KEY_LCK11' ),
277         ( ('USB', 0x10B), 'KEY_LCK12' ),
278         ( ('USB', 0x10C), 'KEY_LCK13' ),
279         ( ('USB', 0x10D), 'KEY_LCK14' ),
280         ( ('USB', 0x10E), 'KEY_LCK15' ),
281         ( ('USB', 0x10F), 'KEY_LCK16' ),
282         ( ('USB', 0x110), 'KEY_LAT1' ),
283         ( ('USB', 0x111), 'KEY_LAT2' ),
284         ( ('USB', 0x112), 'KEY_LAT3' ),
285         ( ('USB', 0x113), 'KEY_LAT4' ),
286         ( ('USB', 0x114), 'KEY_LAT5' ),
287         ( ('USB', 0x115), 'KEY_LAT6' ),
288         ( ('USB', 0x116), 'KEY_LAT7' ),
289         ( ('USB', 0x117), 'KEY_LAT8' ),
290         ( ('USB', 0x118), 'KEY_LAT9' ),
291         ( ('USB', 0x119), 'KEY_LAT10' ),
292         ( ('USB', 0x11A), 'KEY_LAT11' ),
293         ( ('USB', 0x11B), 'KEY_LAT12' ),
294         ( ('USB', 0x11C), 'KEY_LAT13' ),
295         ( ('USB', 0x11D), 'KEY_LAT14' ),
296         ( ('USB', 0x11E), 'KEY_LAT15' ),
297         ( ('USB', 0x11F), 'KEY_LAT16' ),
298
299         # USB HID Consumer Control Codes
300 # List of Consumer Codes - USB HID 1.12v2
301 # Only listing relevant ones, let me know if you need more -HaaTa
302 # NKRO HID Supports 0x020 - 0x29C
303         ( ('CONS', 0x020), 'CONSUMER_10' ),
304         ( ('CONS', 0x021), 'CONSUMER_100' ),
305         ( ('CONS', 0x022), 'CONSUMER_AM_PM' ),
306 # 0x023 - 0x03F Reserved
307         ( ('CONS', 0x030), 'CONSUMER_POWER' ),
308         ( ('CONS', 0x031), 'CONSUMER_RESET' ),
309         ( ('CONS', 0x032), 'CONSUMER_SLEEP' ),
310         ( ('CONS', 0x033), 'CONSUMER_SLEEP_AFTER' ),
311         ( ('CONS', 0x034), 'CONSUMER_SLEEP_MODE' ),
312         ( ('CONS', 0x035), 'CONSUMER_ILLUMINATION' ),
313
314 # 0x037 - 0x03F Reserved
315         ( ('CONS', 0x040), 'CONSUMER_MENU' ),
316         ( ('CONS', 0x041), 'CONSUMER_MENU_PICK' ),
317         ( ('CONS', 0x042), 'CONSUMER_MENU_UP' ),
318         ( ('CONS', 0x043), 'CONSUMER_MENU_DOWN' ),
319         ( ('CONS', 0x044), 'CONSUMER_MENU_LEFT' ),
320         ( ('CONS', 0x045), 'CONSUMER_MENU_RIGHT' ),
321         ( ('CONS', 0x046), 'CONSUMER_MENU_ESCAPE' ),
322         ( ('CONS', 0x047), 'CONSUMER_MENU_VALUE_INCREASE' ),
323         ( ('CONS', 0x048), 'CONSUMER_MENU_VALUE_DECREASE' ),
324 # 0x049 - 0x05F Reserved
325         ( ('CONS', 0x060), 'CONSUMER_DATA_ON_SCREEN' ),
326         ( ('CONS', 0x061), 'CONSUMER_CLOSED_CAPTION' ),
327         ( ('CONS', 0x062), 'CONSUMER_CLOSED_CAPTION_SELECT' ),
328         ( ('CONS', 0x063), 'CONSUMER_VCR_TV' ),
329         ( ('CONS', 0x064), 'CONSUMER_BROADCAST_MODE' ),
330         ( ('CONS', 0x065), 'CONSUMER_SNAPSHOT' ),
331         ( ('CONS', 0x066), 'CONSUMER_STILL' ),
332 # 0x067 - 0x07F Reserved
333
334         ( ('CONS', 0x081), 'CONSUMER_ASSIGN_SELECTION' ),
335         ( ('CONS', 0x082), 'CONSUMER_MODE_STEP' ),
336         ( ('CONS', 0x083), 'CONSUMER_RECALL_LAST' ),
337         ( ('CONS', 0x084), 'CONSUMER_ENTER_CHANNEL' ),
338         ( ('CONS', 0x085), 'CONSUMER_ORDER_MOVIE' ),
339
340         ( ('CONS', 0x088), 'CONSUMER_MEDIA_COMPUTER' ),
341         ( ('CONS', 0x089), 'CONSUMER_MEDIA_TV' ),
342         ( ('CONS', 0x08A), 'CONSUMER_MEDIA_WWW' ),
343         ( ('CONS', 0x08B), 'CONSUMER_MEDIA_DVD' ),
344         ( ('CONS', 0x08C), 'CONSUMER_MEDIA_TELEPHONE' ),
345         ( ('CONS', 0x08D), 'CONSUMER_MEDIA_PROGRAM_GUIDE' ),
346         ( ('CONS', 0x08E), 'CONSUMER_MEDIA_VIDEO_PHONE' ),
347         ( ('CONS', 0x08F), 'CONSUMER_MEDIA_SELECT_GAMES' ),
348         ( ('CONS', 0x090), 'CONSUMER_MEDIA_SELECT_MESSAGES' ),
349         ( ('CONS', 0x091), 'CONSUMER_MEDIA_SELECT_CD' ),
350         ( ('CONS', 0x092), 'CONSUMER_MEDIA_SELECT_VCR' ),
351         ( ('CONS', 0x093), 'CONSUMER_MEDIA_SELECT_TUNER' ),
352         ( ('CONS', 0x094), 'CONSUMER_QUIT' ),
353         ( ('CONS', 0x095), 'CONSUMER_HELP' ),
354         ( ('CONS', 0x096), 'CONSUMER_MEDIA_SELECT_TAPE' ),
355         ( ('CONS', 0x097), 'CONSUMER_MEDIA_SELECT_CABLE' ),
356         ( ('CONS', 0x098), 'CONSUMER_MEDIA_SELECT_SATELLITE' ),
357         ( ('CONS', 0x099), 'CONSUMER_MEDIA_SELECT_SECURITY' ),
358         ( ('CONS', 0x09A), 'CONSUMER_MEDIA_SELECT_HOME' ),
359         ( ('CONS', 0x09B), 'CONSUMER_MEDIA_SELECT_CALL' ),
360         ( ('CONS', 0x09C), 'CONSUMER_CHANNEL_INCREMENT' ),
361         ( ('CONS', 0x09D), 'CONSUMER_CAHNNEL_DECREMENT' ),
362         ( ('CONS', 0x09E), 'CONSUMER_MEDIA_SELECT_SAP' ),
363 # 0x09F Reserved
364         ( ('CONS', 0x0A0), 'CONSUMER_VCR_PLUS' ),
365         ( ('CONS', 0x0A1), 'CONSUMER_ONCE' ),
366         ( ('CONS', 0x0A2), 'CONSUMER_DAILY' ),
367         ( ('CONS', 0x0A3), 'CONSUMER_WEEKLY' ),
368         ( ('CONS', 0x0A4), 'CONSUMER_MONTHLY' ),
369 # 0x0A5 - 0x0AF Reserved
370         ( ('CONS', 0x0B0), 'CONSUMER_PLAY' ),
371         ( ('CONS', 0x0B1), 'CONSUMER_PAUSE' ),
372         ( ('CONS', 0x0B2), 'CONSUMER_RECORD' ),
373         ( ('CONS', 0x0B3), 'CONSUMER_FAST_FORWARD' ),
374         ( ('CONS', 0x0B4), 'CONSUMER_REWIND' ),
375         ( ('CONS', 0x0B5), 'CONSUMER_SCAN_NEXT_TRACK' ),
376         ( ('CONS', 0x0B6), 'CONSUMER_SCAN_PREVIOUS_TRACK' ),
377         ( ('CONS', 0x0B7), 'CONSUMER_STOP' ),
378         ( ('CONS', 0x0B8), 'CONSUMER_EJECT' ),
379         ( ('CONS', 0x0B9), 'CONSUMER_RANDOM_PLAY' ),
380
381         ( ('CONS', 0x0BC), 'CONSUMER_REPEAT' ),
382
383         ( ('CONS', 0x0BE), 'CONSUMER_TRACK_NORMAL' ),
384
385         ( ('CONS', 0x0C0), 'CONSUMER_FRAME_FORWARD' ),
386         ( ('CONS', 0x0C1), 'CONSUMER_FRAME_BACK' ),
387         ( ('CONS', 0x0C2), 'CONSUMER_MARK' ),
388         ( ('CONS', 0x0C3), 'CONSUMER_CLEAR_MARK' ),
389         ( ('CONS', 0x0C4), 'CONSUMER_REPEAT_FROM_MARK' ),
390         ( ('CONS', 0x0C5), 'CONSUMER_RETURN_TO_MARK' ),
391         ( ('CONS', 0x0C6), 'CONSUMER_SEARCH_MARK_FORWARDS' ),
392         ( ('CONS', 0x0C7), 'CONSUMER_SEARCH_MARK_BACKWARDS' ),
393         ( ('CONS', 0x0C8), 'CONSUMER_COUNTER_RESET' ),
394         ( ('CONS', 0x0C9), 'CONSUMER_SHOW_COUNTER' ),
395         ( ('CONS', 0x0CA), 'CONSUMER_TRACKING_INCREMENT' ),
396         ( ('CONS', 0x0CB), 'CONSUMER_TRACKING_DECREMENT' ),
397         ( ('CONS', 0x0CC), 'CONSUMER_STOP_EJECT' ),
398         ( ('CONS', 0x0CD), 'CONSUMER_PAUSE_PLAY' ),
399         ( ('CONS', 0x0CE), 'CONSUMER_PLAY_SKIP' ),
400 # 0x0CF - 0x0DF Reserved
401
402         ( ('CONS', 0x0E2), 'CONSUMER_MUTE' ),
403
404         ( ('CONS', 0x0E5), 'CONSUMER_BASS_BOOST' ),
405         ( ('CONS', 0x0E6), 'CONSUMER_SURROUND_MODE' ),
406         ( ('CONS', 0x0E7), 'CONSUMER_LOUDNESS' ),
407         ( ('CONS', 0x0E8), 'CONSUMER_MPX' ),
408         ( ('CONS', 0x0E9), 'CONSUMER_VOLUME_UP' ),
409         ( ('CONS', 0x0EA), 'CONSUMER_VOLUME_DOWN' ),
410 # 0x0EB - 0x0EF Reserved
411         ( ('CONS', 0x0F0), 'CONSUMER_SPEED_SELECT' ),
412         ( ('CONS', 0x0F2), 'CONSUMER_STANDARD_PLAY' ),
413         ( ('CONS', 0x0F3), 'CONSUMER_LONG_PLAY' ),
414         ( ('CONS', 0x0F4), 'CONSUMER_EXTENDED_PLAY' ),
415         ( ('CONS', 0x0F5), 'CONSUMER_SLOW' ),
416 # 0x0F6 - 0x0FF
417         ( ('CONS', 0x100), 'CONSUMER_FAN_ENABLE' ),
418
419         ( ('CONS', 0x102), 'CONSUMER_LIGHT_ENABLE' ),
420
421         ( ('CONS', 0x104), 'CONSUMER_CLIMATE_CONTROL_ENABLE' ),
422
423         ( ('CONS', 0x106), 'CONSUMER_SECURITY_ENABLE' ),
424         ( ('CONS', 0x107), 'CONSUMER_FIRE_ALARM' ),
425
426         ( ('CONS', 0x10A), 'CONSUMER_MOTION' ),
427         ( ('CONS', 0x10B), 'CONSUMER_DURESS_ALARM' ),
428         ( ('CONS', 0x10C), 'CONSUMER_HOLDUP_ALARM' ),
429         ( ('CONS', 0x10D), 'CONSUMER_MEDICAL_ALARM' ),
430 # 0x10E - 0x14F Reserved
431         ( ('CONS', 0x150), 'CONSUMER_BALANCE_RIGHT' ),
432         ( ('CONS', 0x151), 'CONSUMER_BALANCE_LEFT' ),
433         ( ('CONS', 0x152), 'CONSUMER_BASS_INCR' ),
434         ( ('CONS', 0x153), 'CONSUMER_BASS_DECR' ),
435         ( ('CONS', 0x154), 'CONSUMER_TREBLE_INCR' ),
436         ( ('CONS', 0x155), 'CONSUMER_TREBLE_DECR' ),
437 # 0x156 - 0x15F Reserved
438
439         ( ('CONS', 0x171), 'CONSUMER_SUB_CHANNEL_INCREMENT' ),
440         ( ('CONS', 0x172), 'CONSUMER_SUB_CHANNEL_DECREMENT' ),
441         ( ('CONS', 0x173), 'CONSUMER_ALT_AUDIO_INCREMENT' ),
442         ( ('CONS', 0x174), 'CONSUMER_ALT_AUDIO_DECREMENT' ),
443
444 # List of Consumer Codes - USB HID 1.12v2
445 # Application Launch Buttons pg 79
446         ( ('CONS', 0x181), 'AL_LAUNCH_BUTTON_CONFIG_TOOL' ),
447         ( ('CONS', 0x182), 'AL_PROGRAMMABLE_BUTTON_CONFIG' ),
448         ( ('CONS', 0x183), 'AL_CONSUMER_CONTROL_CONFIG' ),
449         ( ('CONS', 0x184), 'AL_WORD_PROCESSOR' ),
450         ( ('CONS', 0x185), 'AL_TEXT_EDITOR' ),
451         ( ('CONS', 0x186), 'AL_SPREADSHEET' ),
452         ( ('CONS', 0x187), 'AL_GRAPHICS_EDITOR' ),
453         ( ('CONS', 0x188), 'AL_PRESENTATION_APP' ),
454         ( ('CONS', 0x189), 'AL_DATABASE_APP' ),
455         ( ('CONS', 0x18A), 'AL_EMAIL_READER' ),
456         ( ('CONS', 0x18B), 'AL_NEWSREADER' ),
457         ( ('CONS', 0x18C), 'AL_VOICEMAIL' ),
458         ( ('CONS', 0x18D), 'AL_CONTACTS_ADDRESS_BOOK' ),
459         ( ('CONS', 0x18E), 'AL_CALENDAR_SCHEDULE' ),
460         ( ('CONS', 0x18F), 'AL_TASK_PROJECT_MANAGER' ),
461         ( ('CONS', 0x190), 'AL_LOG_JOURNAL_TIMECARD' ),
462         ( ('CONS', 0x191), 'AL_CHECKBOOK_FINANCE' ),
463         ( ('CONS', 0x192), 'AL_CALCULATOR' ),
464         ( ('CONS', 0x193), 'AL_A_V_CAPTURE_PLAYBACK' ),
465         ( ('CONS', 0x194), 'AL_LOCAL_MACHINE_BROWSER' ),
466         ( ('CONS', 0x195), 'AL_LAN_WAN_BROWSER' ),
467         ( ('CONS', 0x196), 'AL_INTERNET_BROWSER' ),
468         ( ('CONS', 0x197), 'AL_REMOTE_NETWORKING_ISP_CONNECT' ),
469         ( ('CONS', 0x198), 'AL_NETWORK_CONFERENCE' ),
470         ( ('CONS', 0x199), 'AL_NETWORK_CHAT' ),
471         ( ('CONS', 0x19A), 'AL_TELEPHONY_DIALER' ),
472         ( ('CONS', 0x19B), 'AL_LOGON' ),
473         ( ('CONS', 0x19C), 'AL_LOGOFF' ),
474         ( ('CONS', 0x19D), 'AL_LOGON_LOGOFF' ),
475         ( ('CONS', 0x19E), 'AL_TERMINAL_LOCK_SCREENSAVER' ),
476         ( ('CONS', 0x19F), 'AL_CONTROL_PANEL' ),
477         ( ('CONS', 0x1A0), 'AL_COMMAND_LINE_PROCESSOR_RUN' ),
478         ( ('CONS', 0x1A1), 'AL_PROCESS_TASK_MANAGER' ),
479         ( ('CONS', 0x1A2), 'AL_SELECT_TAST_APP' ),
480         ( ('CONS', 0x1A3), 'AL_NEXT_TASK_APP' ),
481         ( ('CONS', 0x1A4), 'AL_PREVIOUS_TASK_APP' ),
482         ( ('CONS', 0x1A5), 'AL_PREEMPTIVE_HALT_TASK_APP' ),
483         ( ('CONS', 0x1A6), 'AL_INTEGRATED_HELP_CENTER' ),
484         ( ('CONS', 0x1A7), 'AL_DOCUMENTS' ),
485         ( ('CONS', 0x1A8), 'AL_THESAURUS' ),
486         ( ('CONS', 0x1A9), 'AL_DICTIONARY' ),
487         ( ('CONS', 0x1AA), 'AL_DESKTOP' ),
488         ( ('CONS', 0x1AB), 'AL_SPELL_CHECK' ),
489         ( ('CONS', 0x1AC), 'AL_GRAMMAR_CHECK' ),
490         ( ('CONS', 0x1AD), 'AL_WIRELESS_STATUS' ),
491         ( ('CONS', 0x1AE), 'AL_KEYBOARD_LAYOUT' ),
492         ( ('CONS', 0x1AF), 'AL_VIRUS_PROTECTION' ),
493         ( ('CONS', 0x1B0), 'AL_ENCRYPTION' ),
494         ( ('CONS', 0x1B1), 'AL_SCREEN_SAVER' ),
495         ( ('CONS', 0x1B2), 'AL_ALARMS' ),
496         ( ('CONS', 0x1B3), 'AL_CLOCK' ),
497         ( ('CONS', 0x1B4), 'AL_FILE_BROWSER' ),
498         ( ('CONS', 0x1B5), 'AL_POWER_STATUS' ),
499         ( ('CONS', 0x1B6), 'AL_IMAGE_BROWSER' ),
500         ( ('CONS', 0x1B7), 'AL_AUDIO_BROWSER' ),
501         ( ('CONS', 0x1B8), 'AL_MOVIE_BROWSER' ),
502         ( ('CONS', 0x1B9), 'AL_DIGITAL_RIGHTS_MANAGER' ),
503         ( ('CONS', 0x1BA), 'AL_DIGITAL_WALLET' ),
504 # 0x1BB Reserved
505         ( ('CONS', 0x1BC), 'AL_INSTANT_MESSAGING' ),
506         ( ('CONS', 0x1BD), 'AL_OEM_FEATURES_TIPS_TUTORIAL' ),
507         ( ('CONS', 0x1BE), 'AL_OEM_HELP' ),
508         ( ('CONS', 0x1BF), 'AL_ONLINE_COMMUNITY' ),
509         ( ('CONS', 0x1C0), 'AL_ENTERTAINMENT_CONTENT' ),
510         ( ('CONS', 0x1C1), 'AL_ONLINE_SHOPPING' ),
511         ( ('CONS', 0x1C2), 'AL_SMARTCARD_INFO_HELP' ),
512         ( ('CONS', 0x1C3), 'AL_MARKET_MONITOR' ),
513         ( ('CONS', 0x1C4), 'AL_CUSTOMIZED_CORP_NEWS' ),
514         ( ('CONS', 0x1C5), 'AL_ONLINE_ACTIVITY' ),
515         ( ('CONS', 0x1C6), 'AL_SEARCH_BROWSER' ),
516         ( ('CONS', 0x1C7), 'AL_AUDIO_PLAYER' ),
517
518 # List of Consumer Codes - USB HID 1.12v2
519 # Generic GUI Application Controls pg 82
520         ( ('CONS', 0x201), 'AC_NEW' ),
521         ( ('CONS', 0x202), 'AC_OPEN' ),
522         ( ('CONS', 0x203), 'AC_CLOSE' ),
523         ( ('CONS', 0x204), 'AC_EXIT' ),
524         ( ('CONS', 0x205), 'AC_MAXIMIZE' ),
525         ( ('CONS', 0x206), 'AC_MINIMIZE' ),
526         ( ('CONS', 0x207), 'AC_SAVE' ),
527         ( ('CONS', 0x208), 'AC_PRINT' ),
528         ( ('CONS', 0x209), 'AC_PROPERTIES' ),
529         ( ('CONS', 0x21A), 'AC_UNDO' ),
530         ( ('CONS', 0x21B), 'AC_COPY' ),
531         ( ('CONS', 0x21C), 'AC_CUT' ),
532         ( ('CONS', 0x21D), 'AC_PASTE' ),
533         ( ('CONS', 0x21E), 'AC_SELECT_ALL' ),
534         ( ('CONS', 0x21F), 'AC_FIND' ),
535         ( ('CONS', 0x220), 'AC_FIND_AND_REPLACE' ),
536         ( ('CONS', 0x221), 'AC_SEARCH' ),
537         ( ('CONS', 0x222), 'AC_GO_TO' ),
538         ( ('CONS', 0x223), 'AC_HOME' ),
539         ( ('CONS', 0x224), 'AC_BACK' ),
540         ( ('CONS', 0x225), 'AC_FORWARD' ),
541         ( ('CONS', 0x226), 'AC_STOP' ),
542         ( ('CONS', 0x227), 'AC_REFRESH' ),
543         ( ('CONS', 0x228), 'AC_PREVIOUS_LINK' ),
544         ( ('CONS', 0x229), 'AC_NEXT_LINK' ),
545         ( ('CONS', 0x22A), 'AC_BOOKMARKS' ),
546         ( ('CONS', 0x22B), 'AC_HISTORY' ),
547         ( ('CONS', 0x22C), 'AC_SUBSCRIPTIONS' ),
548         ( ('CONS', 0x22D), 'AC_ZOOM_IN' ),
549         ( ('CONS', 0x22E), 'AC_ZOOM_OUT' ),
550         ( ('CONS', 0x22F), 'AC_ZOOM' ),
551         ( ('CONS', 0x230), 'AC_FULL_SCREEN_VIEW' ),
552         ( ('CONS', 0x231), 'AC_NORMAL_VIEW' ),
553         ( ('CONS', 0x232), 'AC_VIEW_TOGGLE' ),
554         ( ('CONS', 0x233), 'AC_SCROLL_UP' ),
555         ( ('CONS', 0x234), 'AC_SCROLL_DOWN' ),
556         ( ('CONS', 0x235), 'AC_SCROLL' ),
557         ( ('CONS', 0x236), 'AC_PAN_LEFT' ),
558         ( ('CONS', 0x237), 'AC_PAN_RIGHT' ),
559         ( ('CONS', 0x238), 'AC_PAN' ),
560         ( ('CONS', 0x239), 'AC_NEW_WINDOW' ),
561         ( ('CONS', 0x23A), 'AC_TILE_HORIZONTALLY' ),
562         ( ('CONS', 0x23B), 'AC_TILE_VERTICALLY' ),
563         ( ('CONS', 0x23C), 'AC_FORMAT' ),
564         ( ('CONS', 0x23D), 'AC_EDIT' ),
565         ( ('CONS', 0x23E), 'AC_BOLD' ),
566         ( ('CONS', 0x23F), 'AC_ITALICS' ),
567         ( ('CONS', 0x240), 'AC_UNDERLINE' ),
568         ( ('CONS', 0x241), 'AC_STRIKETHROUGH' ),
569         ( ('CONS', 0x242), 'AC_SUBSCRIPT' ),
570         ( ('CONS', 0x243), 'AC_SUPERSCRIPT' ),
571         ( ('CONS', 0x244), 'AC_ALL_CAPS' ),
572         ( ('CONS', 0x245), 'AC_ROTATE' ),
573         ( ('CONS', 0x246), 'AC_RESIZE' ),
574         ( ('CONS', 0x247), 'AC_FILP_HORIZONTAL' ),
575         ( ('CONS', 0x248), 'AC_FILP_VERTICAL' ),
576         ( ('CONS', 0x249), 'AC_MIRROR_HORIZONTAL' ),
577         ( ('CONS', 0x24A), 'AC_MIRROR_VERTICAL' ),
578         ( ('CONS', 0x24B), 'AC_FONT_SELECT' ),
579         ( ('CONS', 0x24C), 'AC_FONT_COLOR' ),
580         ( ('CONS', 0x24D), 'AC_FONT_SIZE' ),
581         ( ('CONS', 0x24E), 'AC_JUSTIFY_LEFT' ),
582         ( ('CONS', 0x24F), 'AC_JUSTIFY_CENTER_H' ),
583         ( ('CONS', 0x250), 'AC_JUSTIFY_RIGHT' ),
584         ( ('CONS', 0x251), 'AC_JUSTIFY_BLOCK_H' ),
585         ( ('CONS', 0x252), 'AC_JUSTIFY_TOP' ),
586         ( ('CONS', 0x253), 'AC_JUSTIFY_CENTER_V' ),
587         ( ('CONS', 0x254), 'AC_JUSTIFY_BOTTOM' ),
588         ( ('CONS', 0x255), 'AC_JUSTIFY_BLOCK_V' ),
589         ( ('CONS', 0x256), 'AC_INDENT_DECREASE' ),
590         ( ('CONS', 0x257), 'AC_INDENT_INCREASE' ),
591         ( ('CONS', 0x258), 'AC_NUMBERED_LIST' ),
592         ( ('CONS', 0x259), 'AC_RESTART_NUMBERING' ),
593         ( ('CONS', 0x25A), 'AC_BULLETED_LIST' ),
594         ( ('CONS', 0x25B), 'AC_PROMOTE' ),
595         ( ('CONS', 0x25C), 'AC_DEMOTE' ),
596         ( ('CONS', 0x25D), 'AC_YES' ),
597         ( ('CONS', 0x25E), 'AC_NO' ),
598         ( ('CONS', 0x25F), 'AC_CANCEL' ),
599         ( ('CONS', 0x260), 'AC_CATALOG' ),
600         ( ('CONS', 0x261), 'AC_BUY_CHECKOUT' ),
601         ( ('CONS', 0x262), 'AC_ADD_TO_CART' ),
602         ( ('CONS', 0x263), 'AC_EXPAND' ),
603         ( ('CONS', 0x264), 'AC_EXPAND_ALL' ),
604         ( ('CONS', 0x265), 'AC_COLLAPSE' ),
605         ( ('CONS', 0x266), 'AC_COLLAPSE_ALL' ),
606         ( ('CONS', 0x267), 'AC_PRINT_PREVIEW' ),
607         ( ('CONS', 0x268), 'AC_PASTE_SPECIAL' ),
608         ( ('CONS', 0x269), 'AC_INSERT_MODE' ),
609         ( ('CONS', 0x26A), 'AC_DELETE' ),
610         ( ('CONS', 0x26B), 'AC_LOCK' ),
611         ( ('CONS', 0x26C), 'AC_UNLOCK' ),
612         ( ('CONS', 0x26D), 'AC_PROTECT' ),
613         ( ('CONS', 0x26E), 'AC_UNPROTECT' ),
614         ( ('CONS', 0x26F), 'AC_ATTACH_COMMENT' ),
615         ( ('CONS', 0x270), 'AC_DELETE_COMMENT' ),
616         ( ('CONS', 0x271), 'AC_VIEW_COMMENT' ),
617         ( ('CONS', 0x272), 'AC_SELECT_WORD' ),
618         ( ('CONS', 0x273), 'AC_SELECT_SENTENCE' ),
619         ( ('CONS', 0x274), 'AC_SELECT_PARAGRAPH' ),
620         ( ('CONS', 0x275), 'AC_SELECT_COLUMN' ),
621         ( ('CONS', 0x276), 'AC_SELECT_ROW' ),
622         ( ('CONS', 0x277), 'AC_SELECT_TABLE' ),
623         ( ('CONS', 0x278), 'AC_SELECT_OBJECT' ),
624         ( ('CONS', 0x279), 'AC_REDO_REPEAT' ),
625         ( ('CONS', 0x27A), 'AC_SORT' ),
626         ( ('CONS', 0x27B), 'AC_SORT_ASCENDING' ),
627         ( ('CONS', 0x27C), 'AC_SORT_DESCENDING' ),
628         ( ('CONS', 0x27D), 'AC_FILTER' ),
629         ( ('CONS', 0x27E), 'AC_SET_CLOCK' ),
630         ( ('CONS', 0x27F), 'AC_VIEW_CLOCK' ),
631         ( ('CONS', 0x280), 'AC_SELECT_TIME_ZONE' ),
632         ( ('CONS', 0x281), 'AC_EDIT_TIME_ZONE' ),
633         ( ('CONS', 0x282), 'AC_SET_ALARM' ),
634         ( ('CONS', 0x283), 'AC_CLEAR_ALARM' ),
635         ( ('CONS', 0x284), 'AC_SNOOZE_ALARM' ),
636         ( ('CONS', 0x285), 'AC_RESET_ALARM' ),
637         ( ('CONS', 0x286), 'AC_SYNCHRONIZE' ),
638         ( ('CONS', 0x287), 'AC_SEND_RECEIVE' ),
639         ( ('CONS', 0x288), 'AC_SEND_TO' ),
640         ( ('CONS', 0x289), 'AC_REPLY' ),
641         ( ('CONS', 0x28A), 'AC_REPLY_ALL' ),
642         ( ('CONS', 0x28B), 'AC_FORWARD_MSG' ),
643         ( ('CONS', 0x28C), 'AC_SEND' ),
644         ( ('CONS', 0x28D), 'AC_ATTACH_FILE' ),
645         ( ('CONS', 0x28E), 'AC_UPLOAD' ),
646         ( ('CONS', 0x28F), 'AC_DOWNLOAD' ),
647         ( ('CONS', 0x290), 'AC_SET_BORDERS' ),
648         ( ('CONS', 0x291), 'AC_INSERT_ROW' ),
649         ( ('CONS', 0x292), 'AC_INSERT_COLUMN' ),
650         ( ('CONS', 0x293), 'AC_INSERT_FILE' ),
651         ( ('CONS', 0x294), 'AC_INSERT_PICTURE' ),
652         ( ('CONS', 0x295), 'AC_INSERT_OBJECT' ),
653         ( ('CONS', 0x296), 'AC_INSERT_SYMBOL' ),
654         ( ('CONS', 0x297), 'AC_SAVE_AND_CLOSE' ),
655         ( ('CONS', 0x298), 'AC_RENAME' ),
656         ( ('CONS', 0x299), 'AC_MERGE' ),
657         ( ('CONS', 0x29A), 'AC_SPLIT' ),
658         ( ('CONS', 0x29B), 'AC_DISTRIBUTE_HORIZONTALLY' ),
659         ( ('CONS', 0x29C), 'AC_DISTRIBUTE_VERTICALLY' ),
660 # 0x29D-0xFFFF Reserved
661
662         # USB HID LED Codes
663         ( ('LED', 0x00), 'LED_UNDEFINED' ),
664         ( ('LED', 0x01), 'LED_NUM_LOCK' ),
665         ( ('LED', 0x02), 'LED_CAPS_LOCK' ),
666         ( ('LED', 0x03), 'LED_SCROLL_LOCK' ),
667         ( ('LED', 0x04), 'LED_COMPOSE' ),
668         ( ('LED', 0x05), 'LED_KANA' ),
669         ( ('LED', 0x06), 'LED_POWER' ),
670         ( ('LED', 0x07), 'LED_SHIFT' ),
671         ( ('LED', 0x08), 'LED_DO_NOT_DISTURB' ),
672         ( ('LED', 0x09), 'LED_MUTE' ),
673         ( ('LED', 0x0A), 'LED_TONE_ENABLE' ),
674         ( ('LED', 0x0B), 'LED_HIGHCUT_FILTER' ),
675         ( ('LED', 0x0C), 'LED_LOWCUT_FILTER' ),
676         ( ('LED', 0x0D), 'LED_EQL_ENABLE' ),
677         ( ('LED', 0x0E), 'LED_SND_FLD_ON' ),
678         ( ('LED', 0x0F), 'LED_SURROUND_ON' ),
679         ( ('LED', 0x10), 'LED_REPEAT' ),
680         ( ('LED', 0x11), 'LED_STEREO' ),
681         ( ('LED', 0x12), 'LED_SAMPLE_RT_DET' ),
682         ( ('LED', 0x13), 'LED_SPINNING' ),
683         ( ('LED', 0x14), 'LED_CAV' ),
684         ( ('LED', 0x15), 'LED_CLV' ),
685         ( ('LED', 0x16), 'LED_REC_FMT_DET' ),
686         ( ('LED', 0x17), 'LED_OFF_HOOK' ),
687         ( ('LED', 0x18), 'LED_RING' ),
688         ( ('LED', 0x19), 'LED_MSG_WAITING' ),
689         ( ('LED', 0x1A), 'LED_DATA_MODE' ),
690         ( ('LED', 0x1B), 'LED_BAT_OPERATION' ),
691         ( ('LED', 0x1C), 'LED_BAT_OK' ),
692         ( ('LED', 0x1D), 'LED_BAT_LOW' ),
693         ( ('LED', 0x1E), 'LED_SPEAKER' ),
694         ( ('LED', 0x1F), 'LED_HEAD_SET' ),
695         ( ('LED', 0x20), 'LED_HOLD' ),
696         ( ('LED', 0x21), 'LED_MICROPHONE' ),
697         ( ('LED', 0x22), 'LED_COVERAGE' ),
698         ( ('LED', 0x23), 'LED_NIGHT_MODE' ),
699         ( ('LED', 0x24), 'LED_SEND_CALLS' ),
700         ( ('LED', 0x25), 'LED_CALL_PICKUP' ),
701         ( ('LED', 0x26), 'LED_CONFERENCE' ),
702         ( ('LED', 0x27), 'LED_STAND_BY' ),
703         ( ('LED', 0x28), 'LED_CAMERA_ON' ),
704         ( ('LED', 0x29), 'LED_CAMERA_OFF' ),
705         ( ('LED', 0x2A), 'LED_ON_LINE' ),
706         ( ('LED', 0x2B), 'LED_OFF_LINE' ),
707         ( ('LED', 0x2C), 'LED_BUSY' ),
708         ( ('LED', 0x2D), 'LED_READY' ),
709         ( ('LED', 0x2E), 'LED_PAPER_OUT' ),
710         ( ('LED', 0x2F), 'LED_PAPER_JAM' ),
711         ( ('LED', 0x30), 'LED_REMOTE' ),
712         ( ('LED', 0x31), 'LED_FORWARD' ),
713         ( ('LED', 0x32), 'LED_REVERSE' ),
714         ( ('LED', 0x33), 'LED_STOP' ),
715         ( ('LED', 0x34), 'LED_REWIND' ),
716         ( ('LED', 0x35), 'LED_FAST_FORWARD' ),
717         ( ('LED', 0x36), 'LED_PLAY' ),
718         ( ('LED', 0x37), 'LED_PAUSE' ),
719         ( ('LED', 0x38), 'LED_RECORD' ),
720         ( ('LED', 0x39), 'LED_ERROR' ),
721         ( ('LED', 0x3A), 'LED_USI' ),
722         ( ('LED', 0x3B), 'LED_UIUI' ),
723         ( ('LED', 0x3C), 'LED_UMMI' ),
724         ( ('LED', 0x3D), 'LED_IND_ON' ),
725         ( ('LED', 0x3E), 'LED_IND_FLASH' ),
726         ( ('LED', 0x3F), 'LED_IND_SLOW_BLNK' ),
727         ( ('LED', 0x40), 'LED_IND_FAST_BLNK' ),
728         ( ('LED', 0x41), 'LED_IND_OFF' ),
729         ( ('LED', 0x42), 'LED_FLASH_ON_TIME' ),
730         ( ('LED', 0x43), 'LED_SLW_B_ON_TIME' ),
731         ( ('LED', 0x44), 'LED_SLW_B_OFF_TIME' ),
732         ( ('LED', 0x45), 'LED_FST_B_ON_TIME' ),
733         ( ('LED', 0x46), 'LED_FST_B_OFF_TIME' ),
734         ( ('LED', 0x47), 'LED_UIC' ),
735         ( ('LED', 0x48), 'LED_IND_RED' ),
736         ( ('LED', 0x49), 'LED_IND_GREEN' ),
737         ( ('LED', 0x4A), 'LED_IND_AMBER' ),
738         ( ('LED', 0x4B), 'LED_GENERIC_IND' ),
739         ( ('LED', 0x4C), 'LED_SYS_SUSPEND' ),
740         ( ('LED', 0x4D), 'LED_EXT_PWR_CONN' ),
741 # 0x4E - 0xFFFF Reserved
742
743         # USB HID System Control Codes
744 # List of System Controls - USB HID 1.12v2 pg 32
745 # NKRO HID Supports 0x81 - 0xB7
746         ( ('SYS', 0x81), 'SYS_POWER_DOWN' ),
747         ( ('SYS', 0x82), 'SYS_SLEEP' ),
748         ( ('SYS', 0x83), 'SYS_WAKE_UP' ),
749         ( ('SYS', 0x84), 'SYS_CONTEXT_MENU' ),
750         ( ('SYS', 0x85), 'SYS_MAIN_MENU' ),
751         ( ('SYS', 0x86), 'SYS_APP_MENU' ),
752         ( ('SYS', 0x87), 'SYS_MENU_HELP' ),
753         ( ('SYS', 0x88), 'SYS_MENU_EXIT' ),
754         ( ('SYS', 0x89), 'SYS_MENU_SELECT' ),
755         ( ('SYS', 0x8A), 'SYS_MENU_RIGHT' ),
756         ( ('SYS', 0x8B), 'SYS_MENU_LEFT' ),
757         ( ('SYS', 0x8C), 'SYS_MENU_UP' ),
758         ( ('SYS', 0x8D), 'SYS_MENU_DOWN' ),
759         ( ('SYS', 0x8E), 'SYS_COLD_RESTART' ),
760         ( ('SYS', 0x8F), 'SYS_WARM_RESTART' ),
761         ( ('SYS', 0x90), 'SYS_DPAD_UP' ),
762         ( ('SYS', 0x91), 'SYS_DPAD_DOWN' ),
763         ( ('SYS', 0x92), 'SYS_DPAD_RIGHT' ),
764         ( ('SYS', 0x93), 'SYS_DPAD_LEFT' ),
765 # 0x94 - 0x9F Reserved
766         ( ('SYS', 0xA0), 'SYS_DOCK' ),
767         ( ('SYS', 0xA1), 'SYS_UNDOCK' ),
768         ( ('SYS', 0xA2), 'SYS_SETUP' ),
769         ( ('SYS', 0xA3), 'SYS_BREAK' ),
770         ( ('SYS', 0xA4), 'SYS_DEBUGGER_BREAK' ),
771         ( ('SYS', 0xA5), 'SYS_APP_BREAK' ),
772         ( ('SYS', 0xA6), 'SYS_APP_DEBUGGER_BREAK' ),
773         ( ('SYS', 0xA7), 'SYS_SPEAKER_MUTE' ),
774         ( ('SYS', 0xA8), 'SYS_HIBERNATE' ),
775 # 0xA9 - 0xAF Reserved
776         ( ('SYS', 0xB0), 'SYS_DISP_INVERT' ),
777         ( ('SYS', 0xB1), 'SYS_DISP_INTERNAL' ),
778         ( ('SYS', 0xB2), 'SYS_DISP_EXTERNAL' ),
779         ( ('SYS', 0xB3), 'SYS_DISP_BOTH' ),
780         ( ('SYS', 0xB4), 'SYS_DISP_DUAL' ),
781         ( ('SYS', 0xB5), 'SYS_DISP_TOGGLE_INT_EXT' ),
782         ( ('SYS', 0xB6), 'SYS_DISP_SWAP_PRI_SEC' ),
783         ( ('SYS', 0xB7), 'SYS_DISP_LCD_AUTOSCALE' ),
784 # 0xB8 - 0xFFFF Reserved
785 ])
786
787
788
789 # Lookup for KLL defined HID values, internally the compiler uses numbers to combine the keymaps
790 kll_hid_lookup_dictionary = dict()
791 kll_hid_lookup_dictionary['USBCode'] = dict([
792         # USB HID Keyboard Codes
793         ( 'A', ('USB', 0x04) ),
794         ( 'B', ('USB', 0x05) ),
795         ( 'C', ('USB', 0x06) ),
796         ( 'D', ('USB', 0x07) ),
797         ( 'E', ('USB', 0x08) ),
798         ( 'F', ('USB', 0x09) ),
799         ( 'G', ('USB', 0x0A) ),
800         ( 'H', ('USB', 0x0B) ),
801         ( 'I', ('USB', 0x0C) ),
802         ( 'J', ('USB', 0x0D) ),
803         ( 'K', ('USB', 0x0E) ),
804         ( 'L', ('USB', 0x0F) ),
805         ( 'M', ('USB', 0x10) ),
806         ( 'N', ('USB', 0x11) ),
807         ( 'O', ('USB', 0x12) ),
808         ( 'P', ('USB', 0x13) ),
809         ( 'Q', ('USB', 0x14) ),
810         ( 'R', ('USB', 0x15) ),
811         ( 'S', ('USB', 0x16) ),
812         ( 'T', ('USB', 0x17) ),
813         ( 'U', ('USB', 0x18) ),
814         ( 'V', ('USB', 0x19) ),
815         ( 'W', ('USB', 0x1A) ),
816         ( 'X', ('USB', 0x1B) ),
817         ( 'Y', ('USB', 0x1C) ),
818         ( 'Z', ('USB', 0x1D) ),
819         ( '1', ('USB', 0x1E) ),
820         ( '2', ('USB', 0x1F) ),
821         ( '3', ('USB', 0x20) ),
822         ( '4', ('USB', 0x21) ),
823         ( '5', ('USB', 0x22) ),
824         ( '6', ('USB', 0x23) ),
825         ( '7', ('USB', 0x24) ),
826         ( '8', ('USB', 0x25) ),
827         ( '9', ('USB', 0x26) ),
828         ( '0', ('USB', 0x27) ),
829         ( 'ENTER', ('USB', 0x28) ),
830         ( 'ESC', ('USB', 0x29) ), ( 'ESCAPE', ('USB', 0x29) ),
831         ( 'BACKSPACE', ('USB', 0x2A) ),
832         ( 'TAB', ('USB', 0x2B) ),
833         ( 'SPACE', ('USB', 0x2C) ), ( 'SPACEBAR', ('USB', 0x2C) ),
834         ( '-', ('USB', 0x2D) ), ( 'MINUS', ('USB', 0x2D) ),
835         ( '=', ('USB', 0x2E) ), ( 'EQUALS', ('USB', 0x2E) ), ( 'EQUAL', ('USB', 0x2E) ),
836         ( '{', ('USB', 0x2F) ), ( 'LEFT BRACE', ('USB', 0x2F) ), ( 'LBRACE', ('USB', 0x2F) ),
837         ( '}', ('USB', 0x30) ), ( 'RIGHT BRACE', ('USB', 0x30) ), ( 'RBRACE', ('USB', 0x30) ),
838         ( '\\', ('USB', 0x31) ), ( 'BACKSLASH', ('USB', 0x31) ),
839         ( '#', ('USB', 0x32) ), ( 'NUMBER', ('USB', 0x32) ), ( 'HASH', ('USB', 0x32) ),
840         ( ';', ('USB', 0x33) ), ( 'SEMICOLON', ('USB', 0x33) ),
841         ( "'", ('USB', 0x34) ), ( 'QUOTE', ('USB', 0x34) ), ( 'SINGLE QUOTE', ('USB', 0x34) ),
842         ( '`', ('USB', 0x35) ), ( 'BACKTICK', ('USB', 0x35) ),
843         ( ',', ('USB', 0x36) ), ( 'COMMA', ('USB', 0x36) ),
844         ( '.', ('USB', 0x37) ), ( 'PERIOD', ('USB', 0x37) ),
845         ( '/', ('USB', 0x38) ), ( 'SLASH', ('USB', 0x38) ),
846         ( 'CAPSLOCK', ('USB', 0x39) ), { 'CAPS LOCK', ('USB', 0x39) },
847         ( 'F1', ('USB', 0x3A) ),
848         ( 'F2', ('USB', 0x3B) ),
849         ( 'F3', ('USB', 0x3C) ),
850         ( 'F4', ('USB', 0x3D) ),
851         ( 'F5', ('USB', 0x3E) ),
852         ( 'F6', ('USB', 0x3F) ),
853         ( 'F7', ('USB', 0x40) ),
854         ( 'F8', ('USB', 0x41) ),
855         ( 'F9', ('USB', 0x42) ),
856         ( 'F10', ('USB', 0x43) ),
857         ( 'F11', ('USB', 0x44) ),
858         ( 'F12', ('USB', 0x45) ),
859         ( 'PRINTSCREEN', ('USB', 0x46) ), ( 'PRINT SCREEN', ('USB', 0x46) ),
860         ( 'SCROLLLOCK', ('USB', 0x47) ), ( 'SCROLL LOCK', ('USB', 0x47) ),
861         ( 'PAUSE', ('USB', 0x48) ),
862         ( 'INSERT', ('USB', 0x49) ),
863         ( 'HOME', ('USB', 0x4A) ),
864         ( 'PAGEUP', ('USB', 0x4B) ), ( 'PAGE UP', ('USB', 0x4B) ),
865         ( 'DELETE', ('USB', 0x4C) ),
866         ( 'END', ('USB', 0x4D) ),
867         ( 'PAGEDOWN', ('USB', 0x4E) ), ( 'PAGE DOWN', ('USB', 0x4E) ),
868         ( 'RIGHT', ('USB', 0x4F) ),
869         ( 'LEFT', ('USB', 0x50) ),
870         ( 'DOWN', ('USB', 0x51) ),
871         ( 'UP', ('USB', 0x52) ),
872         ( 'NUMLOCK', ('USB', 0x53) ), ( 'NUM LOCK', ('USB', 0x53) ),
873         ( 'P/', ('USB', 0x54) ), ( 'KEYPAD SLASH', ('USB', 0x54) ),
874         ( 'P*', ('USB', 0x55) ), ( 'KEYPAD ASTERIX', ('USB', 0x55) ), ( 'KEYPAD ASTERISK', ('USB', 0x55) ),
875         ( 'P-', ('USB', 0x56) ), ( 'KEYPAD MINUS', ('USB', 0x56) ),
876         ( 'P+', ('USB', 0x57) ), ( 'KEYPAD PLUS', ('USB', 0x57) ),
877         ( 'PENTER', ('USB', 0x58) ), ( 'KEYPAD ENTER', ('USB', 0x58) ),
878         ( 'P1', ('USB', 0x59) ), ( 'KEYPAD 1', ('USB', 0x59) ),
879         ( 'P2', ('USB', 0x5A) ), ( 'KEYPAD 2', ('USB', 0x5A) ),
880         ( 'P3', ('USB', 0x5B) ), ( 'KEYPAD 3', ('USB', 0x5B) ),
881         ( 'P4', ('USB', 0x5C) ), ( 'KEYPAD 4', ('USB', 0x5C) ),
882         ( 'P5', ('USB', 0x5D) ), ( 'KEYPAD 5', ('USB', 0x5D) ),
883         ( 'P6', ('USB', 0x5E) ), ( 'KEYPAD 6', ('USB', 0x5E) ),
884         ( 'P7', ('USB', 0x5F) ), ( 'KEYPAD 7', ('USB', 0x5F) ),
885         ( 'P8', ('USB', 0x60) ), ( 'KEYPAD 8', ('USB', 0x60) ),
886         ( 'P9', ('USB', 0x61) ), ( 'KEYPAD 9', ('USB', 0x61) ),
887         ( 'P0', ('USB', 0x62) ), ( 'KEYPAD 0', ('USB', 0x62) ),
888         ( 'P.', ('USB', 0x63) ), ( 'KEYPAD PERIOD', ('USB', 0x63) ),
889         ( 'ISO/', ('USB', 0x64) ), ( 'ISO SLASH', ('USB', 0x64) ),
890         ( 'APP', ('USB', 0x65) ),
891
892         ( 'P=', ('USB', 0x67) ), ( 'KEYPAD EQUAL', ('USB', 0x67) ),
893         ( 'F13', ('USB', 0x68) ),
894         ( 'F14', ('USB', 0x69) ),
895         ( 'F15', ('USB', 0x6A) ),
896         ( 'F16', ('USB', 0x6B) ),
897         ( 'F17', ('USB', 0x6C) ),
898         ( 'F18', ('USB', 0x6D) ),
899         ( 'F19', ('USB', 0x6E) ),
900         ( 'F20', ('USB', 0x6F) ),
901         ( 'F21', ('USB', 0x70) ),
902         ( 'F22', ('USB', 0x71) ),
903         ( 'F23', ('USB', 0x72) ),
904         ( 'F24', ('USB', 0x73) ),
905         ( 'EXEC', ('USB', 0x74) ),
906         ( 'HELP', ('USB', 0x75) ),
907         ( 'MENU', ('USB', 0x76) ),
908         ( 'SELECT', ('USB', 0x77) ),
909         ( 'STOP', ('USB', 0x78) ),
910         ( 'AGAIN', ('USB', 0x79) ),
911         ( 'UNDO', ('USB', 0x7A) ),
912         ( 'CUT', ('USB', 0x7B) ),
913         ( 'COPY', ('USB', 0x7C) ),
914         ( 'PASTE', ('USB', 0x7D) ),
915         ( 'FIND', ('USB', 0x7E) ),
916         ( 'MUTE', ('USB', 0x7F) ),
917         ( 'VOLUMEUP', ('USB', 0x80) ), ( 'VOLUME UP', ('USB', 0x80) ),
918         ( 'VOLUMEDOWN', ('USB', 0x81) ), ( 'VOLUME DOWN', ('USB', 0x81) ),
919         ( 'CAPSTOGGLELOCK', ('USB', 0x82) ), ( 'CAPS TOGGLE LOCK', ('USB', 0x82) ),
920         ( 'NUMTOGGLELOCK', ('USB', 0x83) ), ( 'NUM TOGGLE LOCK', ('USB', 0x83) ),
921         ( 'SCROLLTOGGLELOCK', ('USB', 0x84) ), ( 'SCROLL TOGGLE LOCK', ('USB', 0x84) ),
922         ( 'P,', ('USB', 0x85) ),
923         ( 'KEYPAD AS400 EQUAL', ('USB', 0x86) ),
924         ( 'INTER1', ('USB', 0x87) ), ( 'KANJI1', ('USB', 0x87) ),
925         ( 'INTER2', ('USB', 0x88) ), ( 'KANJI2', ('USB', 0x88) ), ( 'KANA', ('USB', 0x88) ),
926         ( 'INTER3', ('USB', 0x89) ), ( 'KANJI3', ('USB', 0x89) ), ( 'YEN', ('USB', 0x89) ),
927         ( 'INTER4', ('USB', 0x8A) ), ( 'KANJI4', ('USB', 0x8A) ), ( 'HENKAN', ('USB', 0x8A) ),
928         ( 'INTER5', ('USB', 0x8B) ), ( 'KANJI5', ('USB', 0x8B) ), ( 'MUHENKAN', ('USB', 0x8B) ),
929         ( 'INTER6', ('USB', 0x8C) ), ( 'KANJI6', ('USB', 0x8C) ),
930         ( 'INTER7', ('USB', 0x8D) ), ( 'KANJI7', ('USB', 0x8D) ), ( 'BYTETOGGLE', ('USB', 0x8D) ), ( 'BYTE TOGGLE', ('USB', 0x8D) ),
931         ( 'INTER8', ('USB', 0x8E) ), ( 'KANJI8', ('USB', 0x8E) ),
932         ( 'INTER9', ('USB', 0x8F) ), ( 'KANJI9', ('USB', 0x8F) ),
933         ( 'LANG1', ('USB', 0x90) ), ( 'HANGULENGLISH', ('USB', 0x90) ), ( 'HANGUL ENGLISH', ('USB', 0x90) ),
934         ( 'LANG2', ('USB', 0x91) ), ( 'HANJA', ('USB', 0x91) ), ( 'EISU', ('USB', 0x91) ),
935         ( 'LANG3', ('USB', 0x92) ), ( 'KATAKANA', ('USB', 0x92) ),
936         ( 'LANG4', ('USB', 0x93) ), ( 'HIRAGANA', ('USB', 0x93) ),
937         ( 'LANG5', ('USB', 0x94) ), ( 'ZENKAKUHANKAKU', ('USB', 0x94) ), ( 'ZENKAKU HANKAKU', ('USB', 0x94) ),
938         ( 'LANG6', ('USB', 0x95) ),
939         ( 'LANG7', ('USB', 0x96) ),
940         ( 'LANG8', ('USB', 0x97) ),
941         ( 'LANG9', ('USB', 0x98) ),
942         ( 'ALTERASE', ('USB', 0x99) ), ( 'ALT ERASE', ('USB', 0x99) ),
943         ( 'SYSREQATT', ('USB', 0x9A) ), ( 'SYSREQ', ('USB', 0x9A) ), ( 'SYSTEM REQUEST', ('USB', 0x9A) ),
944         ( 'CANCEL', ('USB', 0x9B) ),
945         ( 'CLEAR', ('USB', 0x9C) ),
946         ( 'PRIOR', ('USB', 0x9D) ),
947         ( 'RETURN', ('USB', 0x9E) ),
948         ( 'SEP', ('USB', 0x9F) ), ( 'SEPARATOR', ('USB', 0x9F) ),
949         ( 'OUT', ('USB', 0xA0) ),
950         ( 'OPER', ('USB', 0xA1) ),
951         ( 'CLEAR AGAIN', ('USB', 0xA2) ),
952         ( 'CRSEL PROPS', ('USB', 0xA3) ),
953         ( 'EXSEL', ('USB', 0xA4) ),
954
955         ( 'P00', ('USB', 0xB0) ), ( 'KEYPAD 00', ('USB', 0xB0) ),
956         ( 'P000', ('USB', 0xB1) ), ( 'KEYPAD 000', ('USB', 0xB1) ),
957         ( '1000SEP', ('USB', 0xB2) ), ( 'THOUSANDSEPARATOR', ('USB', 0xB2) ), ( 'THOUSAND SEPARATOR', ('USB', 0xB2) ),
958         ( 'DECIMALSEP', ('USB', 0xB3) ), ( 'DECIMALSEPARATOR', ('USB', 0xB3) ), ( 'DECIMAL SEPARATOR', ('USB', 0xB3) ),
959         ( 'CURRENCY', ('USB', 0xB4) ), ( 'CURRENCYUNIT', ('USB', 0xB4) ), ( 'CURRENCY UNIT', ('USB', 0xB4) ),
960         ( 'CURRENCYSUB', ('USB', 0xB5) ), ( 'CURRENCYSUBUNIT', ('USB', 0xB5) ), ( 'CURRENCY SUB UNIT', ('USB', 0xB5) ),
961         ( 'P(', ('USB', 0xB6) ), ( 'KEYPAD LEFT PARENTHESES', ('USB', 0xB6) ),
962         ( 'P)', ('USB', 0xB7) ), ( 'KEYPAD RIGHT PARENTHESES', ('USB', 0xB7) ),
963         ( 'P{', ('USB', 0xB8) ), ( 'KEYPAD LEFT BRACE', ('USB', 0xB8) ),
964         ( 'P}', ('USB', 0xB9) ), ( 'KEYPAD RIGHT BRACE', ('USB', 0xB9) ),
965         ( 'PTAB', ('USB', 0xBA) ), ( 'KEYPAD TAB', ('USB', 0xBA) ),
966         ( 'PBACKSPACE', ('USB', 0xBB) ), ( 'KEYPAD BACKSPACE', ('USB', 0xBB) ),
967         ( 'PA', ('USB', 0xBC) ), ( 'KEYPAD A', ('USB', 0xBC) ),
968         ( 'PB', ('USB', 0xBD) ), ( 'KEYPAD B', ('USB', 0xBD) ),
969         ( 'PC', ('USB', 0xBE) ), ( 'KEYPAD C', ('USB', 0xBE) ),
970         ( 'PD', ('USB', 0xBF) ), ( 'KEYPAD D', ('USB', 0xBF) ),
971         ( 'PE', ('USB', 0xC0) ), ( 'KEYPAD E', ('USB', 0xC0) ),
972         ( 'PF', ('USB', 0xC1) ), ( 'KEYPAD F', ('USB', 0xC1) ),
973         ( 'PXOR', ('USB', 0xC2) ), ( 'KEYPAD XOR', ('USB', 0xC2) ),
974         ( 'P^', ('USB', 0xC3) ), ( 'KEYPAD CHEVRON', ('USB', 0xC3) ),
975         ( 'P%', ('USB', 0xC4) ), ( 'KEYPAD PERCENT', ('USB', 0xC4) ),
976         ( 'P<', ('USB', 0xC5) ), ( 'KEYPAD LESSTHAN', ('USB', 0xC5) ), ( 'KEYPAD LESS THAN', ('USB', 0xC5) ),
977         ( 'P>', ('USB', 0xC6) ), ( 'KEYPAD GREATERTHAN', ('USB', 0xC6) ), ( 'KEYPAD GREATER THAN', ('USB', 0xC6) ),
978         ( 'P&', ('USB', 0xC7) ), ( 'KEYPAD BITAND', ('USB', 0xC7) ), ( 'KEYPAD BIT AND', ('USB', 0xC7) ),
979         ( 'P&&', ('USB', 0xC8) ), ( 'KEYPAD AND', ('USB', 0xC8) ),
980         ( 'P|', ('USB', 0xC9) ), ( 'KEYPAD BITOR', ('USB', 0xC9) ), ( 'KEYPAD BIT OR', ('USB', 0xC9) ),
981         ( 'P||', ('USB', 0xCA) ), ( 'KEYPAD OR', ('USB', 0xCA) ),
982         ( 'P:', ('USB', 0xCB) ), ( 'KEYPAD COLON', ('USB', 0xCB) ),
983         ( 'P#', ('USB', 0xCC) ), ( 'KEYPAD NUMBER', ('USB', 0xCC) ), ( 'KEYPAD HASH', ('USB', 0xCC) ),
984         ( 'PSPACE', ('USB', 0xCD) ), ( 'KEYPAD SPACE', ('USB', 0xCD) ),
985         ( 'P@', ('USB', 0xCE) ), ( 'KEYPAD AT', ('USB', 0xCE) ),
986         ( 'P!', ('USB', 0xCF) ), ( 'KEYPAD EXCLAIM', ('USB', 0xCF) ),
987         ( 'PMEMSTORE', ('USB', 0xD0) ), ( 'KEYPAD MEMSTORE', ('USB', 0xD0) ), ( 'KEYPAD MEMORY STORE', ('USB', 0xD0) ),
988         ( 'PMEMRECALL', ('USB', 0xD1) ), ( 'KEYPAD MEMRECALL', ('USB', 0xD1) ), ( 'KEYPAD MEMORY RECALL', ('USB', 0xD1) ),
989         ( 'PMEMCLEAR', ('USB', 0xD2) ), ( 'KEYPAD MEMCLEAR', ('USB', 0xD2) ), ( 'KEYPAD MEMORY CLEAR', ('USB', 0xD2) ),
990         ( 'PMEMADD', ('USB', 0xD3) ), ( 'KEYPAD MEMADD', ('USB', 0xD3) ), ( 'KEYPAD MEMORY ADD', ('USB', 0xD3) ),
991         ( 'PMEMSUB', ('USB', 0xD4) ), ( 'KEYPAD MEMSUB', ('USB', 0xD4) ), ( 'KEYPAD MEMORY SUB', ('USB', 0xD4) ),
992         ( 'PMEMMULT', ('USB', 0xD5) ), ( 'KEYPAD MEMMULT', ('USB', 0xD5) ), ( 'KEYPAD MEMORY MULTIPLY', ('USB', 0xD5) ),
993         ( 'PMEMDIV', ('USB', 0xD6) ), ( 'KEYPAD MEMDIV', ('USB', 0xD6) ), ( 'KEYPAD MEMORY DIVIDE', ('USB', 0xD6) ),
994         ( 'P+/-', ('USB', 0xD7) ), ( 'KEYPAD PLUSMINUS', ('USB', 0xD7) ), ( 'KEYPAD PLUS MINUS', ('USB', 0xD7) ),
995         ( 'PCLEAR', ('USB', 0xD8) ), ( 'KEYPAD CLEAR', ('USB', 0xD8) ),
996         ( 'PCLEARENTRY', ('USB', 0xD9) ), ( 'KEYPAD CLEARENTRY', ('USB', 0xD9) ), ( 'KEYPAD CLEAR ENTRY', ('USB', 0xD9) ),
997         ( 'PBINARY', ('USB', 0xDA) ), ( 'KEYPAD BINARY', ('USB', 0xDA) ),
998         ( 'POCTAL', ('USB', 0xDB) ), ( 'KEYPAD OCTAL', ('USB', 0xDB) ),
999         ( 'PDECIMAL', ('USB', 0xDC) ), ( 'KEYPAD DECIMAL', ('USB', 0xDC) ),
1000         ( 'PHEX', ('USB', 0xDD) ), ( 'KEYPAD HEX', ('USB', 0xDD) ),
1001
1002         ( 'LCTRL', ('USB', 0xE0) ), ( 'LEFT CTRL', ('USB', 0xE0) ), ( 'CTRL', ('USB', 0xE0) ), ( 'CONTROL', ('USB', 0xE0) ), ( 'LEFT CONTROL', ('USB', 0xE0) ),
1003         ( 'LSHIFT', ('USB', 0xE1) ), ( 'LEFT SHIFT', ('USB', 0xE1) ), ( 'SHIFT', ('USB', 0xE1) ),
1004         ( 'LALT', ('USB', 0xE2) ), ( 'LEFT ALT', ('USB', 0xE2) ), ( 'ALT', ('USB', 0xE2) ), ( 'ALTERNATE', ('USB', 0xE2) ), ( 'LEFT ALTERNATE', ('USB', 0xE2) ),
1005         ( 'LGUI', ('USB', 0xE3) ), ( 'LEFT GUI', ('USB', 0xE3) ), ( 'GUI', ('USB', 0xE3) ), ( 'SUPER', ('USB', 0xE3) ), ( 'LEFT SUPER', ('USB', 0xE3) ), ( 'WINDOWS', ('USB', 0xE3) ), ( 'LEFT WINDOWS', ('USB', 0xE3) ), ( 'WIN', ('USB', 0xE3) ), ( 'LEFT WIN', ('USB', 0xE3) ),
1006         ( 'RCTRL', ('USB', 0xE4) ), ( 'RIGHT CTRL', ('USB', 0xE4) ), ( 'RIGHT CONTROL', ('USB', 0xE4) ),
1007         ( 'RSHIFT', ('USB', 0xE5) ), ( 'RIGHT SHIFT', ('USB', 0xE5) ),
1008         ( 'RALT', ('USB', 0xE6) ), ( 'RIGHT ALT', ('USB', 0xE6) ), ( 'RIGHT ALTERNATE', ('USB', 0xE6) ),
1009         ( 'RGUI', ('USB', 0xE7) ), ( 'RIGHT GUI', ('USB', 0xE7) ), ( 'RIGHT SUPER', ('USB', 0xE7) ), ( 'RIGHT WINDOWS', ('USB', 0xE7) ), ( 'RIGHT WIN', ('USB', 0xE7) ),
1010
1011 # Special Function Shift/Lock/Latch symbolic names (not part of the USB HID spec)
1012         ( 'FUN1', ('USB', 0xF0) ), ( 'FUNCTION1', ('USB', 0xF0) ), ( 'FUN', ('USB', 0xF0) ),
1013         ( 'FUN2', ('USB', 0xF1) ), ( 'FUNCTION2', ('USB', 0xF1) ),
1014         ( 'FUN3', ('USB', 0xF2) ), ( 'FUNCTION3', ('USB', 0xF2) ),
1015         ( 'FUN4', ('USB', 0xF3) ), ( 'FUNCTION4', ('USB', 0xF3) ),
1016         ( 'FUN5', ('USB', 0xF4) ), ( 'FUNCTION5', ('USB', 0xF4) ),
1017         ( 'FUN6', ('USB', 0xF5) ), ( 'FUNCTION6', ('USB', 0xF5) ),
1018         ( 'FUN7', ('USB', 0xF6) ), ( 'FUNCTION7', ('USB', 0xF6) ),
1019         ( 'FUN8', ('USB', 0xF7) ), ( 'FUNCTION8', ('USB', 0xF7) ),
1020         ( 'FUN9', ('USB', 0xF8) ), ( 'FUNCTION9', ('USB', 0xF8) ),
1021         ( 'FUN10', ('USB', 0xF9) ), ( 'FUNCTION10', ('USB', 0xF9) ),
1022         ( 'FUN11', ('USB', 0xFA) ), ( 'FUNCTION11', ('USB', 0xFA) ),
1023         ( 'FUN12', ('USB', 0xFB) ), ( 'FUNCTION12', ('USB', 0xFB) ),
1024         ( 'FUN13', ('USB', 0xFC) ), ( 'FUNCTION13', ('USB', 0xFC) ),
1025         ( 'FUN14', ('USB', 0xFD) ), ( 'FUNCTION14', ('USB', 0xFD) ),
1026         ( 'FUN15', ('USB', 0xFE) ), ( 'FUNCTION15', ('USB', 0xFE) ),
1027         ( 'FUN16', ('USB', 0xFF) ), ( 'FUNCTION16', ('USB', 0xFF) ),
1028         ( 'LCK1', ('USB', 0x100) ), ( 'LOCK1', ('USB', 0x100) ), ( 'LCK', ('USB', 0x100) ),
1029         ( 'LCK2', ('USB', 0x101) ), ( 'LOCK2', ('USB', 0x101) ),
1030         ( 'LCK3', ('USB', 0x102) ), ( 'LOCK3', ('USB', 0x102) ),
1031         ( 'LCK4', ('USB', 0x103) ), ( 'LOCK4', ('USB', 0x103) ),
1032         ( 'LCK5', ('USB', 0x104) ), ( 'LOCK5', ('USB', 0x104) ),
1033         ( 'LCK6', ('USB', 0x105) ), ( 'LOCK6', ('USB', 0x105) ),
1034         ( 'LCK7', ('USB', 0x106) ), ( 'LOCK7', ('USB', 0x106) ),
1035         ( 'LCK8', ('USB', 0x107) ), ( 'LOCK8', ('USB', 0x107) ),
1036         ( 'LCK9', ('USB', 0x108) ), ( 'LOCK9', ('USB', 0x108) ),
1037         ( 'LCK10', ('USB', 0x109) ), ( 'LOCK10', ('USB', 0x109) ),
1038         ( 'LCK11', ('USB', 0x10A) ), ( 'LOCK11', ('USB', 0x10A) ),
1039         ( 'LCK12', ('USB', 0x10B) ), ( 'LOCK12', ('USB', 0x10B) ),
1040         ( 'LCK13', ('USB', 0x10C) ), ( 'LOCK13', ('USB', 0x10C) ),
1041         ( 'LCK14', ('USB', 0x10D) ), ( 'LOCK14', ('USB', 0x10D) ),
1042         ( 'LCK15', ('USB', 0x10E) ), ( 'LOCK15', ('USB', 0x10E) ),
1043         ( 'LCK16', ('USB', 0x10F) ), ( 'LOCK16', ('USB', 0x10F) ),
1044         ( 'LAT1', ('USB', 0x110) ), ( 'LATCH1', ('USB', 0x110) ), ( 'LAT', ('USB', 0x110) ),
1045         ( 'LAT2', ('USB', 0x111) ), ( 'LATCH2', ('USB', 0x111) ),
1046         ( 'LAT3', ('USB', 0x112) ), ( 'LATCH3', ('USB', 0x112) ),
1047         ( 'LAT4', ('USB', 0x113) ), ( 'LATCH4', ('USB', 0x113) ),
1048         ( 'LAT5', ('USB', 0x114) ), ( 'LATCH5', ('USB', 0x114) ),
1049         ( 'LAT6', ('USB', 0x115) ), ( 'LATCH6', ('USB', 0x115) ),
1050         ( 'LAT7', ('USB', 0x116) ), ( 'LATCH7', ('USB', 0x116) ),
1051         ( 'LAT8', ('USB', 0x117) ), ( 'LATCH8', ('USB', 0x117) ),
1052         ( 'LAT9', ('USB', 0x118) ), ( 'LATCH9', ('USB', 0x118) ),
1053         ( 'LAT10', ('USB', 0x119) ), ( 'LATCH10', ('USB', 0x119) ),
1054         ( 'LAT11', ('USB', 0x11A) ), ( 'LATCH11', ('USB', 0x11A) ),
1055         ( 'LAT12', ('USB', 0x11B) ), ( 'LATCH12', ('USB', 0x11B) ),
1056         ( 'LAT13', ('USB', 0x11C) ), ( 'LATCH13', ('USB', 0x11C) ),
1057         ( 'LAT14', ('USB', 0x11D) ), ( 'LATCH14', ('USB', 0x11D) ),
1058         ( 'LAT15', ('USB', 0x11E) ), ( 'LATCH15', ('USB', 0x11E) ),
1059         ( 'LAT16', ('USB', 0x11F) ), ( 'LATCH16', ('USB', 0x11F) ),
1060 ])
1061
1062
1063         # USB HID LED Codes
1064 kll_hid_lookup_dictionary['LEDCode'] = dict([
1065         ( 'UNDEFINED', ('LED', 0x00) ),
1066         ( 'NUMLOCK', ('LED', 0x01) ),
1067         ( 'CAPSLOCK', ('LED', 0x02) ),
1068         ( 'SCROLLLOCK', ('LED', 0x03) ),
1069         ( 'COMPOSE', ('LED', 0x04) ),
1070         ( 'KANA', ('LED', 0x05) ),
1071         ( 'POWER', ('LED', 0x06) ),
1072         ( 'SHIFT', ('LED', 0x07) ),
1073         ( 'DONOT_DISTURB', ('LED', 0x08) ),
1074         ( 'MUTE', ('LED', 0x09) ),
1075         ( 'TONEENABLE', ('LED', 0x0A) ),
1076         ( 'HIGHCUTFILTER', ('LED', 0x0B) ),
1077         ( 'LOWCUTFILTER', ('LED', 0x0C) ),
1078         ( 'EQLENABLE', ('LED', 0x0D) ),
1079         ( 'SNDFLD_ON', ('LED', 0x0E) ),
1080         ( 'SURROUNDON', ('LED', 0x0F) ),
1081         ( 'REPEAT', ('LED', 0x10) ),
1082         ( 'STEREO', ('LED', 0x11) ),
1083         ( 'SAMPLERT_DET', ('LED', 0x12) ),
1084         ( 'SPINNING', ('LED', 0x13) ),
1085         ( 'CAV', ('LED', 0x14) ),
1086         ( 'CLV', ('LED', 0x15) ),
1087         ( 'RECFMT_DET', ('LED', 0x16) ),
1088         ( 'OFFHOOK', ('LED', 0x17) ),
1089         ( 'RING', ('LED', 0x18) ),
1090         ( 'MSGWAITING', ('LED', 0x19) ),
1091         ( 'DATAMODE', ('LED', 0x1A) ),
1092         ( 'BATOPERATION', ('LED', 0x1B) ),
1093         ( 'BATOK', ('LED', 0x1C) ),
1094         ( 'BATLOW', ('LED', 0x1D) ),
1095         ( 'SPEAKER', ('LED', 0x1E) ),
1096         ( 'HEADSET', ('LED', 0x1F) ),
1097         ( 'HOLD', ('LED', 0x20) ),
1098         ( 'MICROPHONE', ('LED', 0x21) ),
1099         ( 'COVERAGE', ('LED', 0x22) ),
1100         ( 'NIGHTMODE', ('LED', 0x23) ),
1101         ( 'SENDCALLS', ('LED', 0x24) ),
1102         ( 'CALLPICKUP', ('LED', 0x25) ),
1103         ( 'CONFERENCE', ('LED', 0x26) ),
1104         ( 'STANDBY', ('LED', 0x27) ),
1105         ( 'CAMERAON', ('LED', 0x28) ),
1106         ( 'CAMERAOFF', ('LED', 0x29) ),
1107         ( 'ONLINE', ('LED', 0x2A) ),
1108         ( 'OFFLINE', ('LED', 0x2B) ),
1109         ( 'BUSY', ('LED', 0x2C) ),
1110         ( 'READY', ('LED', 0x2D) ),
1111         ( 'PAPEROUT', ('LED', 0x2E) ),
1112         ( 'PAPERJAM', ('LED', 0x2F) ),
1113         ( 'REMOTE', ('LED', 0x30) ),
1114         ( 'FORWARD', ('LED', 0x31) ),
1115         ( 'REVERSE', ('LED', 0x32) ),
1116         ( 'STOP', ('LED', 0x33) ),
1117         ( 'REWIND', ('LED', 0x34) ),
1118         ( 'FASTFORWARD', ('LED', 0x35) ),
1119         ( 'PLAY', ('LED', 0x36) ),
1120         ( 'PAUSE', ('LED', 0x37) ),
1121         ( 'RECORD', ('LED', 0x38) ),
1122         ( 'ERROR', ('LED', 0x39) ),
1123         ( 'USI', ('LED', 0x3A) ),
1124         ( 'UIUI', ('LED', 0x3B) ),
1125         ( 'UMMI', ('LED', 0x3C) ),
1126         ( 'INDON', ('LED', 0x3D) ),
1127         ( 'INDFLASH', ('LED', 0x3E) ),
1128         ( 'INDSLOW_BLNK', ('LED', 0x3F) ),
1129         ( 'INDFAST_BLNK', ('LED', 0x40) ),
1130         ( 'INDOFF', ('LED', 0x41) ),
1131         ( 'FLASHON_TIME', ('LED', 0x42) ),
1132         ( 'SLWB_ON_TIME', ('LED', 0x43) ),
1133         ( 'SLWB_OFF_TIME', ('LED', 0x44) ),
1134         ( 'FSTB_ON_TIME', ('LED', 0x45) ),
1135         ( 'FSTB_OFF_TIME', ('LED', 0x46) ),
1136         ( 'UIC', ('LED', 0x47) ),
1137         ( 'INDRED', ('LED', 0x48) ),
1138         ( 'INDGREEN', ('LED', 0x49) ),
1139         ( 'INDAMBER', ('LED', 0x4A) ),
1140         ( 'GENERICIND', ('LED', 0x4B) ),
1141         ( 'SYSSUSPEND', ('LED', 0x4C) ),
1142         ( 'EXTPWR_CONN', ('LED', 0x4D) ),
1143 # 0x4E - 0xFFFF Reserved
1144 ])
1145
1146
1147 # List of System Controls - USB HID 1.12v2 pg 32
1148 # NKRO HID Supports 0x81 - 0xB7
1149 kll_hid_lookup_dictionary['SysCode'] = dict([
1150         ( 'POWERDOWN', ('SYS', 0x81) ),
1151         ( 'SLEEP', ('SYS', 0x82) ),
1152         ( 'WAKEUP', ('SYS', 0x83) ),
1153         ( 'CONTEXTMENU', ('SYS', 0x84) ),
1154         ( 'MAINMENU', ('SYS', 0x85) ),
1155         ( 'APPMENU', ('SYS', 0x86) ),
1156         ( 'MENUHELP', ('SYS', 0x87) ),
1157         ( 'MENUEXIT', ('SYS', 0x88) ),
1158         ( 'MENUSELECT', ('SYS', 0x89) ),
1159         ( 'MENURIGHT', ('SYS', 0x8A) ),
1160         ( 'MENULEFT', ('SYS', 0x8B) ),
1161         ( 'MENUUP', ('SYS', 0x8C) ),
1162         ( 'MENUDOWN', ('SYS', 0x8D) ),
1163         ( 'COLDRESTART', ('SYS', 0x8E) ),
1164         ( 'WARMRESTART', ('SYS', 0x8F) ),
1165         ( 'DPADUP', ('SYS', 0x90) ),
1166         ( 'DPADDOWN', ('SYS', 0x91) ),
1167         ( 'DPADRIGHT', ('SYS', 0x92) ),
1168         ( 'DPADLEFT', ('SYS', 0x93) ),
1169 # 0x94 - 0x9F Reserved
1170         ( 'DOCK', ('SYS', 0xA0) ),
1171         ( 'UNDOCK', ('SYS', 0xA1) ),
1172         ( 'SETUP', ('SYS', 0xA2) ),
1173         ( 'BREAK', ('SYS', 0xA3) ),
1174         ( 'DEBUGGERBREAK', ('SYS', 0xA4) ),
1175         ( 'APPBREAK', ('SYS', 0xA5) ),
1176         ( 'APPDEBUGGER_BREAK', ('SYS', 0xA6) ),
1177         ( 'SPEAKERMUTE', ('SYS', 0xA7) ),
1178         ( 'HIBERNATE', ('SYS', 0xA8) ),
1179 # 0xA9 - 0xAF Reserved
1180         ( 'DISPINVERT', ('SYS', 0xB0) ),
1181         ( 'DISPINTERNAL', ('SYS', 0xB1) ),
1182         ( 'DISPEXTERNAL', ('SYS', 0xB2) ),
1183         ( 'DISPBOTH', ('SYS', 0xB3) ),
1184         ( 'DISPDUAL', ('SYS', 0xB4) ),
1185         ( 'DISPTOGGLE_INT_EXT', ('SYS', 0xB5) ),
1186         ( 'DISPSWAP_PRI_SEC', ('SYS', 0xB6) ),
1187         ( 'DISPLCD_AUTOSCALE', ('SYS', 0xB7) ),
1188 # 0xB8 - 0xFFFF Reserved
1189 ])
1190
1191
1192         # USB HID Consumer Control Codes
1193 # List of Consumer Codes - USB HID 1.12v2
1194 # Only listing relevant ones, let me know if you need more -HaaTa
1195 # NKRO HID Supports 0x020 - 0x29C
1196 kll_hid_lookup_dictionary['ConsCode'] = dict([
1197         ( '10', ('CONS', 0x020) ),
1198         ( '100', ('CONS', 0x021) ),
1199         ( 'AMPM', ('CONS', 0x022) ),
1200 # 0x023 - 0x03F Reserved
1201         ( 'POWER', ('CONS', 0x030) ),
1202         ( 'RESET', ('CONS', 0x031) ),
1203         ( 'SLEEP', ('CONS', 0x032) ),
1204         ( 'SLEEPAFTER', ('CONS', 0x033) ),
1205         ( 'SLEEPMODE', ('CONS', 0x034) ),
1206         ( 'ILLUMINATION', ('CONS', 0x035) ),
1207
1208 # 0x037 - 0x03F Reserved
1209         ( 'MENU', ('CONS', 0x040) ),
1210         ( 'MENUPICK', ('CONS', 0x041) ),
1211         ( 'MENUUP', ('CONS', 0x042) ),
1212         ( 'MENUDOWN', ('CONS', 0x043) ),
1213         ( 'MENULEFT', ('CONS', 0x044) ),
1214         ( 'MENURIGHT', ('CONS', 0x045) ),
1215         ( 'MENUESCAPE', ('CONS', 0x046) ),
1216         ( 'MENUVALUE_INCREASE', ('CONS', 0x047) ),
1217         ( 'MENUVALUE_DECREASE', ('CONS', 0x048) ),
1218 # 0x049 - 0x05F Reserved
1219         ( 'DATAON_SCREEN', ('CONS', 0x060) ),
1220         ( 'CLOSEDCAPTION', ('CONS', 0x061) ),
1221         ( 'CLOSEDCAPTION_SELECT', ('CONS', 0x062) ),
1222         ( 'VCRTV', ('CONS', 0x063) ),
1223         ( 'BROADCASTMODE', ('CONS', 0x064) ),
1224         ( 'SNAPSHOT', ('CONS', 0x065) ),
1225         ( 'STILL', ('CONS', 0x066) ),
1226 # 0x067 - 0x07F Reserved
1227
1228         ( 'ASSIGNSELECTION', ('CONS', 0x081) ),
1229         ( 'MODESTEP', ('CONS', 0x082) ),
1230         ( 'RECALLLAST', ('CONS', 0x083) ),
1231         ( 'ENTERCHANNEL', ('CONS', 0x084) ),
1232         ( 'ORDERMOVIE', ('CONS', 0x085) ),
1233
1234         ( 'MEDIACOMPUTER', ('CONS', 0x088) ),
1235         ( 'MEDIATV', ('CONS', 0x089) ),
1236         ( 'MEDIAWWW', ('CONS', 0x08A) ),
1237         ( 'MEDIADVD', ('CONS', 0x08B) ),
1238         ( 'MEDIATELEPHONE', ('CONS', 0x08C) ),
1239         ( 'MEDIAPROGRAM_GUIDE', ('CONS', 0x08D) ),
1240         ( 'MEDIAVIDEO_PHONE', ('CONS', 0x08E) ),
1241         ( 'MEDIASELECTGAMES', ('CONS', 0x08F) ),
1242         ( 'MEDIASELECTMESSAGES', ('CONS', 0x090) ),
1243         ( 'MEDIASELECTCD', ('CONS', 0x091) ),
1244         ( 'MEDIASELECTVCR', ('CONS', 0x092) ),
1245         ( 'MEDIASELECTTUNER', ('CONS', 0x093) ),
1246         ( 'QUIT', ('CONS', 0x094) ),
1247         ( 'HELP', ('CONS', 0x095) ),
1248         ( 'MEDIASELECT_TAPE', ('CONS', 0x096) ),
1249         ( 'MEDIASELECT_CABLE', ('CONS', 0x097) ),
1250         ( 'MEDIASELECT_SATELLITE', ('CONS', 0x098) ),
1251         ( 'MEDIASELECT_SECURITY', ('CONS', 0x099) ),
1252         ( 'MEDIASELECT_HOME', ('CONS', 0x09A) ),
1253         ( 'MEDIASELECT_CALL', ('CONS', 0x09B) ),
1254         ( 'CHANNELINCREMENT', ('CONS', 0x09C) ),
1255         ( 'CAHNNELDECREMENT', ('CONS', 0x09D) ),
1256         ( 'MEDIASELECT_SAP', ('CONS', 0x09E) ),
1257 # 0x09F Reserved
1258         ( 'VCRPLUS', ('CONS', 0x0A0) ),
1259         ( 'ONCE', ('CONS', 0x0A1) ),
1260         ( 'DAILY', ('CONS', 0x0A2) ),
1261         ( 'WEEKLY', ('CONS', 0x0A3) ),
1262         ( 'MONTHLY', ('CONS', 0x0A4) ),
1263 # 0x0A5 - 0x0AF Reserved
1264         ( 'PLAY', ('CONS', 0x0B0) ),
1265         ( 'PAUSE', ('CONS', 0x0B1) ),
1266         ( 'RECORD', ('CONS', 0x0B2) ),
1267         ( 'FASTFORWARD', ('CONS', 0x0B3) ),
1268         ( 'REWIND', ('CONS', 0x0B4) ),
1269         ( 'SCANNEXTTRACK', ('CONS', 0x0B5) ),
1270         ( 'SCANPREVIOUSTRACK', ('CONS', 0x0B6) ),
1271         ( 'STOP', ('CONS', 0x0B7) ),
1272         ( 'EJECT', ('CONS', 0x0B8) ),
1273         ( 'RANDOMPLAY', ('CONS', 0x0B9) ),
1274
1275         ( 'REPEAT', ('CONS', 0x0BC) ),
1276
1277         ( 'TRACKNORMAL', ('CONS', 0x0BE) ),
1278
1279         ( 'FRAMEFORWARD', ('CONS', 0x0C0) ),
1280         ( 'FRAMEBACK', ('CONS', 0x0C1) ),
1281         ( 'MARK', ('CONS', 0x0C2) ),
1282         ( 'CLEARMARK', ('CONS', 0x0C3) ),
1283         ( 'REPEATFROM_MARK', ('CONS', 0x0C4) ),
1284         ( 'RETURNTO_MARK', ('CONS', 0x0C5) ),
1285         ( 'SEARCHMARK_FORWARDS', ('CONS', 0x0C6) ),
1286         ( 'SEARCHMARK_BACKWARDS', ('CONS', 0x0C7) ),
1287         ( 'COUNTERRESET', ('CONS', 0x0C8) ),
1288         ( 'SHOWCOUNTER', ('CONS', 0x0C9) ),
1289         ( 'TRACKINGINCREMENT', ('CONS', 0x0CA) ),
1290         ( 'TRACKINGDECREMENT', ('CONS', 0x0CB) ),
1291         ( 'STOPEJECT', ('CONS', 0x0CC) ),
1292         ( 'PAUSEPLAY', ('CONS', 0x0CD) ),
1293         ( 'PLAYSKIP', ('CONS', 0x0CE) ),
1294 # 0x0CF - 0x0DF Reserved
1295
1296         ( 'MUTE', ('CONS', 0x0E2) ),
1297
1298         ( 'BASSBOOST', ('CONS', 0x0E5) ),
1299         ( 'SURROUNDMODE', ('CONS', 0x0E6) ),
1300         ( 'LOUDNESS', ('CONS', 0x0E7) ),
1301         ( 'MPX', ('CONS', 0x0E8) ),
1302         ( 'VOLUMEUP', ('CONS', 0x0E9) ),
1303         ( 'VOLUMEDOWN', ('CONS', 0x0EA) ),
1304 # 0x0EB - 0x0EF Reserved
1305         ( 'SPEEDSELECT', ('CONS', 0x0F0) ),
1306         ( 'STANDARDPLAY', ('CONS', 0x0F2) ),
1307         ( 'LONGPLAY', ('CONS', 0x0F3) ),
1308         ( 'EXTENDEDPLAY', ('CONS', 0x0F4) ),
1309         ( 'SLOW', ('CONS', 0x0F5) ),
1310 # 0x0F6 - 0x0FF
1311         ( 'FANENABLE', ('CONS', 0x100) ),
1312
1313         ( 'LIGHTENABLE', ('CONS', 0x102) ),
1314
1315         ( 'CLIMATECONTROL_ENABLE', ('CONS', 0x104) ),
1316
1317         ( 'SECURITYENABLE', ('CONS', 0x106) ),
1318         ( 'FIREALARM', ('CONS', 0x107) ),
1319
1320         ( 'MOTION', ('CONS', 0x10A) ),
1321         ( 'DURESSALARM', ('CONS', 0x10B) ),
1322         ( 'HOLDUPALARM', ('CONS', 0x10C) ),
1323         ( 'MEDICALALARM', ('CONS', 0x10D) ),
1324 # 0x10E - 0x14F Reserved
1325         ( 'BALANCERIGHT', ('CONS', 0x150) ),
1326         ( 'BALANCELEFT', ('CONS', 0x151) ),
1327         ( 'BASSINCR', ('CONS', 0x152) ),
1328         ( 'BASSDECR', ('CONS', 0x153) ),
1329         ( 'TREBLEINCR', ('CONS', 0x154) ),
1330         ( 'TREBLEDECR', ('CONS', 0x155) ),
1331 # 0x156 - 0x15F Reserved
1332
1333         ( 'SUBCHANNEL_INCREMENT', ('CONS', 0x171) ),
1334         ( 'SUBCHANNEL_DECREMENT', ('CONS', 0x172) ),
1335         ( 'ALTAUDIO_INCREMENT', ('CONS', 0x173) ),
1336         ( 'ALTAUDIO_DECREMENT', ('CONS', 0x174) ),
1337
1338
1339 # List of Consumer Codes - USB HID 1.12v2
1340 # Application Launch Buttons pg 79
1341         ( 'LAUNCHBUTTON_CONFIG_TOOL', ('CONS', 0x181) ),
1342         ( 'PROGRAMMABLEBUTTON_CONFIG', ('CONS', 0x182) ),
1343         ( 'CONSUMERCONTROL_CONFIG', ('CONS', 0x183) ),
1344         ( 'WORDPROCESSOR', ('CONS', 0x184) ),
1345         ( 'TEXTEDITOR', ('CONS', 0x185) ),
1346         ( 'SPREADSHEET', ('CONS', 0x186) ),
1347         ( 'GRAPHICSEDITOR', ('CONS', 0x187) ),
1348         ( 'PRESENTATIONAPP', ('CONS', 0x188) ),
1349         ( 'DATABASEAPP', ('CONS', 0x189) ),
1350         ( 'EMAILREADER', ('CONS', 0x18A) ),
1351         ( 'NEWSREADER', ('CONS', 0x18B) ),
1352         ( 'VOICEMAIL', ('CONS', 0x18C) ),
1353         ( 'CONTACTSADDRESS_BOOK', ('CONS', 0x18D) ),
1354         ( 'CALENDARSCHEDULE', ('CONS', 0x18E) ),
1355         ( 'TASKPROJECT_MANAGER', ('CONS', 0x18F) ),
1356         ( 'LOGJOURNAL_TIMECARD', ('CONS', 0x190) ),
1357         ( 'CHECKBOOKFINANCE', ('CONS', 0x191) ),
1358         ( 'CALCULATOR', ('CONS', 0x192) ),
1359         ( 'AV_CAPTURE_PLAYBACK', ('CONS', 0x193) ),
1360         ( 'LOCALMACHINE_BROWSER', ('CONS', 0x194) ),
1361         ( 'LANWAN_BROWSER', ('CONS', 0x195) ),
1362         ( 'INTERNETBROWSER', ('CONS', 0x196) ),
1363         ( 'REMOTENETWORKING_ISP_CONNECT', ('CONS', 0x197) ),
1364         ( 'NETWORKCONFERENCE', ('CONS', 0x198) ),
1365         ( 'NETWORKCHAT', ('CONS', 0x199) ),
1366         ( 'TELEPHONYDIALER', ('CONS', 0x19A) ),
1367         ( 'LOGON', ('CONS', 0x19B) ),
1368         ( 'LOGOFF', ('CONS', 0x19C) ),
1369         ( 'LOGONLOGOFF', ('CONS', 0x19D) ),
1370         ( 'TERMINALLOCK_SCREENSAVER', ('CONS', 0x19E) ),
1371         ( 'CONTROLPANEL', ('CONS', 0x19F) ),
1372         ( 'COMMANDLINE_PROCESSOR_RUN', ('CONS', 0x1A0) ),
1373         ( 'PROCESSTASK_MANAGER', ('CONS', 0x1A1) ),
1374         ( 'SELECTTAST_APP', ('CONS', 0x1A2) ),
1375         ( 'NEXTTASK_APP', ('CONS', 0x1A3) ),
1376         ( 'PREVIOUSTASK_APP', ('CONS', 0x1A4) ),
1377         ( 'PREEMPTIVEHALT_TASK_APP', ('CONS', 0x1A5) ),
1378         ( 'INTEGRATEDHELP_CENTER', ('CONS', 0x1A6) ),
1379         ( 'DOCUMENTS', ('CONS', 0x1A7) ),
1380         ( 'THESAURUS', ('CONS', 0x1A8) ),
1381         ( 'DICTIONARY', ('CONS', 0x1A9) ),
1382         ( 'DESKTOP', ('CONS', 0x1AA) ),
1383         ( 'SPELLCHECK', ('CONS', 0x1AB) ),
1384         ( 'GRAMMARCHECK', ('CONS', 0x1AC) ),
1385         ( 'WIRELESSSTATUS', ('CONS', 0x1AD) ),
1386         ( 'KEYBOARDLAYOUT', ('CONS', 0x1AE) ),
1387         ( 'VIRUSPROTECTION', ('CONS', 0x1AF) ),
1388         ( 'ENCRYPTION', ('CONS', 0x1B0) ),
1389         ( 'SCREENSAVER', ('CONS', 0x1B1) ),
1390         ( 'ALARMS', ('CONS', 0x1B2) ),
1391         ( 'CLOCK', ('CONS', 0x1B3) ),
1392         ( 'FILEBROWSER', ('CONS', 0x1B4) ),
1393         ( 'POWERSTATUS', ('CONS', 0x1B5) ),
1394         ( 'IMAGEBROWSER', ('CONS', 0x1B6) ),
1395         ( 'AUDIOBROWSER', ('CONS', 0x1B7) ),
1396         ( 'MOVIEBROWSER', ('CONS', 0x1B8) ),
1397         ( 'DIGITALRIGHTS_MANAGER', ('CONS', 0x1B9) ),
1398         ( 'DIGITALWALLET', ('CONS', 0x1BA) ),
1399 # 0x1BB Reserved
1400         ( 'INSTANTMESSAGING', ('CONS', 0x1BC) ),
1401         ( 'OEMFEATURES_TIPS_TUTORIAL', ('CONS', 0x1BD) ),
1402         ( 'OEMHELP', ('CONS', 0x1BE) ),
1403         ( 'ONLINECOMMUNITY', ('CONS', 0x1BF) ),
1404         ( 'ENTERTAINMENTCONTENT', ('CONS', 0x1C0) ),
1405         ( 'ONLINESHOPPING', ('CONS', 0x1C1) ),
1406         ( 'SMARTCARDINFO_HELP', ('CONS', 0x1C2) ),
1407         ( 'MARKETMONITOR', ('CONS', 0x1C3) ),
1408         ( 'CUSTOMIZEDCORP_NEWS', ('CONS', 0x1C4) ),
1409         ( 'ONLINEACTIVITY', ('CONS', 0x1C5) ),
1410         ( 'SEARCHBROWSER', ('CONS', 0x1C6) ),
1411         ( 'AUDIOPLAYER', ('CONS', 0x1C7) ),
1412
1413
1414 # List of Consumer Codes - USB HID 1.12v2
1415 # Generic GUI Application Controls pg 82
1416         ( 'NEW', ('CONS', 0x201) ),
1417         ( 'OPEN', ('CONS', 0x202) ),
1418         ( 'CLOSE', ('CONS', 0x203) ),
1419         ( 'EXIT', ('CONS', 0x204) ),
1420         ( 'MAXIMIZE', ('CONS', 0x205) ),
1421         ( 'MINIMIZE', ('CONS', 0x206) ),
1422         ( 'SAVE', ('CONS', 0x207) ),
1423         ( 'PRINT', ('CONS', 0x208) ),
1424         ( 'PROPERTIES', ('CONS', 0x209) ),
1425         ( 'UNDO', ('CONS', 0x21A) ),
1426         ( 'COPY', ('CONS', 0x21B) ),
1427         ( 'CUT', ('CONS', 0x21C) ),
1428         ( 'PASTE', ('CONS', 0x21D) ),
1429         ( 'SELECTALL', ('CONS', 0x21E) ),
1430         ( 'FIND', ('CONS', 0x21F) ),
1431         ( 'FINDANDREPLACE', ('CONS', 0x220) ),
1432         ( 'SEARCH', ('CONS', 0x221) ),
1433         ( 'GOTO', ('CONS', 0x222) ),
1434         ( 'HOME', ('CONS', 0x223) ),
1435         ( 'BACK', ('CONS', 0x224) ),
1436         ( 'FORWARD', ('CONS', 0x225) ),
1437         ( 'STOP', ('CONS', 0x226) ),
1438         ( 'REFRESH', ('CONS', 0x227) ),
1439         ( 'PREVIOUSLINK', ('CONS', 0x228) ),
1440         ( 'NEXTLINK', ('CONS', 0x229) ),
1441         ( 'BOOKMARKS', ('CONS', 0x22A) ),
1442         ( 'HISTORY', ('CONS', 0x22B) ),
1443         ( 'SUBSCRIPTIONS', ('CONS', 0x22C) ),
1444         ( 'ZOOMIN', ('CONS', 0x22D) ),
1445         ( 'ZOOMOUT', ('CONS', 0x22E) ),
1446         ( 'ZOOM', ('CONS', 0x22F) ),
1447         ( 'FULLSCREEN_VIEW', ('CONS', 0x230) ),
1448         ( 'NORMALVIEW', ('CONS', 0x231) ),
1449         ( 'VIEWTOGGLE', ('CONS', 0x232) ),
1450         ( 'SCROLLUP', ('CONS', 0x233) ),
1451         ( 'SCROLLDOWN', ('CONS', 0x234) ),
1452         ( 'SCROLL', ('CONS', 0x235) ),
1453         ( 'PANLEFT', ('CONS', 0x236) ),
1454         ( 'PANRIGHT', ('CONS', 0x237) ),
1455         ( 'PAN', ('CONS', 0x238) ),
1456         ( 'NEWWINDOW', ('CONS', 0x239) ),
1457         ( 'TILEHORIZONTALLY', ('CONS', 0x23A) ),
1458         ( 'TILEVERTICALLY', ('CONS', 0x23B) ),
1459         ( 'FORMAT', ('CONS', 0x23C) ),
1460         ( 'EDIT', ('CONS', 0x23D) ),
1461         ( 'BOLD', ('CONS', 0x23E) ),
1462         ( 'ITALICS', ('CONS', 0x23F) ),
1463         ( 'UNDERLINE', ('CONS', 0x240) ),
1464         ( 'STRIKETHROUGH', ('CONS', 0x241) ),
1465         ( 'SUBSCRIPT', ('CONS', 0x242) ),
1466         ( 'SUPERSCRIPT', ('CONS', 0x243) ),
1467         ( 'ALLCAPS', ('CONS', 0x244) ),
1468         ( 'ROTATE', ('CONS', 0x245) ),
1469         ( 'RESIZE', ('CONS', 0x246) ),
1470         ( 'FILPHORIZONTAL', ('CONS', 0x247) ),
1471         ( 'FILPVERTICAL', ('CONS', 0x248) ),
1472         ( 'MIRRORHORIZONTAL', ('CONS', 0x249) ),
1473         ( 'MIRRORVERTICAL', ('CONS', 0x24A) ),
1474         ( 'FONTSELECT', ('CONS', 0x24B) ),
1475         ( 'FONTCOLOR', ('CONS', 0x24C) ),
1476         ( 'FONTSIZE', ('CONS', 0x24D) ),
1477         ( 'JUSTIFYLEFT', ('CONS', 0x24E) ),
1478         ( 'JUSTIFYCENTER_H', ('CONS', 0x24F) ),
1479         ( 'JUSTIFYRIGHT', ('CONS', 0x250) ),
1480         ( 'JUSTIFYBLOCK_H', ('CONS', 0x251) ),
1481         ( 'JUSTIFYTOP', ('CONS', 0x252) ),
1482         ( 'JUSTIFYCENTER_V', ('CONS', 0x253) ),
1483         ( 'JUSTIFYBOTTOM', ('CONS', 0x254) ),
1484         ( 'JUSTIFYBLOCK_V', ('CONS', 0x255) ),
1485         ( 'INDENTDECREASE', ('CONS', 0x256) ),
1486         ( 'INDENTINCREASE', ('CONS', 0x257) ),
1487         ( 'NUMBEREDLIST', ('CONS', 0x258) ),
1488         ( 'RESTARTNUMBERING', ('CONS', 0x259) ),
1489         ( 'BULLETEDLIST', ('CONS', 0x25A) ),
1490         ( 'PROMOTE', ('CONS', 0x25B) ),
1491         ( 'DEMOTE', ('CONS', 0x25C) ),
1492         ( 'YES', ('CONS', 0x25D) ),
1493         ( 'NO', ('CONS', 0x25E) ),
1494         ( 'CANCEL', ('CONS', 0x25F) ),
1495         ( 'CATALOG', ('CONS', 0x260) ),
1496         ( 'BUYCHECKOUT', ('CONS', 0x261) ),
1497         ( 'ADDTO_CART', ('CONS', 0x262) ),
1498         ( 'EXPAND', ('CONS', 0x263) ),
1499         ( 'EXPANDALL', ('CONS', 0x264) ),
1500         ( 'COLLAPSE', ('CONS', 0x265) ),
1501         ( 'COLLAPSEALL', ('CONS', 0x266) ),
1502         ( 'PRINTPREVIEW', ('CONS', 0x267) ),
1503         ( 'PASTESPECIAL', ('CONS', 0x268) ),
1504         ( 'INSERTMODE', ('CONS', 0x269) ),
1505         ( 'DELETE', ('CONS', 0x26A) ),
1506         ( 'LOCK', ('CONS', 0x26B) ),
1507         ( 'UNLOCK', ('CONS', 0x26C) ),
1508         ( 'PROTECT', ('CONS', 0x26D) ),
1509         ( 'UNPROTECT', ('CONS', 0x26E) ),
1510         ( 'ATTACHCOMMENT', ('CONS', 0x26F) ),
1511         ( 'DELETECOMMENT', ('CONS', 0x270) ),
1512         ( 'VIEWCOMMENT', ('CONS', 0x271) ),
1513         ( 'SELECTWORD', ('CONS', 0x272) ),
1514         ( 'SELECTSENTENCE', ('CONS', 0x273) ),
1515         ( 'SELECTPARAGRAPH', ('CONS', 0x274) ),
1516         ( 'SELECTCOLUMN', ('CONS', 0x275) ),
1517         ( 'SELECTROW', ('CONS', 0x276) ),
1518         ( 'SELECTTABLE', ('CONS', 0x277) ),
1519         ( 'SELECTOBJECT', ('CONS', 0x278) ),
1520         ( 'REDOREPEAT', ('CONS', 0x279) ),
1521         ( 'SORT', ('CONS', 0x27A) ),
1522         ( 'SORTASCENDING', ('CONS', 0x27B) ),
1523         ( 'SORTDESCENDING', ('CONS', 0x27C) ),
1524         ( 'FILTER', ('CONS', 0x27D) ),
1525         ( 'SETCLOCK', ('CONS', 0x27E) ),
1526         ( 'VIEWCLOCK', ('CONS', 0x27F) ),
1527         ( 'SELECTTIME_ZONE', ('CONS', 0x280) ),
1528         ( 'EDITTIME_ZONE', ('CONS', 0x281) ),
1529         ( 'SETALARM', ('CONS', 0x282) ),
1530         ( 'CLEARALARM', ('CONS', 0x283) ),
1531         ( 'SNOOZEALARM', ('CONS', 0x284) ),
1532         ( 'RESETALARM', ('CONS', 0x285) ),
1533         ( 'SYNCHRONIZE', ('CONS', 0x286) ),
1534         ( 'SENDRECEIVE', ('CONS', 0x287) ),
1535         ( 'SENDTO', ('CONS', 0x288) ),
1536         ( 'REPLY', ('CONS', 0x289) ),
1537         ( 'REPLYALL', ('CONS', 0x28A) ),
1538         ( 'FORWARDMSG', ('CONS', 0x28B) ),
1539         ( 'SEND', ('CONS', 0x28C) ),
1540         ( 'ATTACHFILE', ('CONS', 0x28D) ),
1541         ( 'UPLOAD', ('CONS', 0x28E) ),
1542         ( 'DOWNLOAD', ('CONS', 0x28F) ),
1543         ( 'SETBORDERS', ('CONS', 0x290) ),
1544         ( 'INSERTROW', ('CONS', 0x291) ),
1545         ( 'INSERTCOLUMN', ('CONS', 0x292) ),
1546         ( 'INSERTFILE', ('CONS', 0x293) ),
1547         ( 'INSERTPICTURE', ('CONS', 0x294) ),
1548         ( 'INSERTOBJECT', ('CONS', 0x295) ),
1549         ( 'INSERTSYMBOL', ('CONS', 0x296) ),
1550         ( 'SAVEANDCLOSE', ('CONS', 0x297) ),
1551         ( 'RENAME', ('CONS', 0x298) ),
1552         ( 'MERGE', ('CONS', 0x299) ),
1553         ( 'SPLIT', ('CONS', 0x29A) ),
1554         ( 'DISTRIBUTEHORIZONTALLY', ('CONS', 0x29B) ),
1555         ( 'DISTRIBUTEVERTICALLY', ('CONS', 0x29C) ),
1556 # 0x29D-0xFFFF Reserved
1557 ])
1558