1 #include <common/hid.h>
2 
3 // Generic Desktop Devices
4 struct hid_usage_types_string hid_usage_type001[] = {
5     {0x0000, "Undefined"},
6     {0x0001, "Pointer"},
7     {0x0002, "Mouse"},
8     {0x0003, "Reserved"},
9     {0x0004, "Joystick"},
10     {0x0005, "Game Pad"},
11     {0x0006, "Keyboard"},
12     {0x0007, "Keypad"},
13     {0x0008, "Multi-axis Controller"},
14     {0x0009, "Tablet PC System Controls"},
15     {0x0030, "X"},
16     {0x0031, "Y"},
17     {0x0032, "Z"},
18     {0x0033, "Rx"},
19     {0x0034, "Ry"},
20     {0x0035, "Rz"},
21     {0x0036, "Slider"},
22     {0x0037, "Dial"},
23     {0x0038, "Wheel"},
24     {0x0039, "Hat Switch"},
25     {0x003A, "Counted Buffer"},
26     {0x003B, "Byte Count"},
27     {0x003C, "Motion Wake-up"},
28     {0x003D, "Start"},
29     {0x003E, "Select"},
30     {0x003F, "Reserved"},
31     {0x0040, "Vx"},
32     {0x0041, "Vy"},
33     {0x0042, "Vz"},
34     {0x0043, "Vbrx"},
35     {0x0044, "Vbry"},
36     {0x0045, "Vbrz"},
37     {0x0046, "Vno"},
38     {0x0047, "Feature Notification"},
39     {0x0048, "Resolution Mutliplier"},
40     {0x0080, "System Control"},
41     {0x0081, "System Power Down"},
42     {0x0082, "System Sleep"},
43     {0x0083, "System Wake-up"},
44     {0x0084, "System Context Menu"},
45     {0x0085, "System Main Menu"},
46     {0x0086, "System App Menu"},
47     {0x0087, "System Menu Help"},
48     {0x0088, "System Menu Exit"},
49     {0x0089, "System Menu Select"},
50     {0x008A, "System Menu Right"},
51     {0x008B, "System Menu Left"},
52     {0x008C, "System Menu Up"},
53     {0x008D, "System Menu Down"},
54     {0x008E, "System Cold Restart "},
55     {0x008F, "System Warm Restart"},
56     {0x0090, "D-Pan Up"},
57     {0x0091, "D-Pan Down"},
58     {0x0092, "D-Pan Right"},
59     {0x0093, "D-Pan Left"},
60     {0x00A0, "System Dock"},
61     {0x00A1, "System unDock"},
62     {0x00A2, "System Setup"},
63     {0x00A3, "System Break"},
64     {0x00A4, "System Debugger Break"},
65     {0x00A5, "Application Break"},
66     {0x00A6, "Application Debugger Break"},
67     {0x00A7, "System Speaker Mute"},
68     {0x00A8, "System Hibernate"},
69     {0x00B0, "System Display Invert"},
70     {0x00B1, "System Display Internal"},
71     {0x00B2, "System Display External"},
72     {0x00B3, "System Display Both"},
73     {0x00B4, "System Display Dual"},
74     {0x00B5, "System Display Toggle Int/Ext"},
75     {0x00B6, "System Display Swap Prim/Sec"},
76     {0x00B7, "System Display Display Auto Scale"},
77 
78     {0xFFFF, ""},
79 };
80 
81 struct hid_usage_types_string hid_usage_type002[] = {
82     {0x0000, "Undefined"},
83     {0x0001, "Flight Simulation Device"},
84     {0x0002, "Automobile Simulation Device"},
85     {0x0003, "Tank Simulation Device"},
86     {0x0004, "Spaceship Simulation Device"},
87     {0x0005, "Submarine Simulation Device"},
88     {0x0006, "Sailing Simulation Device"},
89     {0x0007, "Motorcycle Simulation Device"},
90     {0x0008, "Sports Simulation Device"},
91     {0x0009, "Airplane Simulation Device"},
92     {0x000A, "Helicopter Simulation Device"},
93     {0x000B, "Magic Carpet Simulation Device"},
94     {0x000C, "Bicycle"},
95     {0x0020, "Flight Control Stick"},
96     {0x0021, "Flight Stick"},
97     {0x0022, "Cyclic Control"},
98     {0x0023, "Cyclic Trim"},
99     {0x0024, "Flight Yoke"},
100     {0x0025, "Track Control"},
101     {0x0026, "Driving Control"},
102     {0x00B0, "Aileron"},
103     {0x00B1, "Aileron Trim"},
104     {0x00B2, "Anti-Torque Control"},
105     {0x00B3, "Auto-pilot Enable"},
106     {0x00B4, "Chaff Release"},
107     {0x00B5, "Collective Control"},
108     {0x00B6, "Dive Brake"},
109     {0x00B7, "Electronic Counter Measures"},
110     {0x00B8, "Elevator"},
111     {0x00B9, "Elevator Trim"},
112     {0x00BA, "Rudder"},
113     {0x00BB, "Throttle"},
114     {0x00BC, "Flight Communication"},
115     {0x00BD, "Flare Release"},
116     {0x00BE, "Landing Gear"},
117     {0x00BF, "Toe Brake"},
118     {0x00C0, "Trigger"},
119     {0x00C1, "Weapons Arm"},
120     {0x00C2, "Weapons Select"},
121     {0x00C3, "Wing Flaps"},
122     {0x00C4, "Accelerator"},
123     {0x00C5, "Brake"},
124     {0x00C6, "Clutch"},
125     {0x00C7, "Shifter"},
126     {0x00C8, "Steering"},
127     {0x00C9, "Turret Direction"},
128     {0x00CA, "Barrel Elevation"},
129     {0x00CB, "Dive Plane"},
130     {0x00CC, "Ballast"},
131     {0x00CD, "Bicycle Crank"},
132     {0x00CE, "Handle Bars"},
133     {0x00CF, "Front Brake"},
134     {0x00D0, "Rear Brake"},
135 
136     {0xFFFF, ""},
137 };
138 
139 struct hid_usage_types_string hid_usage_type003[] = {
140     {0x0000, "Unidentified"},
141     {0x0001, "Belt"},
142     {0x0002, "Body Suit"},
143     {0x0003, "Flexor"},
144     {0x0004, "Glove"},
145     {0x0005, "Head Tracker"},
146     {0x0006, "Head Mounted Display"},
147     {0x0007, "Hand Tracker"},
148     {0x0008, "Oculometer"},
149     {0x0009, "Vest"},
150     {0x000A, "Animatronic Device"},
151     {0x0020, "Stereo Enable"},
152     {0x0021, "Display Enable"},
153 
154     {0xFFFF, ""},
155 };
156 
157 struct hid_usage_types_string hid_usage_type004[] = {
158     {0x0000, "Unidentified"},
159     {0x0001, "Baseball Bat"},
160     {0x0002, "Golf Club"},
161     {0x0003, "Rowing Machine"},
162     {0x0004, "Treadmill"},
163     {0x0030, "Oar"},
164     {0x0031, "Slope"},
165     {0x0032, "Rate"},
166     {0x0033, "Stick Speed"},
167     {0x0034, "Stick Face Angle"},
168     {0x0035, "Stick Heel/Toe"},
169     {0x0036, "Stick Follow Through"},
170     {0x0037, "Stick Tempo"},
171     {0x0038, "Stick Type"},
172     {0x0039, "Stick Height"},
173     {0x0050, "Putter"},
174     {0x0051, "1 Iron"},
175     {0x0052, "2 Iron"},
176     {0x0053, "3 Iron"},
177     {0x0054, "4 Iron"},
178     {0x0055, "5 Iron"},
179     {0x0056, "6 Iron"},
180     {0x0057, "7 Iron"},
181     {0x0058, "8 Iron"},
182     {0x0059, "9 Iron"},
183     {0x005A, "10 Iron"},
184     {0x005B, "11 Iron"},
185     {0x005C, "Sand Wedge"},
186     {0x005D, "Loft Wedge"},
187     {0x005E, "Power Wedge"},
188     {0x005F, "1 Wood"},
189     {0x0060, "3 Wood"},
190     {0x0061, "5 Wood"},
191     {0x0062, "7 Wood"},
192     {0x0063, "9 Wood"},
193 
194     {0xFFFF, ""},
195 };
196 
197 struct hid_usage_types_string hid_usage_type005[] = {
198     {0x0000, "Undefined"},
199     {0x0001, "3D Game Controller"},
200     {0x0002, "Pinball Device"},
201     {0x0003, "Gun Device"},
202     {0x0020, "Point of View"},
203     {0x0021, "Turn Right/Left"},
204     {0x0022, "Pitch Right/Left"},
205     {0x0023, "Roll Forward/Backward"},
206     {0x0024, "Move Right/Left"},
207     {0x0025, "Move Forward/Backward"},
208     {0x0026, "Move Up/Down"},
209     {0x0027, "Lean Right/Left"},
210     {0x0028, "Lean Forward/Backward"},
211     {0x0029, "Height of POV"},
212     {0x002A, "Flipper"},
213     {0x002B, "Secondary Flipper"},
214     {0x002C, "Bump"},
215     {0x002D, "New Game"},
216     {0x002E, "Shoot Ball"},
217     {0x002F, "Player"},
218     {0x0030, "Gun Bolt"},
219     {0x0031, "Gun Clip"},
220     {0x0032, "Gun Selector"},
221     {0x0033, "Gun Single Shot"},
222     {0x0034, "Gun Burst"},
223     {0x0035, "Gun Automatic"},
224     {0x0036, "Gun Safety"},
225     {0x0037, "Gamepad Fire/Jump"},
226     {0x0039, "Gamepad Trigger"},
227 
228     {0xFFFF, ""},
229 };
230 
231 struct hid_usage_types_string hid_usage_type006[] = {
232     {0x0000, "Unidentified"},
233     {0x0020, " Battery Strength"},
234     {0x0021, " Wireless Channel"},
235     {0x0022, " Wireless ID"},
236     {0x0023, " Discover Wireless Control"},
237     {0x0024, " Security Code Character Entered"},
238     {0x0025, " Security Code Character Erased"},
239     {0x0026, " Security Code Cleared"},
240 
241     {0xFFFF, ""},
242 };
243 
244 struct hid_usage_types_string hid_usage_type007[] = {
245     {0x0000, "Reserved (no event indicated)"},
246     {0x0001, "Keyboard ErrorRollOver"},
247     {0x0002, "Keyboard POSTFail"},
248     {0x0003, "Keyboard ErrorUndefined"},
249     {0x0004, "Keyboard a and A"},
250     {0x0005, "Keyboard b and B"},
251     {0x0006, "Keyboard c and C"},
252     {0x0007, "Keyboard d and D"},
253     {0x0008, "Keyboard e and E"},
254     {0x0009, "Keyboard f and F"},
255     {0x000A, "Keyboard g and G"},
256     {0x000B, "Keyboard h and H"},
257     {0x000C, "Keyboard i and I"},
258     {0x000D, "Keyboard j and J"},
259     {0x000E, "Keyboard k and K"},
260     {0x000F, "Keyboard l and L"},
261     {0x0010, "Keyboard m and M"},
262     {0x0011, "Keyboard n and N"},
263     {0x0012, "Keyboard o and O"},
264     {0x0013, "Keyboard p and P"},
265     {0x0014, "Keyboard q and Q"},
266     {0x0015, "Keyboard r and R"},
267     {0x0016, "Keyboard s and S"},
268     {0x0017, "Keyboard t and T"},
269     {0x0018, "Keyboard u and U"},
270     {0x0019, "Keyboard v and V"},
271     {0x001A, "Keyboard w and W"},
272     {0x001B, "Keyboard x and X"},
273     {0x001C, "Keyboard y and Y"},
274     {0x001D, "Keyboard z and Z"},
275     {0x001E, "Keyboard 1 and !"},
276     {0x001F, "Keyboard 2 and @"},
277     {0x0020, "Keyboard 3 and #"},
278     {0x0021, "Keyboard 4 and $"},
279     {0x0022, "Keyboard 5 and %"},
280     {0x0023, "Keyboard 6 and ^"},
281     {0x0024, "Keyboard 7 and &"},
282     {0x0025, "Keyboard 8 and *"},
283     {0x0026, "Keyboard 9 and ("},
284     {0x0027, "Keyboard 0 and )"},
285     {0x0028, "Keyboard Return (ENTER)"},
286     {0x0029, "Keyboard ESCAPE"},
287     {0x002A, "Keyboard DELETE (Backspace)"},
288     {0x002B, "Keyboard Tab"},
289     {0x002C, "Keyboard Spacebar"},
290     {0x002D, "Keyboard - and (underscore)"},
291     {0x002E, "Keyboard = and +"},
292     {0x002F, "Keyboard [ and {"},
293     {0x0030, "Keyboard ] and }"},
294     {0x0031, "Keyboard \\ and |"},
295     {0x0032, "Keyboard Non-US # and ~"},
296     {0x0033, "Keyboard ; and :"},
297     {0x0034, "Keyboard ' and \""},
298     {0x0035, "Keyboard Grave Accent and Tilde"},
299     {0x0036, "Keyboard, and <"},
300     {0x0037, "Keyboard . and >"},
301     {0x0038, "Keyboard / and ?"},
302     {0x0039, "Keyboard Caps Lock"},
303     {0x003A, "Keyboard F1"},
304     {0x003B, "Keyboard F2"},
305     {0x003C, "Keyboard F3"},
306     {0x003D, "Keyboard F4"},
307     {0x003E, "Keyboard F5"},
308     {0x003F, "Keyboard F6"},
309     {0x0040, "Keyboard F7"},
310     {0x0041, "Keyboard F8"},
311     {0x0042, "Keyboard F9"},
312     {0x0043, "Keyboard F10"},
313     {0x0044, "Keyboard F11"},
314     {0x0045, "Keyboard F12"},
315     {0x0046, "Keyboard PrintScreen"},
316     {0x0047, "Keyboard Scroll Lock"},
317     {0x0048, "Keyboard Pause"},
318     {0x0049, "Keyboard Insert"},
319     {0x004A, "Keyboard Home"},
320     {0x004B, "Keyboard PageUp"},
321     {0x004C, "Keyboard Delete Forward"},
322     {0x004D, "Keyboard End"},
323     {0x004E, "Keyboard PageDown"},
324     {0x004F, "Keyboard RightArrow"},
325     {0x0050, "Keyboard LeftArrow"},
326     {0x0051, "Keyboard DownArrow"},
327     {0x0052, "Keyboard UpArrow"},
328     {0x0053, "Keypad Num Lock and Clear"},
329     {0x0054, "Keypad /"},
330     {0x0055, "Keypad *"},
331     {0x0056, "Keypad -"},
332     {0x0057, "Keypad +"},
333     {0x0058, "Keypad ENTER"},
334     {0x0059, "Keypad 1 and End"},
335     {0x005A, "Keypad 2 and Down Arrow"},
336     {0x005B, "Keypad 3 and PageDn"},
337     {0x005C, "Keypad 4 and Left Arrow"},
338     {0x005D, "Keypad 5"},
339     {0x005E, "Keypad 6 and Right Arrow"},
340     {0x005F, "Keypad 7 and Home"},
341     {0x0060, "Keypad 8 and Up Arrow"},
342     {0x0061, "Keypad 9 and PageUp"},
343     {0x0062, "Keypad 0 and Insert"},
344     {0x0063, "Keypad . and Delete"},
345     {0x0064, "Keyboard Non-US \\ and |"},
346     {0x0065, "Keyboard Application"},
347     {0x0066, "Keyboard Power"},
348     {0x0067, "Keypad ="},
349     {0x0068, "Keyboard F13"},
350     {0x0069, "Keyboard F14"},
351     {0x006A, "Keyboard F15"},
352     {0x006B, "Keyboard F16"},
353     {0x006C, "Keyboard F17"},
354     {0x006D, "Keyboard F18"},
355     {0x006E, "Keyboard F19"},
356     {0x006F, "Keyboard F20"},
357     {0x0070, "Keyboard F21"},
358     {0x0071, "Keyboard F22"},
359     {0x0072, "Keyboard F23"},
360     {0x0073, "Keyboard F24"},
361     {0x0074, "Keyboard Execute"},
362     {0x0075, "Keyboard Help"},
363     {0x0076, "Keyboard Menu"},
364     {0x0077, "Keyboard Select"},
365     {0x0078, "Keyboard Stop"},
366     {0x0079, "Keyboard Again"},
367     {0x007A, "Keyboard Undo"},
368     {0x007B, "Keyboard Cut"},
369     {0x007C, "Keyboard Copy"},
370     {0x007D, "Keyboard Paste"},
371     {0x007E, "Keyboard Find"},
372     {0x007F, "Keyboard Mute"},
373     {0x0080, "Keyboard Volume Up"},
374     {0x0081, "Keyboard Volume Down"},
375     {0x0082, "Keyboard Locking Caps Lock"},
376     {0x0083, "Keyboard Locking Num Lock"},
377     {0x0084, "Keyboard Locking Scroll Lock"},
378     {0x0085, "Keypad Comma"},
379     {0x0086, "Keypad Equal Sign"},
380     {0x0087, "Keyboard International1"},
381     {0x0088, "Keyboard International2"},
382     {0x0089, "Keyboard International3"},
383     {0x008A, "Keyboard International4"},
384     {0x008B, "Keyboard International5"},
385     {0x008C, "Keyboard International6"},
386     {0x008D, "Keyboard International7"},
387     {0x008E, "Keyboard International8"},
388     {0x008F, "Keyboard International9"},
389     {0x0090, "Keyboard LANG1"},
390     {0x0091, "Keyboard LANG2"},
391     {0x0092, "Keyboard LANG3"},
392     {0x0093, "Keyboard LANG4"},
393     {0x0094, "Keyboard LANG5"},
394     {0x0095, "Keyboard LANG6"},
395     {0x0096, "Keyboard LANG7"},
396     {0x0097, "Keyboard LANG8"},
397     {0x0098, "Keyboard LANG9"},
398     {0x0099, "Keyboard Alternate Erase"},
399     {0x009A, "Keyboard SysReq/Attention"},
400     {0x009B, "Keyboard Cancel"},
401     {0x009C, "Keyboard Clear"},
402     {0x009D, "Keyboard Prior"},
403     {0x009E, "Keyboard Return"},
404     {0x009F, "Keyboard Separator"},
405     {0x00A0, "Keyboard Out"},
406     {0x00A1, "Keyboard Oper"},
407     {0x00A2, "Keyboard Clear/Again"},
408     {0x00A3, "Keyboard CrSel/Props"},
409     {0x00A4, "Keyboard ExSel"},
410     {0x00E0, "Keyboard LeftControl"},
411     {0x00E1, "Keyboard LeftShift"},
412     {0x00E2, "Keyboard LeftAlt"},
413     {0x00E3, "Keyboard Left GUI"},
414     {0x00E4, "Keyboard RightControl"},
415     {0x00E5, "Keyboard RightShift"},
416     {0x00E6, "Keyboard RightAlt"},
417     {0x00E7, "Keyboard Right GUI"},
418 
419     {0xFFFF, ""},
420 };
421 
422 struct hid_usage_types_string hid_usage_type008[] = {
423     {0x0000, "Undefined"},
424     {0x0001, "Num Lock"},
425     {0x0002, "Caps Lock"},
426     {0x0003, "Scroll Lock"},
427     {0x0004, "Compose"},
428     {0x0005, "Kana"},
429     {0x0006, "Power"},
430     {0x0007, "Shift"},
431     {0x0008, "Do Not Disturb"},
432     {0x0009, "Mute"},
433     {0x000A, "Tone Enable"},
434     {0x000B, "High Cut Filter"},
435     {0x000C, "Low Cut Filter"},
436     {0x000D, "Equalizer Enable"},
437     {0x000E, "Sound Field On"},
438     {0x000F, "Surround Field On"},
439     {0x0010, "Repeat"},
440     {0x0011, "Stereo"},
441     {0x0012, "Sampling Rate Detect"},
442     {0x0013, "Spinning"},
443     {0x0014, "CAV"},
444     {0x0015, "CLV"},
445     {0x0016, "Recording Format Detect"},
446     {0x0017, "Off-Hook"},
447     {0x0018, "Ring"},
448     {0x0019, "Message Waiting"},
449     {0x001A, "Data Mode"},
450     {0x001B, "Battery Operation"},
451     {0x001C, "Battery OK"},
452     {0x001D, "Battery Low"},
453     {0x001E, "Speaker"},
454     {0x001F, "Head Set"},
455     {0x0020, "Hold"},
456     {0x0021, "Microphone"},
457     {0x0022, "Coverage"},
458     {0x0023, "Night Mode"},
459     {0x0024, "Send Calls"},
460     {0x0025, "Call Pickup"},
461     {0x0026, "Conference"},
462     {0x0027, "Stand-by"},
463     {0x0028, "Camera On"},
464     {0x0029, "Camera Off"},
465     {0x002A, "On-Line"},
466     {0x002B, "Off-Line"},
467     {0x002C, "Busy"},
468     {0x002D, "Ready"},
469     {0x002E, "Paper-Out"},
470     {0x002F, "Paper-Jam"},
471     {0x0030, "Remote"},
472     {0x0031, "Forward"},
473     {0x0032, "Reverse"},
474     {0x0033, "Stop"},
475     {0x0034, "Rewind"},
476     {0x0035, "Fast Forward"},
477     {0x0036, "Play"},
478     {0x0037, "Pause"},
479     {0x0038, "Record"},
480     {0x0039, "Error"},
481     {0x003A, "Usage Selected Indicator"},
482     {0x003B, "Usage In Use Indicator"},
483     {0x003C, "Usage Multi Mode Indicator"},
484     {0x003D, "Indicator On"},
485     {0x003E, "Indicator Flash"},
486     {0x003F, "Indicator Slow Blink"},
487     {0x0040, "Indicator Fast Blink"},
488     {0x0041, "Indicator Off"},
489     {0x0042, "Flash On Time"},
490     {0x0043, "Slow Blink On Time"},
491     {0x0044, "Slow Blink Off Time"},
492     {0x0045, "Fast Blink On Time"},
493     {0x0046, "Fast Blink Off Time"},
494     {0x0047, "Usage Indicator Color"},
495     {0x0048, "Red"},
496     {0x0049, "Green"},
497     {0x004A, "Amber"},
498     {0x004B, "Generic Indicator"},
499     {0x004C, "System Suspend"},
500     {0x004D, "External Power Connected"},
501 
502     {0xFFFF, ""},
503 };
504 
505 struct hid_usage_types_string hid_usage_type00B[] = {
506     {0x0000, "Unassigned"},
507     {0x0001, "Phone"},
508     {0x0002, "Answering Machine"},
509     {0x0003, "Message Controls"},
510     {0x0004, "Handset"},
511     {0x0005, "Headset"},
512     {0x0006, "Telephony Key Pad"},
513     {0x0007, "Programmable Button"},
514     {0x0020, "Hook Switch"},
515     {0x0021, "Flash"},
516     {0x0022, "Feature"},
517     {0x0023, "Hold"},
518     {0x0024, "Redial"},
519     {0x0025, "Transfer"},
520     {0x0026, "Drop"},
521     {0x0027, "Park"},
522     {0x0028, "Forward Calls"},
523     {0x0029, "Alternate Function"},
524     {0x002A, "Line"},
525     {0x002B, "Speaker Phone"},
526     {0x002C, "Conference"},
527     {0x002D, "Ring Enable"},
528     {0x002E, "Ring Select"},
529     {0x002F, "Phone Mute"},
530     {0x0030, "Caller ID"},
531     {0x0050, "Speed Dial"},
532     {0x0051, "Store Number"},
533     {0x0052, "Recall Number"},
534     {0x0053, "Phone Directory"},
535     {0x0070, "Voice Mail"},
536     {0x0071, "Screen Calls"},
537     {0x0072, "Do Not Disturb"},
538     {0x0073, "Message"},
539     {0x0074, "Answer On/Off"},
540     {0x0090, "Inside Dial Tone"},
541     {0x0091, "Outside Dial Tone"},
542     {0x0092, "Inside Ring Tone"},
543     {0x0093, "Outside Ring Tone"},
544     {0x0094, "Priority Ring Tone"},
545     {0x0095, "Inside Ringback"},
546     {0x0096, "Priority Ringback"},
547     {0x0097, "Line Busy Tone"},
548     {0x0098, "Reorder Tone"},
549     {0x0099, "Call Waiting Tone"},
550     {0x009A, "Confirmation Tone 1"},
551     {0x009B, "Confirmation Tone 2"},
552     {0x009C, "Tones Off"},
553     {0x00B0, "Phone Key 0"},
554     {0x00B1, "Phone Key 1"},
555     {0x00B2, "Phone Key 2"},
556     {0x00B3, "Phone Key 3"},
557     {0x00B4, "Phone Key 4"},
558     {0x00B5, "Phone Key 5"},
559     {0x00B6, "Phone Key 6"},
560     {0x00B7, "Phone Key 7"},
561     {0x00B8, "Phone Key 8"},
562     {0x00B9, "Phone Key 9"},
563     {0x00BA, "Phone Key Star"},
564     {0x00BB, "Phone Key Pound"},
565     {0x00BC, "Phone Key A"},
566     {0x00BD, "Phone Key B"},
567     {0x00BE, "Phone Key C"},
568     {0x00BF, "Phone Key D"},
569 
570     {0xFFFF, ""},
571 };
572 
573 struct hid_usage_types_string hid_usage_type00C[] = {
574     {0x0000, "Undefined"},
575     {0x0001, "Consumer Control"},
576     {0x0002, "Numeric Key Pad"},
577     {0x0003, "Programmable Buttons"},
578     {0x0004, "Microphone"},
579     {0x0005, "Headphone"},
580     {0x0006, "Graphic Equalizer"},
581     {0x0020, "+10"},
582     {0x0021, "+100"},
583     {0x0022, "AM/PM"},
584     {0x0030, "Power"},
585     {0x0031, "Reset"},
586     {0x0032, "Sleep"},
587     {0x0033, "Sleep After"},
588     {0x0034, "Sleep Mode"},
589     {0x0035, "Illumination"},
590     {0x0036, "Function Buttons"},
591     {0x0040, "Menu"},
592     {0x0041, "Menu Pick"},
593     {0x0042, "Menu Up"},
594     {0x0043, "Menu Down"},
595     {0x0044, "Menu Left"},
596     {0x0045, "Menu Right"},
597     {0x0046, "Menu Esc"},
598     {0x0047, "Menu Value Increase"},
599     {0x0048, "Menu Value Decrease"},
600     {0x0060, "Data On Screen"},
601     {0x0061, "Closed Caption"},
602     {0x0062, "Closed Caption Select"},
603     {0x0063, "VCR/TV"},
604     {0x0064, "Broadcast Mode"},
605     {0x0065, "Snap shot"},
606     {0x0066, "Still"},
607     {0x0080, "Selection"},
608     {0x0081, "Assign Selection"},
609     {0x0082, "Mode Setup"},
610     {0x0083, "Recal Last"},
611     {0x0084, "Enter Channel"},
612     {0x0085, "Order Movie"},
613     {0x0086, "Channel"},
614     {0x0087, "Media Selection"},
615     {0x0088, "Media Select Computer"},
616     {0x0089, "Media Select TV"},
617     {0x008A, "Media Select WWW"},
618     {0x008B, "Media Select DVD"},
619     {0x008C, "Media Select Telephone"},
620     {0x008D, "Media Select Program Guide"},
621     {0x008E, "Media Select Video Phone"},
622     {0x008F, "Media Select Games"},
623     {0x0090, "Media Select Messages"},
624     {0x0091, "Media Select CD"},
625     {0x0092, "Media Select VCR"},
626     {0x0093, "Media Select Tuner"},
627     {0x0094, "Quit"},
628     {0x0095, "Help"},
629     {0x0096, "Media Select Tape"},
630     {0x0097, "Media Select Cable"},
631     {0x0098, "Media Select Satelite"},
632     {0x0099, "Media Select Security"},
633     {0x009A, "Media Select Home"},
634     {0x009B, "Media Select Call"},
635     {0x009C, "Channel Increment"},
636     {0x009E, "Channel Decrement"},
637     {0x009D, "Media Select SAP"},
638     {0x009F, "Reserved"},
639     {0x00A0, "VCR Plus"},
640     {0x00A1, "Once"},
641     {0x00A2, "Daily"},
642     {0x00A3, "Weekly"},
643     {0x00A4, "Monthly"},
644     {0x00B0, "Play"},
645     {0x00B1, "Pause"},
646     {0x00B2, "Record"},
647     {0x00B3, "Fast Foward"},
648     {0x00B4, "Rewind"},
649     {0x00B5, "Scan Next Track"},
650     {0x00B6, "Scan Previous Track"},
651     {0x00B7, "Stop"},
652     {0x00B8, "Eject"},
653     {0x00B9, "Random Play"},
654     {0x00BA, "Select Disc"},
655     {0x00BB, "Enter Disk"},
656     {0x00BC, "Repeat"},
657     {0x00BD, "Tracking"},
658     {0x00BE, "Track Normal"},
659     {0x00BF, "Slow Tracking"},
660     {0x00C0, "Frame Forward"},
661     {0x00C1, "Frame Back"},
662     {0x00C2, "Mark"},
663     {0x00C3, "Clear Mark"},
664     {0x00C4, "Repeat from Mark"},
665     {0x00C5, "Return to Mark"},
666     {0x00C6, "Search Mark Forward"},
667     {0x00C7, "Search Mark Backwards"},
668     {0x00C8, "Counter Reset"},
669     {0x00C9, "Show Counter"},
670     {0x00CA, "Tracking Increment"},
671     {0x00CB, "Tracking Decrement"},
672     {0x00CC, "Stop/Eject"},
673     {0x00CD, "Play/Pause"},
674     {0x00CE, "Play/Skip"},
675     {0x00E0, "Volume"},
676     {0x00E1, "Balance"},
677     {0x00E2, "Mute"},
678     {0x00E3, "Bass"},
679     {0x00E4, "Treble"},
680     {0x00E5, "Bass Boost"},
681     {0x00E6, "Surround Mode"},
682     {0x00E7, "Loudness"},
683     {0x00E8, "MPX"},
684     {0x00E9, "Volume Increment"},
685     {0x00EA, "Volume Decrement"},
686     {0x00F0, "Speed Select"},
687     {0x00F1, "Playback Speed"},
688     {0x00F2, "Standard Play"},
689     {0x00F3, "Long Play"},
690     {0x00F4, "Extended Play"},
691     {0x00F5, "Slow"},
692     {0x0100, "Fan Enable"},
693     {0x0101, "Fan Speed"},
694     {0x0102, "Light Enable"},
695     {0x0103, "Light Illumination Level"},
696     {0x0104, "Climate Control Enable"},
697     {0x0105, "Room Temperature"},
698     {0x0106, "Security Enable"},
699     {0x0107, "Fire Alarm"},
700     {0x0108, "Police Alarm"},
701     {0x0109, "Proximity"},
702     {0x010A, "Motion"},
703     {0x010B, "Duress Alarm"},
704     {0x010C, "Holdup Alarm"},
705     {0x010D, "Medical Alarm"},
706     {0x0150, "Balance Right"},
707     {0x0151, "Balance Left"},
708     {0x0152, "Bass Increment"},
709     {0x0153, "Bass Decrement"},
710     {0x0154, "Treble Increment"},
711     {0x0155, "Trebel Decrement"},
712     {0x0160, "Speaker System"},
713     {0x0161, "Channel Left"},
714     {0x0162, "Channel Right"},
715     {0x0163, "Channel Center"},
716     {0x0164, "Channel Front"},
717     {0x0165, "Channel Center Front"},
718     {0x0166, "Channel Side"},
719     {0x0167, "Channel Surround"},
720     {0x0168, "Channel Low Freq Enhancement"},
721     {0x0169, "Channel Top"},
722     {0x016A, "Channel Unknown"},
723     {0x0170, "Sub-channel"},
724     {0x0171, "Sub-channel Increment"},
725     {0x0172, "Sub-channel Decrement"},
726     {0x0173, "Alternate Audio Increment"},
727     {0x0174, "Alternate Audio Decrement"},
728     {0x0180, "Application Launch"},
729     {0x0180, "App Launch: Config Tool"},
730     {0x0181, "App Launch: Launch Button Config"},
731     {0x0182, "App Launch: Programmable Button"},
732     {0x0183, "App Launch: Consumer Control"},
733     {0x0184, "App Launch: Word Processor"},
734     {0x0185, "App Launch: Text Editor"},
735     {0x0186, "App Launch: Spread Sheet"},
736     {0x0187, "App Launch: Graphics Editor"},
737     {0x0188, "App Launch: Presentation App"},
738     {0x0189, "App Launch: Database App"},
739     {0x018A, "App Launch: Email Reader"},
740     {0x018B, "App Launch: News Reader"},
741     {0x018C, "App Launch: Voice Mail"},
742     {0x018D, "App Launch: Contacts/Address Book"},
743     {0x018E, "App Launch: Calendar/Schedule Book"},
744     {0x018F, "App Launch: Task/Project Manager"},
745     {0x0190, "App Launch: Log/Journal/Time card"},
746     {0x0191, "App Launch: Checkbook/Finance"},
747     {0x0192, "App Launch: Calculator"},
748     {0x0193, "App Launch: A/V Capture/Playback"},
749     {0x0194, "App Launch: Local Machine Browser"},
750     {0x0195, "App Launch: LAN/WAN Browser"},
751     {0x0196, "App Launch: Internet Browser"},
752     {0x0197, "App Launch: Remote Networking"},
753     {0x0198, "App Launch: Network Conference"},
754     {0x0199, "App Launch: Network Chat"},
755     {0x019A, "App Launch: Telephone Dialer"},
756     {0x019B, "App Launch: Logon"},
757     {0x019C, "App Launch: Logoff"},
758     {0x019D, "App Launch: Logon/Logoff"},
759     {0x019E, "App Launch: Term Lock/Screensaver"},
760     {0x019F, "App Launch: Control Panel"},
761     {0x01A0, "App Launch: Command Line"},
762     {0x01A1, "App Launch: Process Task Manager"},
763     {0x01A2, "App Launch: Select Task/App"},
764     {0x01A3, "App Launch: Next Task/App"},
765     {0x01A4, "App Launch: Prev Task/App"},
766     {0x01A5, "App Launch: Premptive Halt"},
767     {0x01A6, "App Launch: Integrated Help Center"},
768     {0x01A7, "App Launch: Documents"},
769     {0x01A8, "App Launch: Thesarus"},
770     {0x01A9, "App Launch: Dictionary"},
771     {0x01AA, "App Launch: Desktop"},
772     {0x01AB, "App Launch: Spell Check"},
773     {0x01AC, "App Launch: Grammer Check"},
774     {0x01AD, "App Launch: Wireless Status"},
775     {0x01AE, "App Launch: Keyboard Layout"},
776     {0x01AF, "App Launch: Virus Protect"},
777     {0x01B0, "App Launch: Encryption"},
778     {0x01B1, "App Launch: Screen Saver"},
779     {0x01B2, "App Launch: Alarms"},
780     {0x01B3, "App Launch: Clock"},
781     {0x01B4, "App Launch: File Browser"},
782     {0x01B5, "App Launch: Power Status"},
783     {0x01B6, "App Launch: Image Browser"},
784     {0x01B7, "App Launch: Audio Browser"},
785     {0x01B8, "App Launch: Movie Browser"},
786     {0x01B9, "App Launch: Digital Rights Manager"},
787     {0x01BA, "App Launch: Digital Wallet"},
788     {0x01BB, "App Launch: Reserved"},
789     {0x01BC, "App Launch: Instant Messaging"},
790     {0x01BD, "App Launch: OEM Tools"},
791     {0x01BE, "App Launch: OEM Help"},
792     {0x01BF, "App Launch: Online Community"},
793     {0x01C0, "App Launch: Entertainment Content Browser"},
794     {0x01C1, "App Launch: Online Shopping Browser"},
795     {0x01C2, "App Launch: SmartCard Info"},
796     {0x01C3, "App Launch: Market Monitor"},
797     {0x01C4, "App Launch: Customized News"},
798     {0x01C5, "App Launch: Online Activity Browser"},
799     {0x01C6, "App Launch: Research/Search Browser"},
800     {0x01C7, "App Launch: Audio Player"},
801     {0x0200, "GUI Controls"},
802     {0x0201, "GUI: New"},
803     {0x0202, "GUI: Open"},
804     {0x0203, "GUI: Close"},
805     {0x0204, "GUI: Exit"},
806     {0x0205, "GUI: Maximize"},
807     {0x0206, "GUI: Minimize"},
808     {0x0207, "GUI: Save"},
809     {0x0208, "GUI: Print"},
810     {0x0209, "GUI: Properties"},
811     {0x021A, "GUI: Undo"},
812     {0x021B, "GUI: Copy"},
813     {0x021C, "GUI: Cut"},
814     {0x021D, "GUI: Paste"},
815     {0x021E, "GUI: Select All"},
816     {0x021F, "GUI: Find"},
817     {0x0220, "GUI: Find/Replace"},
818     {0x0221, "GUI: Search"},
819     {0x0222, "GUI: Goto"},
820     {0x0223, "GUI: Home"},
821     {0x0224, "GUI: Back"},
822     {0x0225, "GUI: Foward"},
823     {0x0226, "GUI: Stop"},
824     {0x0227, "GUI: Refresh"},
825     {0x0228, "GUI: Prev Link"},
826     {0x0229, "GUI: Next Link"},
827     {0x022A, "GUI: Bookmarks"},
828     {0x022B, "GUI: History"},
829     {0x022C, "GUI: Subscriptions"},
830     {0x022D, "GUI: Zoom In"},
831     {0x022E, "GUI: Zoom Out"},
832     {0x022F, "GUI: Zoom"},
833     {0x0230, "GUI: Full Screen"},
834     {0x0231, "GUI: Normal View"},
835     {0x0232, "GUI: View Toggle"},
836     {0x0233, "GUI: Scroll Up"},
837     {0x0234, "GUI: Scroll Down"},
838     {0x0235, "GUI: Scroll"},
839     {0x0236, "GUI: Pan Left"},
840     {0x0237, "GUI: Pan Right"},
841     {0x0238, "GUI: Pan"},
842     {0x0239, "GUI: New Window"},
843     {0x023A, "GUI: Tile Horz"},
844     {0x023B, "GUI: Tile Vert"},
845     {0x023C, "GUI: Format"},
846     {0x023D, "GUI: Edit"},
847     {0x023E, "GUI: Bold"},
848     {0x023F, "GUI: Italics"},
849     {0x0240, "GUI: Underline"},
850     {0x0241, "GUI: StrikeThrough"},
851     {0x0242, "GUI: SubScript"},
852     {0x0243, "GUI: SuperScript"},
853     {0x0244, "GUI: All Caps"},
854     {0x0245, "GUI: Rotate"},
855     {0x0246, "GUI: Resize"},
856     {0x0247, "GUI: Flip Horz"},
857     {0x0248, "GUI: Flip Vert"},
858     {0x0249, "GUI: Mirror Horz"},
859     {0x024A, "GUI: Mirror Vert"},
860     {0x024B, "GUI: Font Select"},
861     {0x024C, "GUI: Font Color"},
862     {0x024D, "GUI: Font Size"},
863     {0x024E, "GUI: Justify Left"},
864     {0x024F, "GUI: Justify Center H"},
865     {0x0250, "GUI: Justify Right"},
866     {0x0251, "GUI: Justify Block H"},
867     {0x0252, "GUI: Justify Top"},
868     {0x0253, "GUI: Justify Center V"},
869     {0x0254, "GUI: Justify Bottom"},
870     {0x0255, "GUI: Justify Block V"},
871     {0x0256, "GUI: Indent Decrease"},
872     {0x0257, "GUI: Indent Increase"},
873     {0x0258, "GUI: Numbered List"},
874     {0x0259, "GUI: Restart Numbering"},
875     {0x025A, "GUI: Bulleted List"},
876     {0x025B, "GUI: Promote"},
877     {0x025C, "GUI: Demote"},
878     {0x025D, "GUI: Yes"},
879     {0x025E, "GUI: No"},
880     {0x025F, "GUI: Cancel"},
881     {0x0260, "GUI: Catalog"},
882     {0x0261, "GUI: Buy/Checkout"},
883     {0x0262, "GUI: Add to Cart"},
884     {0x0263, "GUI: Expand"},
885     {0x0264, "GUI: Expand All"},
886     {0x0265, "GUI: Collapse"},
887     {0x0266, "GUI: Collapse All"},
888     {0x0267, "GUI: Print Preview"},
889     {0x0268, "GUI: Paste Special"},
890     {0x0269, "GUI: Insert Mode"},
891     {0x026A, "GUI: Delete"},
892     {0x026B, "GUI: Lock"},
893     {0x026C, "GUI: Unlock"},
894     {0x026D, "GUI: Protect"},
895     {0x026E, "GUI: Unprotect"},
896     {0x026F, "GUI: Attache Comment"},
897     {0x0270, "GUI: Delete Comment"},
898     {0x0271, "GUI: View Comment"},
899     {0x0272, "GUI: Select Word"},
900     {0x0273, "GUI: Select Sentence"},
901     {0x0274, "GUI: Select Paragraph"},
902     {0x0275, "GUI: Select Column"},
903     {0x0276, "GUI: Select Row"},
904     {0x0277, "GUI: Select Table"},
905     {0x0278, "GUI: Select Object"},
906     {0x0279, "GUI: Redo/Repeat"},
907     {0x027A, "GUI: Sort"},
908     {0x027B, "GUI: Sort Ascending"},
909     {0x027C, "GUI: Sort Descending"},
910     {0x027D, "GUI: Filter"},
911     {0x027E, "GUI: Set Clock"},
912     {0x027F, "GUI: View Clock"},
913     {0x0280, "GUI: Select Time Zone"},
914     {0x0281, "GUI: Edit Time Zone"},
915     {0x0282, "GUI: Set Alarm"},
916     {0x0283, "GUI: Clear Alarm"},
917     {0x0284, "GUI: Snooze Alarm"},
918     {0x0285, "GUI: Reset Alarm"},
919     {0x0286, "GUI: Synchronize"},
920     {0x0287, "GUI: Send/Receive"},
921     {0x0288, "GUI: Send To"},
922     {0x0289, "GUI: Reply"},
923     {0x028A, "GUI: Reply All"},
924     {0x028B, "GUI: Forward Message"},
925     {0x028C, "GUI: Send"},
926     {0x028D, "GUI: Attach File"},
927     {0x028E, "GUI: Upload"},
928     {0x028F, "GUI: Download"},
929     {0x0290, "GUI: Set Boards"},
930     {0x0291, "GUI: Insert Row"},
931     {0x0292, "GUI: Insert Column"},
932     {0x0293, "GUI: insert File"},
933     {0x0294, "GUI: Insert Picture"},
934     {0x0295, "GUI: Insert Object"},
935     {0x0296, "GUI: Insert Symbol"},
936     {0x0297, "GUI: Save and Close"},
937     {0x0298, "GUI: Rename"},
938     {0x0299, "GUI: Merge"},
939     {0x029A, "GUI: Split"},
940     {0x029B, "GUI: Distribute Horz"},
941     {0x029C, "GUI: Distribute Vert"},
942 
943     {0xFFFF, ""},
944 };
945 
946 struct hid_usage_types_string hid_usage_type00D[] = {
947     {0x0000, "Undefined"},
948     {0x0001, "Digitizer"},
949     {0x0002, "Pen"},
950     {0x0003, "Light Pen"},
951     {0x0004, "Touch Screen"},
952     {0x0005, "Touch Pad"},
953     {0x0006, "White Board"},
954     {0x0007, "Coordinate Measuring Machine"},
955     {0x0008, "3-D Digitizer"},
956     {0x0009, "Stereo Plotter"},
957     {0x000A, "Articulated Arm"},
958     {0x000B, "Armature"},
959     {0x000C, "Multiple Point Digitizer"},
960     {0x000D, "Free Space Wand"},
961     {0x0020, "Stylus"},
962     {0x0021, "Puck"},
963     {0x0022, "Finger"},
964     {0x0030, "Tip Pressure"},
965     {0x0031, "Barrel Pressure"},
966     {0x0032, "In Range"},
967     {0x0033, "Touch"},
968     {0x0034, "Untouch"},
969     {0x0035, "Tap"},
970     {0x0036, "Quality"},
971     {0x0037, "Data Valid"},
972     {0x0038, "Transducer Index"},
973     {0x0039, "Tablet Function Keys"},
974     {0x003A, "Program Change Keys"},
975     {0x003B, "Battery Strength"},
976     {0x003C, "Invert"},
977     {0x003D, "X Tilt"},
978     {0x003E, "Y Tilt"},
979     {0x003F, "Azimuth"},
980     {0x0040, "Altitude"},
981     {0x0041, "Twist"},
982     {0x0042, "Tip Switch"},
983     {0x0043, "Secondary Tip Switch"},
984     {0x0044, "Barrel Switch"},
985     {0x0045, "Eraser"},
986     {0x0046, "Tablet Pick"},
987 
988     {0xFFFF, ""},
989 };
990 
991 struct hid_usage_types_string hid_usage_type00F[] = {
992 
993     {0xFFFF, ""},
994 };
995 
996 struct hid_usage_types_string hid_usage_type014[] = {
997     {0x0000, "Undefined"},
998     {0x0001, "Alphanumeric Display"},
999     {0x0020, "Display Attributes Report"},
1000     {0x0021, "ASCII Character Set"},
1001     {0x0022, "Data Read Back"},
1002     {0x0023, "Font Read Back"},
1003     {0x0024, "Display Control Report"},
1004     {0x0025, "Clear Display"},
1005     {0x0026, "Display Enable"},
1006     {0x0027, "Screen Saver Delay"},
1007     {0x0028, "Screen Saver Enable"},
1008     {0x0029, "Vertical Scroll"},
1009     {0x002A, "Horizontal Scroll"},
1010     {0x002B, "Character Report"},
1011     {0x002C, "Display Data"},
1012     {0x002D, "Display Status"},
1013     {0x002E, "Stat Not Ready"},
1014     {0x002F, "Stat Ready"},
1015     {0x0030, "Err Not a loadable character"},
1016     {0x0031, "Err Font data cannot be read"},
1017     {0x0032, "Cursor Position Report"},
1018     {0x0033, "Row"},
1019     {0x0034, "Column"},
1020     {0x0035, "Rows"},
1021     {0x0036, "Columns"},
1022     {0x0037, "Cursor Pixel Positioning"},
1023     {0x0038, "Cursor Mode"},
1024     {0x0039, "Cursor Enable"},
1025     {0x003A, "Cursor Blink"},
1026     {0x003B, "Font Report"},
1027     {0x003C, "Font Data"},
1028     {0x003D, "Character Width"},
1029     {0x003E, "Character Height"},
1030     {0x003F, "Character Spacing Horizontal"},
1031     {0x0040, "Character Spacing Vertical"},
1032     {0x0041, "Unicode Character Set"},
1033 
1034     {0xFFFF, ""},
1035 };
1036 
1037 struct hid_usage_types_string hid_usage_type040[] = {
1038     {0x0000, "Undefined"},
1039     {0x0001, "Medical Ultrasound"},
1040     {0x0020, "VCR/Acquisition"},
1041     {0x0021, "Freeze/Thaw"},
1042     {0x0022, "Clip Store"},
1043     {0x0023, "Update"},
1044     {0x0024, "Next"},
1045     {0x0025, "Save"},
1046     {0x0026, "Print"},
1047     {0x0027, "Microphone Enable"},
1048     {0x0040, "Cine"},
1049     {0x0041, "Transmit Power"},
1050     {0x0042, "Volume"},
1051     {0x0043, "Focus"},
1052     {0x0044, "Depth"},
1053     {0x0060, "Soft Step - Primary"},
1054     {0x0061, "Soft Step - Secondary"},
1055     {0x0070, "Depth Gain Compensation"},
1056     {0x0080, "Zoom Select"},
1057     {0x0081, "Zoom Adjust"},
1058     {0x0082, "Spectral Doppler Mode Select"},
1059     {0x0083, "Spectral Doppler Adjust"},
1060     {0x0084, "Color Doppler Mode Select"},
1061     {0x0085, "Color Doppler Adjust"},
1062     {0x0086, "Motion Mode Select"},
1063     {0x0087, "Motion Mode Adjust"},
1064     {0x0088, "2-D Mode Select"},
1065     {0x0089, "2-D Mode Adjust"},
1066     {0x00A0, "Soft Control Select"},
1067     {0x00A1, "Soft Control Adjust"},
1068 
1069     {0xFFFF, ""},
1070 };
1071 
1072 struct hid_usage_types_string hid_usage_type080[] = {
1073     {0x0000, "Undefined"},
1074     {0x0001, "Monitor Control"},
1075     {0x0002, "EDID Information"},
1076     {0x0003, "VDIF Information"},
1077     {0x0004, "VESA Version"},
1078     {0x0005, "On Screen Display"},
1079     {0x0006, "Auto Size Center"},
1080     {0x0007, "Polarity Horz Synch"},
1081     {0x0008, "Polarity Vert Synch"},
1082     {0x0009, "Sync Type"},
1083     {0x000A, "Screen Position"},
1084     {0x000B, "Horizontal Frequency"},
1085     {0x000C, "Vertical Frequency"},
1086 
1087     {0xFFFF, ""},
1088 };
1089 
1090 struct hid_usage_types_string hid_usage_type082[] = {
1091     {0x0010, "Brightness"},
1092     {0x0012, "Contrast"},
1093     {0x0016, "Video Gain Red"},
1094     {0x0018, "Video Gain Green"},
1095     {0x001A, "Video Gain Blue"},
1096     {0x001C, "Focus"},
1097     {0x0020, "Horizontal Position"},
1098     {0x0022, "Horizontal Size"},
1099     {0x0024, "Horizontal Pincushion"},
1100     {0x0026, "Horizontal Pincushion Balance"},
1101     {0x0028, "Horizontal Misconvergence"},
1102     {0x002A, "Horizontal Linearity"},
1103     {0x002C, "Horizontal Linearity Balance"},
1104     {0x0030, "Vertical Position"},
1105     {0x0032, "Vertical Size"},
1106     {0x0034, "Vertical Pincushion"},
1107     {0x0036, "Vertical Pincushion Balance"},
1108     {0x0038, "Vertical Misconvergence"},
1109     {0x003A, "Vertical Linearity"},
1110     {0x003C, "Vertical Linearity Balance"},
1111     {0x0040, "Parallelogram Distortion"},
1112     {0x0042, "Trapezoidal Distortion"},
1113     {0x0044, "Tilt"},
1114     {0x0046, "Top Corner Distortion Control"},
1115     {0x0048, "Top Corner Distortion Balance"},
1116     {0x004A, "Bottom Corner Distortion Control"},
1117     {0x004C, "Bottom Corner Distortion Balance"},
1118     {0x0056, "Moir Horizontal"},
1119     {0x0058, "Moir Vertical"},
1120     {0x005E, "Input Level Select"},
1121     {0x0060, "Input Source Select"},
1122     {0x0062, "Stereo Mode"},
1123     {0x006C, "Video Black Level Red"},
1124     {0x006E, "Video Black Level Green"},
1125     {0x0070, "Video Black Level Blue"},
1126 
1127     {0xFFFF, ""},
1128 };
1129 
1130 struct hid_usage_types_string hid_usage_type083[] = {
1131     {0x0000, "Undefined"},
1132     {0x0001, "Settings"},
1133     {0x0002, "Degauss"},
1134 
1135     {0xFFFF, ""},
1136 };
1137 
1138 struct hid_usage_types_string hid_usage_type084[] = {
1139     {0x0000, "Undefined"},
1140     {0x0001, "iName"},
1141     {0x0002, "PresentStatus"},
1142     {0x0003, "ChangedStatus"},
1143     {0x0004, "UPS"},
1144     {0x0005, "PowerSupply"},
1145     {0x0010, "BatterySystem"},
1146     {0x0011, "BatterySystemID"},
1147     {0x0012, "Battery"},
1148     {0x0013, "BatteryID"},
1149     {0x0014, "Charger"},
1150     {0x0015, "ChargerID"},
1151     {0x0016, "PowerConverter"},
1152     {0x0017, "PowerConverterID"},
1153     {0x0018, "OutletSystem"},
1154     {0x0019, "OutletSystemID"},
1155     {0x001A, "Input"},
1156     {0x001B, "InputID"},
1157     {0x001C, "Output"},
1158     {0x001D, "OutputID"},
1159     {0x001E, "Flow"},
1160     {0x001F, "FlowID"},
1161     {0x0020, "Outlet"},
1162     {0x0021, "OutletID"},
1163     {0x0022, "Gang"},
1164     {0x0023, "GangID"},
1165     {0x0024, "Sink"},
1166     {0x0025, "SinkID"},
1167     {0x0030, "Voltage"},
1168     {0x0031, "Current"},
1169     {0x0032, "Frequency"},
1170     {0x0033, "ApparentPower"},
1171     {0x0034, "ActivePower"},
1172     {0x0035, "PercentLoad"},
1173     {0x0036, "Temperature"},
1174     {0x0037, "Humidity"},
1175     {0x0040, "ConfigVoltage"},
1176     {0x0041, "ConfigCurrent"},
1177     {0x0042, "ConfigFrequency"},
1178     {0x0043, "ConfigApparentPower"},
1179     {0x0044, "ConfigActivePower"},
1180     {0x0045, "ConfigPercentLoad"},
1181     {0x0046, "ConfigTemperature"},
1182     {0x0047, "ConfigHumidity"},
1183     {0x0050, "SwitchOnControl"},
1184     {0x0051, "SwitchOffControl"},
1185     {0x0052, "ToggleControl"},
1186     {0x0053, "LowVoltageTransfer"},
1187     {0x0054, "HighVoltageTransfer"},
1188     {0x0055, "DelayBeforeReboot"},
1189     {0x0056, "DelayBeforeStartup"},
1190     {0x0057, "DelayBeforeShutdown"},
1191     {0x0058, "Test"},
1192     {0x0059, "Vendorspecificcommand"},
1193     {0x0060, "Present"},
1194     {0x0061, "Good"},
1195     {0x0062, "InternalFailure"},
1196     {0x0063, "VoltageOutOfRange"},
1197     {0x0064, "FrequencyOutOfRange"},
1198     {0x0065, "Overload"},
1199     {0x0066, "OverCharged"},
1200     {0x0067, "OverTemperature"},
1201     {0x0068, "ShutdownRequested"},
1202     {0x0069, "ShutdownImminent"},
1203     {0x006A, "VendorSpecificAnswerValid"},
1204     {0x006B, "SwitchOn/Off"},
1205     {0x006C, "Switcheble"},
1206     {0x006D, "Used"},
1207     {0x006E, "Boost"},
1208     {0x006F, "Buck"},
1209     {0x0070, "Initialized"},
1210     {0x0071, "Tested"},
1211 
1212     {0xFFFF, ""},
1213 };
1214 
1215 struct hid_usage_types_string hid_usage_type085[] = {
1216     {0x0000, "Undefined"},
1217     {0x0001, "SMBBatteryMode"},
1218     {0x0002, "SMBBatteryStatus"},
1219     {0x0003, "SMBAlarmWarning"},
1220     {0x0004, "SMBChargerMode"},
1221     {0x0005, "SMBChargerStatus"},
1222     {0x0006, "SMBChargerSpecInfo"},
1223     {0x0007, "SMBSelectorState"},
1224     {0x0008, "SMBSelectorPreset"},
1225     {0x0009, "SMBSelectorInfo"},
1226     {0x0010, "OptionalMfgFunction1"},
1227     {0x0011, "OptionalMfgFunction2"},
1228     {0x0012, "OptionalMfgFunction3"},
1229     {0x0013, "OptionalMfgFunction4"},
1230     {0x0014, "OptionalMfgFunction5"},
1231     {0x0015, "ConnectionToSMBus"},
1232     {0x0016, "OutputConnection"},
1233     {0x0017, "ChargerConnection"},
1234     {0x0018, "BatteryInsertion"},
1235     {0x0019, "Usenext"},
1236     {0x001A, "OKToUse"},
1237     {0x0028, "ManufacturerAccess"},
1238     {0x0029, "RemainingCapacityLimit"},
1239     {0x002A, "RemainingTimeLimit"},
1240     {0x002B, "AtRate"},
1241     {0x002C, "CapacityMode"},
1242     {0x002D, "BroadcastToCharger"},
1243     {0x002E, "PrimaryBattery"},
1244     {0x002F, "ChargeController"},
1245     {0x0040, "TerminateCharge"},
1246     {0x0041, "TermminateDischarge"},
1247     {0x0042, "BelowRemainingCapacityLimit"},
1248     {0x0043, "RemainingTimeLimitExpired"},
1249     {0x0044, "Charging"},
1250     {0x0045, "Discharging"},
1251     {0x0046, "FullyCharged"},
1252     {0x0047, "FullyDischarged"},
1253     {0x0048, "ConditionningFlag"},
1254     {0x0049, "AtRateOK"},
1255     {0x004A, "SMBErrorCode"},
1256     {0x004B, "NeedReplacement"},
1257     {0x0060, "AtRateTimeToFull"},
1258     {0x0061, "AtRateTimeToEmpty"},
1259     {0x0062, "AverageCurrent"},
1260     {0x0063, "Maxerror"},
1261     {0x0064, "RelativeStateOfCharge"},
1262     {0x0065, "AbsoluteStateOfCharge"},
1263     {0x0066, "RemainingCapacity"},
1264     {0x0067, "FullChargeCapacity"},
1265     {0x0068, "RunTimeToEmpty"},
1266     {0x0069, "AverageTimeToEmpty"},
1267     {0x006A, "AverageTimeToFull"},
1268     {0x006B, "CycleCount"},
1269     {0x0080, "BattPackModelLevel"},
1270     {0x0081, "InternalChargeController"},
1271     {0x0082, "PrimaryBatterySupport"},
1272     {0x0083, "DesignCapacity"},
1273     {0x0084, "SpecificationInfo"},
1274     {0x0085, "ManufacturerDate"},
1275     {0x0086, "SerialNumber"},
1276     {0x0087, "iManufacturerName"},
1277     {0x0088, "iDevicename"},
1278     {0x0089, "iDeviceChemistery"},
1279     {0x008A, "iManufacturerData"},
1280     {0x008B, "Rechargeable"},
1281     {0x008C, "WarningCapacityLimit"},
1282     {0x008D, "CapacityGranularity1"},
1283     {0x008E, "CapacityGranularity2"},
1284     {0x00C0, "InhibitCharge"},
1285     {0x00C1, "EnablePolling"},
1286     {0x00C2, "ResetToZero"},
1287     {0x00D0, "ACPresent"},
1288     {0x00D1, "BatteryPresent"},
1289     {0x00D2, "PowerFail"},
1290     {0x00D3, "AlarmInhibited"},
1291     {0x00D4, "ThermistorUnderRange"},
1292     {0x00D5, "ThermistorHot"},
1293     {0x00D6, "ThermistorCold"},
1294     {0x00D7, "ThermistorOverRange"},
1295     {0x00D8, "VoltageOutOfRange"},
1296     {0x00D9, "CurrentOutOfRange"},
1297     {0x00DA, "CurrentNotRegulated"},
1298     {0x00DB, "VoltageNotRegulated"},
1299     {0x00DC, "MasterMode"},
1300     {0x00DD, "ChargerBattery/HostControlled"},
1301     {0x00F0, "ChargerSpecInfo"},
1302     {0x00F1, "ChargerSpecRef"},
1303     {0x00F2, "Level2"},
1304     {0x00F3, "Level3"},
1305 
1306     {0xFFFF, ""},
1307 };
1308 
1309 struct hid_usage_types_string hid_usage_type086[] = {
1310 
1311     {0xFFFF, ""},
1312 };
1313 
1314 struct hid_usage_types_string hid_usage_type087[] = {
1315 
1316     {0xFFFF, ""},
1317 };
1318 
1319 struct hid_usage_types_string hid_usage_type08C[] = {
1320 
1321     {0xFFFF, ""},
1322 };
1323 
1324 struct hid_usage_types_string hid_usage_type08D[] = {
1325 
1326     {0xFFFF, ""},
1327 };
1328 
1329 struct hid_usage_types_string hid_usage_type08E[] = {
1330 
1331     {0xFFFF, ""},
1332 };
1333 
1334 struct hid_usage_types_string hid_usage_type08F[] = {
1335 
1336     {0xFFFF, ""},
1337 };
1338 
1339 struct hid_usage_types_string hid_usage_type090[] = {
1340 
1341     {0xFFFF, ""},
1342 };
1343 
1344 struct hid_usage_types_string hid_usage_type091[] = {
1345 
1346     {0xFFFF, ""},
1347 };
1348 
1349 /*
1350 struct S_USAGE_TYPES_STR usage_typeF1F2[] = {
1351   { 0x0000, "?????0000" },
1352   { 0x0001, "?????1111" },
1353 
1354   { 0xFFFF, "" }
1355 };
1356 */
1357 
1358 struct hid_usage_types_string hid_usage_typeFF00[] = {
1359     {0x00E9, "Base Up"},
1360     {0x00EA, "Base Down"},
1361 
1362     {0xFFFF, ""},
1363 };
1364 
1365 struct hid_usage_types_string hid_usage_typeFF84[] = {
1366     {0x0000, "Undefined"},
1367     {0x0001, "iName"},
1368     {0x0002, "PresentStatus"},
1369     {0x0003, "ChangedStatus"},
1370     {0x0004, "UPS"},
1371     {0x0005, "PowerSupply"},
1372     {0x0010, "BatterySystem"},
1373     {0x0011, "BatterySystemID"},
1374     {0x0012, "Battery"},
1375     {0x0013, "BatteryID"},
1376     {0x0014, "Charger"},
1377     {0x0015, "ChargerID"},
1378     {0x0016, "PowerConverter"},
1379     {0x0017, "PowerConverterID"},
1380     {0x0018, "OutletSystem"},
1381     {0x0019, "OutletSystemID"},
1382     {0x001A, "Input"},
1383     {0x001B, "InputID"},
1384     {0x001C, "Output"},
1385     {0x001D, "OutputID"},
1386     {0x001E, "Flow"},
1387     {0x001F, "FlowID"},
1388     {0x0020, "Outlet"},
1389     {0x0021, "OutletID"},
1390     {0x0022, "Gang"},
1391     {0x0023, "GangID"},
1392     {0x0024, "Sink"},
1393     {0x0025, "SinkID"},
1394     {0x0030, "Voltage"},
1395     {0x0031, "Current"},
1396     {0x0032, "Frequency"},
1397     {0x0033, "ApparentPower"},
1398     {0x0034, "ActivePower"},
1399     {0x0035, "PercentLoad"},
1400     {0x0036, "Temperature"},
1401     {0x0037, "Humidity"},
1402     {0x0040, "ConfigVoltage"},
1403     {0x0041, "ConfigCurrent"},
1404     {0x0042, "ConfigFrequency"},
1405     {0x0043, "ConfigApparentPower"},
1406     {0x0044, "ConfigActivePower"},
1407     {0x0045, "ConfigPercentLoad"},
1408     {0x0046, "ConfigTemperature"},
1409     {0x0047, "ConfigHumidity"},
1410     {0x0050, "SwitchOnControl"},
1411     {0x0051, "SwitchOffControl"},
1412     {0x0052, "ToggleControl"},
1413     {0x0053, "LowVoltageTransfer"},
1414     {0x0054, "HighVoltageTransfer"},
1415     {0x0055, "DelayBeforeReboot"},
1416     {0x0056, "DelayBeforeStartup"},
1417     {0x0057, "DelayBeforeShutdown"},
1418     {0x0058, "Test"},
1419     {0x0059, "Vendorspecificcommand"},
1420     {0x0060, "Present"},
1421     {0x0061, "Good"},
1422     {0x0062, "InternalFailure"},
1423     {0x0063, "VoltageOutOfRange"},
1424     {0x0064, "FrequencyOutOfRange"},
1425     {0x0065, "Overload"},
1426     {0x0066, "OverCharged"},
1427     {0x0067, "OverTemperature"},
1428     {0x0068, "ShutdownRequested"},
1429     {0x0069, "ShutdownImminent"},
1430     {0x006A, "VendorSpecificAnswerValid"},
1431     {0x006B, "SwitchOn/Off"},
1432     {0x006C, "Switcheble"},
1433     {0x006D, "Used"},
1434     {0x006E, "Boost"},
1435     {0x006F, "Buck"},
1436     {0x0070, "Initialized"},
1437     {0x0071, "Tested"},
1438 
1439     {0xFFFF, ""},
1440 };
1441 
1442 struct hid_usage_types_string hid_usage_typeFF85[] = {
1443     {0x0000, "Undefined"},
1444     {0x0001, "SMBBatteryMode"},
1445     {0x0002, "SMBBatteryStatus"},
1446     {0x0003, "SMBAlarmWarning"},
1447     {0x0004, "SMBChargerMode"},
1448     {0x0005, "SMBChargerStatus"},
1449     {0x0006, "SMBChargerSpecInfo"},
1450     {0x0007, "SMBSelectorState"},
1451     {0x0008, "SMBSelectorPreset"},
1452     {0x0009, "SMBSelectorInfo"},
1453     {0x0010, "OptionalMfgFunction1"},
1454     {0x0011, "OptionalMfgFunction2"},
1455     {0x0012, "OptionalMfgFunction3"},
1456     {0x0013, "OptionalMfgFunction4"},
1457     {0x0014, "OptionalMfgFunction5"},
1458     {0x0015, "ConnectionToSMBus"},
1459     {0x0016, "OutputConnection"},
1460     {0x0017, "ChargerConnection"},
1461     {0x0018, "BatteryInsertion"},
1462     {0x0019, "Usenext"},
1463     {0x001A, "OKToUse"},
1464     {0x0028, "ManufacturerAccess"},
1465     {0x0029, "RemainingCapacityLimit"},
1466     {0x002A, "RemainingTimeLimit"},
1467     {0x002B, "AtRate"},
1468     {0x002C, "CapacityMode"},
1469     {0x002D, "BroadcastToCharger"},
1470     {0x002E, "PrimaryBattery"},
1471     {0x002F, "ChargeController"},
1472     {0x0040, "TerminateCharge"},
1473     {0x0041, "TermminateDischarge"},
1474     {0x0042, "BelowRemainingCapacityLimit"},
1475     {0x0043, "RemainingTimeLimitExpired"},
1476     {0x0044, "Charging"},
1477     {0x0045, "Discharging"},
1478     {0x0046, "FullyCharged"},
1479     {0x0047, "FullyDischarged"},
1480     {0x0048, "ConditionningFlag"},
1481     {0x0049, "AtRateOK"},
1482     {0x004A, "SMBErrorCode"},
1483     {0x004B, "NeedReplacement"},
1484     {0x0060, "AtRateTimeToFull"},
1485     {0x0061, "AtRateTimeToEmpty"},
1486     {0x0062, "AverageCurrent"},
1487     {0x0063, "Maxerror"},
1488     {0x0064, "RelativeStateOfCharge"},
1489     {0x0065, "AbsoluteStateOfCharge"},
1490     {0x0066, "RemainingCapacity"},
1491     {0x0067, "FullChargeCapacity"},
1492     {0x0068, "RunTimeToEmpty"},
1493     {0x0069, "AverageTimeToEmpty"},
1494     {0x006A, "AverageTimeToFull"},
1495     {0x006B, "CycleCount"},
1496     {0x0080, "BattPackModelLevel"},
1497     {0x0081, "InternalChargeController"},
1498     {0x0082, "PrimaryBatterySupport"},
1499     {0x0083, "DesignCapacity"},
1500     {0x0084, "SpecificationInfo"},
1501     {0x0085, "ManufacturerDate"},
1502     {0x0086, "SerialNumber"},
1503     {0x0087, "iManufacturerName"},
1504     {0x0088, "iDevicename"},
1505     {0x0089, "iDeviceChemistery"},
1506     {0x008A, "iManufacturerData"},
1507     {0x008B, "Rechargeable"},
1508     {0x008C, "WarningCapacityLimit"},
1509     {0x008D, "CapacityGranularity1"},
1510     {0x008E, "CapacityGranularity2"},
1511     {0x00C0, "InhibitCharge"},
1512     {0x00C1, "EnablePolling"},
1513     {0x00C2, "ResetToZero"},
1514     {0x00D0, "ACPresent"},
1515     {0x00D1, "BatteryPresent"},
1516     {0x00D2, "PowerFail"},
1517     {0x00D3, "AlarmInhibited"},
1518     {0x00D4, "ThermistorUnderRange"},
1519     {0x00D5, "ThermistorHot"},
1520     {0x00D6, "ThermistorCold"},
1521     {0x00D7, "ThermistorOverRange"},
1522     {0x00D8, "VoltageOutOfRange"},
1523     {0x00D9, "CurrentOutOfRange"},
1524     {0x00DA, "CurrentNotRegulated"},
1525     {0x00DB, "VoltageNotRegulated"},
1526     {0x00DC, "MasterMode"},
1527     {0x00DD, "ChargerBattery/HostControlled"},
1528     {0x00F0, "ChargerSpecInfo"},
1529     {0x00F1, "ChargerSpecRef"},
1530     {0x00F2, "Level2"},
1531     {0x00F3, "Level3"},
1532 
1533     {0xFFFF, ""},
1534 };
1535 
1536 // Usage Pages
1537 struct hid_usage_pages_string hid_usage_page_strings[] = {
1538     {0x0000, NULL, "Undefined"},
1539     {0x0001, hid_usage_type001, "Generic Desktop"},
1540     {0x0002, hid_usage_type002, "Simulation"},
1541     {0x0003, hid_usage_type003, "Virtual Reality"},
1542     {0x0004, hid_usage_type004, "Sport"},
1543     {0x0005, hid_usage_type005, "Game"},
1544     {0x0006, hid_usage_type006, "Generic Device"},
1545     {0x0007, hid_usage_type007, "Keyboard/Keypad"},
1546     {0x0008, hid_usage_type008, "LEDs"},
1547     {0x0009, NULL, "Button"},
1548     {0x000A, NULL, "Ordinal"},
1549     {0x000B, hid_usage_type00B, "Telephony"},
1550     {0x000C, hid_usage_type00C, "Consumer"},
1551     {0x000D, hid_usage_type00D, "Digitizer"},
1552     {0x000F, hid_usage_type00F, "PID Page"},
1553     {0x0010, NULL, "Unicode"},
1554     {0x0014, hid_usage_type014, "Alphanumeric Display"},
1555     {0x0040, hid_usage_type040, "Meidcal Insturments"},
1556     {0x0080, hid_usage_type080, "Monitor Pages"},
1557     {0x0081, NULL, "Monitor Pages"},
1558     {0x0082, hid_usage_type082, "Monitor Pages"},
1559     {0x0083, hid_usage_type083, "Monitor Pages"},
1560     {0x0084, hid_usage_type084, "Power Pages"},
1561     {0x0085, hid_usage_type085, "Power Pages"},
1562     {0x0086, hid_usage_type086, "Power Pages"},
1563     {0x0087, hid_usage_type087, "Power Pages"},
1564     {0x008C, hid_usage_type08C, "Barcode Scanner"},
1565     {0x008D, hid_usage_type08D, "Scale"},
1566     {0x008E, hid_usage_type08E, "Magnetic Stripe Reading (MSR) Devices"},
1567     {0x008F, hid_usage_type08F, "Reserved Point of Sale"},
1568     {0x0090, hid_usage_type090, "Camera Control"},
1569     {0x0091, hid_usage_type091, "Arcade"},
1570     //{ 0xF1F2, hid_usage_typeF1F2, "??????" },  // unknown:  I have a MOSART Semi Wireless Mouse that uses this Upage
1571     {0xFF00, hid_usage_typeFF00, "MS Non-Standard"},
1572     {0xFF84, hid_usage_typeFF84, "APC Non-Standard"},
1573     {0xFF85, hid_usage_typeFF85, "APC Non-Standard"},
1574 
1575     {0xFFFF, NULL, ""},
1576 };
1577 
1578 char hid_collection_str[][64] = {
1579     "Physical", "Application", "Logical", "Report", "Named Array", "Usage Switch", "Usage Modifier",
1580 };