KLL Compiler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

hid_dict.py 62KB

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