"Fossies" - the Fresh Open Source Software Archive

Member "usbutils-015/usb-spec.h" (22 Feb 2021, 73875 Bytes) of package /linux/misc/usbutils-015.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "usb-spec.h" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 013_vs_014.

    1 // SPDX-License-Identifier: GPL-2.0-or-later
    2 /*
    3  * USB specification data
    4  *
    5  * Copyright (C) 2013 Tom Gundersen <teg@jklm.no>
    6  */
    7 
    8 #ifndef _USB_SPEC_H
    9 #define _USB_SPEC_H
   10 
   11 /* ---------------------------------------------------------------------- */
   12 
   13 struct audioterminal {
   14        struct audioterminal *next;
   15        const uint16_t termt;
   16        const char *name;
   17 };
   18 
   19 struct videoterminal {
   20        struct videoterminal *next;
   21        const uint16_t termt;
   22        const char *name;
   23 };
   24 
   25 struct genericstrtable {
   26        struct genericstrtable *next;
   27        const unsigned int num;
   28        const char *name;
   29 };
   30 
   31 /* ---------------------------------------------------------------------- */
   32 
   33 static struct audioterminal audioterminals[] =
   34 {
   35         { NULL, 0x0100, "USB Undefined" },
   36         { NULL, 0x0101, "USB Streaming" },
   37         { NULL, 0x01ff, "USB Vendor Specific" },
   38         { NULL, 0x0200, "Input Undefined" },
   39         { NULL, 0x0201, "Microphone" },
   40         { NULL, 0x0202, "Desktop Microphone" },
   41         { NULL, 0x0203, "Personal Microphone" },
   42         { NULL, 0x0204, "Omni-directional Microphone" },
   43         { NULL, 0x0205, "Microphone Array" },
   44         { NULL, 0x0206, "Processing Microphone Array" },
   45         { NULL, 0x0300, "Output Undefined" },
   46         { NULL, 0x0301, "Speaker" },
   47         { NULL, 0x0302, "Headphones" },
   48         { NULL, 0x0303, "Head Mounted Display Audio" },
   49         { NULL, 0x0304, "Desktop Speaker" },
   50         { NULL, 0x0305, "Room Speaker" },
   51         { NULL, 0x0306, "Communication Speaker" },
   52         { NULL, 0x0307, "Low Frequency Effects Speaker" },
   53         { NULL, 0x0400, "Bidirectional Undefined" },
   54         { NULL, 0x0401, "Handset" },
   55         { NULL, 0x0402, "Headset" },
   56         { NULL, 0x0403, "Speakerphone, no echo reduction" },
   57         { NULL, 0x0404, "Echo-suppressing speakerphone" },
   58         { NULL, 0x0405, "Echo-canceling speakerphone" },
   59         { NULL, 0x0500, "Telephony Undefined" },
   60         { NULL, 0x0501, "Phone line" },
   61         { NULL, 0x0502, "Telephone" },
   62         { NULL, 0x0503, "Down Line Phone" },
   63         { NULL, 0x0600, "External Undefined" },
   64         { NULL, 0x0601, "Analog Connector" },
   65         { NULL, 0x0602, "Digital Audio Interface" },
   66         { NULL, 0x0603, "Line Connector" },
   67         { NULL, 0x0604, "Legacy Audio Connector" },
   68         { NULL, 0x0605, "SPDIF interface" },
   69         { NULL, 0x0606, "1394 DA stream" },
   70         { NULL, 0x0607, "1394 DV stream soundtrack" },
   71         { NULL, 0x0700, "Embedded Undefined" },
   72         { NULL, 0x0701, "Level Calibration Noise Source" },
   73         { NULL, 0x0702, "Equalization Noise" },
   74         { NULL, 0x0703, "CD Player" },
   75         { NULL, 0x0704, "DAT" },
   76         { NULL, 0x0705, "DCC" },
   77         { NULL, 0x0706, "MiniDisc" },
   78         { NULL, 0x0707, "Analog Tape" },
   79         { NULL, 0x0708, "Phonograph" },
   80         { NULL, 0x0709, "VCR Audio" },
   81         { NULL, 0x070a, "Video Disc Audio" },
   82         { NULL, 0x070b, "DVD Audio" },
   83         { NULL, 0x070c, "TV Tuner Audio" },
   84         { NULL, 0x070d, "Satellite Receiver Audio" },
   85         { NULL, 0x070e, "Cable Tuner Audio" },
   86         { NULL, 0x070f, "DSS Audio" },
   87         { NULL, 0x0710, "Radio Receiver" },
   88         { NULL, 0x0711, "Radio Transmitter" },
   89         { NULL, 0x0712, "Multitrack Recorder" },
   90         { NULL, 0x0713, "Synthesizer" },
   91     { NULL },
   92 };
   93 
   94 static struct videoterminal videoterminals[] =
   95 {
   96         { NULL, 0x0100, "USB Vendor Specific" },
   97         { NULL, 0x0101, "USB Streaming" },
   98         { NULL, 0x0200, "Input Vendor Specific" },
   99         { NULL, 0x0201, "Camera Sensor" },
  100         { NULL, 0x0202, "Sequential Media" },
  101         { NULL, 0x0300, "Output Vendor Specific" },
  102         { NULL, 0x0301, "Generic Display" },
  103         { NULL, 0x0302, "Sequential Media" },
  104         { NULL, 0x0400, "External Vendor Specific" },
  105         { NULL, 0x0401, "Composite Video" },
  106         { NULL, 0x0402, "S-Video" },
  107         { NULL, 0x0403, "Component Video" },
  108     { NULL },
  109 };
  110 
  111 static struct genericstrtable hiddescriptors[] =
  112 {
  113         { NULL, 0x21, "HID" },
  114         { NULL, 0x22, "Report" },
  115         { NULL, 0x23, "Physical" },
  116     { NULL },
  117 };
  118 
  119 static struct genericstrtable reports[] =
  120 {
  121         { NULL, 0x04, "Usage Page" },
  122         { NULL, 0x08, "Usage" },
  123         { NULL, 0x14, "Logical Minimum" },
  124         { NULL, 0x18, "Usage Minimum" },
  125         { NULL, 0x24, "Logical Maximum" },
  126         { NULL, 0x28, "Usage Maximum" },
  127         { NULL, 0x34, "Physical Minimum" },
  128         { NULL, 0x38, "Designator Index" },
  129         { NULL, 0x44, "Physical Maximum" },
  130         { NULL, 0x48, "Designator Minimum" },
  131         { NULL, 0x54, "Unit Exponent" },
  132         { NULL, 0x58, "Designator Maximum" },
  133         { NULL, 0x64, "Unit" },
  134         { NULL, 0x74, "Report Size" },
  135         { NULL, 0x78, "String Index" },
  136         { NULL, 0x80, "Input" },
  137         { NULL, 0x84, "Report ID" },
  138         { NULL, 0x88, "String Minimum" },
  139         { NULL, 0x90, "Output" },
  140         { NULL, 0x94, "Report Count" },
  141         { NULL, 0x98, "String Maximum" },
  142         { NULL, 0xa0, "Collection" },
  143         { NULL, 0xa4, "Push" },
  144         { NULL, 0xa8, "Delimiter" },
  145         { NULL, 0xb0, "Feature" },
  146         { NULL, 0xb4, "Pop" },
  147         { NULL, 0xc0, "End Collection" },
  148     { NULL },
  149 };
  150 
  151 static struct genericstrtable huts[] =
  152 {
  153         { NULL, 0x00, "Undefined" },
  154         { NULL, 0x01, "Generic Desktop Controls" },
  155         { NULL, 0x02, "Simulation Controls" },
  156         { NULL, 0x03, "VR Controls" },
  157         { NULL, 0x04, "Sport Controls" },
  158         { NULL, 0x05, "Game Controls" },
  159         { NULL, 0x07, "Keyboard" },
  160         { NULL, 0x08, "LEDs" },
  161         { NULL, 0x09, "Buttons" },
  162         { NULL, 0x0a, "Ordinal" },
  163         { NULL, 0x0b, "Telephony" },
  164         { NULL, 0x0c, "Consumer" },
  165         { NULL, 0x0d, "Digitizer" },
  166         { NULL, 0x0f, "PID Page" },
  167         { NULL, 0x10, "Unicode" },
  168         { NULL, 0x14, "Alphanumeric Display" },
  169         { NULL, 0x80, "USB Monitor" },
  170         { NULL, 0x81, "USB Monitor Enumerated Values" },
  171         { NULL, 0x82, "Monitor VESA Virtual Controls" },
  172         { NULL, 0x84, "Power Device Page" },
  173         { NULL, 0x85, "Battery System Page" },
  174         { NULL, 0x86, "Power Pages" },
  175         { NULL, 0x87, "Power Pages" },
  176         { NULL, 0x8c, "Bar Code Scanner Page (POS)" },
  177         { NULL, 0x8d, "Scale Page (POS)" },
  178         { NULL, 0x90, "Camera Control Page" },
  179         { NULL, 0x91, "Arcade Control Page" },
  180         { NULL, 0xf0, "Cash Device" },
  181         { NULL, 0xff, "Vendor Specific" },
  182     { NULL },
  183 };
  184 
  185 static struct genericstrtable biass[] =
  186 {
  187         { NULL, 0x0, "Not Applicable" },
  188         { NULL, 0x1, "Right Hand" },
  189         { NULL, 0x2, "Left Hand" },
  190         { NULL, 0x3, "Both Hands" },
  191         { NULL, 0x4, "Either Hand" },
  192     { NULL },
  193 };
  194 
  195 static struct genericstrtable physdess[] =
  196 {
  197         { NULL, 0x00, "None" },
  198         { NULL, 0x01, "Hand" },
  199         { NULL, 0x02, "Eyeball" },
  200         { NULL, 0x03, "Eyebrow" },
  201         { NULL, 0x04, "Eyelid" },
  202         { NULL, 0x05, "Ear" },
  203         { NULL, 0x06, "Nose" },
  204         { NULL, 0x07, "Mouth" },
  205         { NULL, 0x08, "Upper Lip" },
  206         { NULL, 0x09, "Lower Lip" },
  207         { NULL, 0x0a, "Jaw" },
  208         { NULL, 0x0b, "Neck" },
  209         { NULL, 0x0c, "Upper Arm" },
  210         { NULL, 0x0d, "Elbow" },
  211         { NULL, 0x0e, "Forearm" },
  212         { NULL, 0x0f, "Wrist" },
  213         { NULL, 0x10, "Palm" },
  214         { NULL, 0x11, "Thumb" },
  215         { NULL, 0x12, "Index Finger" },
  216         { NULL, 0x13, "Middle Finger" },
  217         { NULL, 0x14, "Ring Finger" },
  218         { NULL, 0x15, "Little Finger" },
  219         { NULL, 0x16, "Head" },
  220         { NULL, 0x17, "Shoulder" },
  221         { NULL, 0x18, "Hip" },
  222         { NULL, 0x19, "Waist" },
  223         { NULL, 0x1a, "Thigh" },
  224         { NULL, 0x1b, "Knee" },
  225         { NULL, 0x1c, "calf" },
  226         { NULL, 0x1d, "Ankle" },
  227         { NULL, 0x1e, "Foot" },
  228         { NULL, 0x1f, "Heel" },
  229         { NULL, 0x20, "Ball of Foot" },
  230         { NULL, 0x21, "Big Toe" },
  231         { NULL, 0x22, "Second Toe" },
  232         { NULL, 0x23, "Third Toe" },
  233         { NULL, 0x24, "Fourth Toe" },
  234         { NULL, 0x25, "Fifth Toe" },
  235         { NULL, 0x26, "Brow" },
  236         { NULL, 0x27, "Cheek" },
  237     { NULL },
  238 };
  239 
  240 /* HUT usage specs are represented as:
  241  *  (huttype << 16) + hutus
  242  */
  243 static struct genericstrtable hutus[] =
  244 {
  245     { NULL, (0x01 << 16) + 0x000, "Undefined" },
  246     { NULL, (0x01 << 16) + 0x001, "Pointer" },
  247     { NULL, (0x01 << 16) + 0x002, "Mouse" },
  248     { NULL, (0x01 << 16) + 0x004, "Joystick" },
  249     { NULL, (0x01 << 16) + 0x005, "Gamepad" },
  250     { NULL, (0x01 << 16) + 0x006, "Keyboard" },
  251     { NULL, (0x01 << 16) + 0x007, "Keypad" },
  252     { NULL, (0x01 << 16) + 0x008, "Multi-Axis Controller" },
  253     { NULL, (0x01 << 16) + 0x030, "Direction-X" },
  254     { NULL, (0x01 << 16) + 0x031, "Direction-Y" },
  255     { NULL, (0x01 << 16) + 0x032, "Direction-Z" },
  256     { NULL, (0x01 << 16) + 0x033, "Rotate-X" },
  257     { NULL, (0x01 << 16) + 0x034, "Rotate-Y" },
  258     { NULL, (0x01 << 16) + 0x035, "Rotate-Z" },
  259     { NULL, (0x01 << 16) + 0x036, "Slider" },
  260     { NULL, (0x01 << 16) + 0x037, "Dial" },
  261     { NULL, (0x01 << 16) + 0x038, "Wheel" },
  262     { NULL, (0x01 << 16) + 0x039, "Hat Switch" },
  263     { NULL, (0x01 << 16) + 0x03a, "Counted Buffer" },
  264     { NULL, (0x01 << 16) + 0x03b, "Byte Count" },
  265     { NULL, (0x01 << 16) + 0x03c, "Motion Wakeup" },
  266     { NULL, (0x01 << 16) + 0x03d, "Start" },
  267     { NULL, (0x01 << 16) + 0x03e, "Select" },
  268     { NULL, (0x01 << 16) + 0x040, "Vector-X" },
  269     { NULL, (0x01 << 16) + 0x041, "Vector-Y" },
  270     { NULL, (0x01 << 16) + 0x042, "Vector-Z" },
  271     { NULL, (0x01 << 16) + 0x043, "Vector-X relative Body" },
  272     { NULL, (0x01 << 16) + 0x044, "Vector-Y relative Body" },
  273     { NULL, (0x01 << 16) + 0x045, "Vector-Z relative Body" },
  274     { NULL, (0x01 << 16) + 0x046, "Vector" },
  275     { NULL, (0x01 << 16) + 0x080, "System Control" },
  276     { NULL, (0x01 << 16) + 0x081, "System Power Down" },
  277     { NULL, (0x01 << 16) + 0x082, "System Sleep" },
  278     { NULL, (0x01 << 16) + 0x083, "System Wake Up" },
  279     { NULL, (0x01 << 16) + 0x084, "System Context Menu" },
  280     { NULL, (0x01 << 16) + 0x085, "System Main Menu" },
  281     { NULL, (0x01 << 16) + 0x086, "System App Menu" },
  282     { NULL, (0x01 << 16) + 0x087, "System Menu Help" },
  283     { NULL, (0x01 << 16) + 0x088, "System Menu Exit" },
  284     { NULL, (0x01 << 16) + 0x089, "System Menu Select" },
  285     { NULL, (0x01 << 16) + 0x08a, "System Menu Right" },
  286     { NULL, (0x01 << 16) + 0x08b, "System Menu Left" },
  287     { NULL, (0x01 << 16) + 0x08c, "System Menu Up" },
  288     { NULL, (0x01 << 16) + 0x08d, "System Menu Down" },
  289     { NULL, (0x01 << 16) + 0x090, "Direction Pad Up" },
  290     { NULL, (0x01 << 16) + 0x091, "Direction Pad Down" },
  291     { NULL, (0x01 << 16) + 0x092, "Direction Pad Right" },
  292     { NULL, (0x01 << 16) + 0x093, "Direction Pad Left" },
  293     { NULL, (0x02 << 16) + 0x000, "Undefined" },
  294     { NULL, (0x02 << 16) + 0x001, "Flight Simulation Device" },
  295     { NULL, (0x02 << 16) + 0x002, "Automobile Simulation Device" },
  296     { NULL, (0x02 << 16) + 0x003, "Tank Simulation Device" },
  297     { NULL, (0x02 << 16) + 0x004, "Spaceship Simulation Device" },
  298     { NULL, (0x02 << 16) + 0x005, "Submarine Simulation Device" },
  299     { NULL, (0x02 << 16) + 0x006, "Sailing Simulation Device" },
  300     { NULL, (0x02 << 16) + 0x007, "Motorcycle Simulation Device" },
  301     { NULL, (0x02 << 16) + 0x008, "Sports Simulation Device" },
  302     { NULL, (0x02 << 16) + 0x009, "Airplane Simualtion Device" },
  303     { NULL, (0x02 << 16) + 0x00a, "Helicopter Simulation Device" },
  304     { NULL, (0x02 << 16) + 0x00b, "Magic Carpet Simulation Device" },
  305     { NULL, (0x02 << 16) + 0x00c, "Bicycle Simulation Device" },
  306     { NULL, (0x02 << 16) + 0x020, "Flight Control Stick" },
  307     { NULL, (0x02 << 16) + 0x021, "Flight Stick" },
  308     { NULL, (0x02 << 16) + 0x022, "Cyclic Control" },
  309     { NULL, (0x02 << 16) + 0x023, "Cyclic Trim" },
  310     { NULL, (0x02 << 16) + 0x024, "Flight Yoke" },
  311     { NULL, (0x02 << 16) + 0x025, "Track Control" },
  312     { NULL, (0x02 << 16) + 0x0b0, "Aileron" },
  313     { NULL, (0x02 << 16) + 0x0b1, "Aileron Trim" },
  314     { NULL, (0x02 << 16) + 0x0b2, "Anti-Torque Control" },
  315     { NULL, (0x02 << 16) + 0x0b3, "Autopilot Enable" },
  316     { NULL, (0x02 << 16) + 0x0b4, "Chaff Release" },
  317     { NULL, (0x02 << 16) + 0x0b5, "Collective Control" },
  318     { NULL, (0x02 << 16) + 0x0b6, "Dive Break" },
  319     { NULL, (0x02 << 16) + 0x0b7, "Electronic Countermeasures" },
  320     { NULL, (0x02 << 16) + 0x0b8, "Elevator" },
  321     { NULL, (0x02 << 16) + 0x0b9, "Elevator Trim" },
  322     { NULL, (0x02 << 16) + 0x0ba, "Rudder" },
  323     { NULL, (0x02 << 16) + 0x0bb, "Throttle" },
  324     { NULL, (0x02 << 16) + 0x0bc, "Flight COmmunications" },
  325     { NULL, (0x02 << 16) + 0x0bd, "Flare Release" },
  326     { NULL, (0x02 << 16) + 0x0be, "Landing Gear" },
  327     { NULL, (0x02 << 16) + 0x0bf, "Toe Break" },
  328     { NULL, (0x02 << 16) + 0x0c0, "Trigger" },
  329     { NULL, (0x02 << 16) + 0x0c1, "Weapon Arm" },
  330     { NULL, (0x02 << 16) + 0x0c2, "Weapons Select" },
  331     { NULL, (0x02 << 16) + 0x0c3, "Wing Flaps" },
  332     { NULL, (0x02 << 16) + 0x0c4, "Accelerator" },
  333     { NULL, (0x02 << 16) + 0x0c5, "Brake" },
  334     { NULL, (0x02 << 16) + 0x0c6, "Clutch" },
  335     { NULL, (0x02 << 16) + 0x0c7, "Shifter" },
  336     { NULL, (0x02 << 16) + 0x0c8, "Steering" },
  337     { NULL, (0x02 << 16) + 0x0c9, "Turret Direction" },
  338     { NULL, (0x02 << 16) + 0x0ca, "Barrel Elevation" },
  339     { NULL, (0x02 << 16) + 0x0cb, "Drive Plane" },
  340     { NULL, (0x02 << 16) + 0x0cc, "Ballast" },
  341     { NULL, (0x02 << 16) + 0x0cd, "Bicylce Crank" },
  342     { NULL, (0x02 << 16) + 0x0ce, "Handle Bars" },
  343     { NULL, (0x02 << 16) + 0x0cf, "Front Brake" },
  344     { NULL, (0x02 << 16) + 0x0d0, "Rear Brake" },
  345     { NULL, (0x03 << 16) + 0x000, "Unidentified" },
  346     { NULL, (0x03 << 16) + 0x001, "Belt" },
  347     { NULL, (0x03 << 16) + 0x002, "Body Suit" },
  348     { NULL, (0x03 << 16) + 0x003, "Flexor" },
  349     { NULL, (0x03 << 16) + 0x004, "Glove" },
  350     { NULL, (0x03 << 16) + 0x005, "Head Tracker" },
  351     { NULL, (0x03 << 16) + 0x006, "Head Mounted Display" },
  352     { NULL, (0x03 << 16) + 0x007, "Hand Tracker" },
  353     { NULL, (0x03 << 16) + 0x008, "Oculometer" },
  354     { NULL, (0x03 << 16) + 0x009, "Vest" },
  355     { NULL, (0x03 << 16) + 0x00a, "Animatronic Device" },
  356     { NULL, (0x03 << 16) + 0x020, "Stereo Enable" },
  357     { NULL, (0x03 << 16) + 0x021, "Display Enable" },
  358     { NULL, (0x04 << 16) + 0x000, "Unidentified" },
  359     { NULL, (0x04 << 16) + 0x001, "Baseball Bat" },
  360     { NULL, (0x04 << 16) + 0x002, "Golf Club" },
  361     { NULL, (0x04 << 16) + 0x003, "Rowing Machine" },
  362     { NULL, (0x04 << 16) + 0x004, "Treadmill" },
  363     { NULL, (0x04 << 16) + 0x030, "Oar" },
  364     { NULL, (0x04 << 16) + 0x031, "Slope" },
  365     { NULL, (0x04 << 16) + 0x032, "Rate" },
  366     { NULL, (0x04 << 16) + 0x033, "Stick Speed" },
  367     { NULL, (0x04 << 16) + 0x034, "Stick Face Angle" },
  368     { NULL, (0x04 << 16) + 0x035, "Stick Heel/Toe" },
  369     { NULL, (0x04 << 16) + 0x036, "Stick Follow Through" },
  370     { NULL, (0x04 << 16) + 0x038, "Stick Type" },
  371     { NULL, (0x04 << 16) + 0x039, "Stick Height" },
  372     { NULL, (0x04 << 16) + 0x047, "Stick Temp" },
  373     { NULL, (0x04 << 16) + 0x050, "Putter" },
  374     { NULL, (0x04 << 16) + 0x051, "1 Iron" },
  375     { NULL, (0x04 << 16) + 0x052, "2 Iron" },
  376     { NULL, (0x04 << 16) + 0x053, "3 Iron" },
  377     { NULL, (0x04 << 16) + 0x054, "4 Iron" },
  378     { NULL, (0x04 << 16) + 0x055, "5 Iron" },
  379     { NULL, (0x04 << 16) + 0x056, "6 Iron" },
  380     { NULL, (0x04 << 16) + 0x057, "7 Iron" },
  381     { NULL, (0x04 << 16) + 0x058, "8 Iron" },
  382     { NULL, (0x04 << 16) + 0x059, "9 Iron" },
  383     { NULL, (0x04 << 16) + 0x05a, "10 Iron" },
  384     { NULL, (0x04 << 16) + 0x05b, "11 Iron" },
  385     { NULL, (0x04 << 16) + 0x05c, "Sand Wedge" },
  386     { NULL, (0x04 << 16) + 0x05d, "Loft Wedge" },
  387     { NULL, (0x04 << 16) + 0x05e, "Power Wedge" },
  388     { NULL, (0x04 << 16) + 0x05f, "1 Wood" },
  389     { NULL, (0x04 << 16) + 0x060, "3 Wood" },
  390     { NULL, (0x04 << 16) + 0x061, "5 Wood" },
  391     { NULL, (0x04 << 16) + 0x062, "7 Wood" },
  392     { NULL, (0x04 << 16) + 0x063, "9 Wood" },
  393     { NULL, (0x05 << 16) + 0x000, "Undefined" },
  394     { NULL, (0x05 << 16) + 0x001, "3D Game Controller" },
  395     { NULL, (0x05 << 16) + 0x002, "Pinball Device" },
  396     { NULL, (0x05 << 16) + 0x003, "Gun Device" },
  397     { NULL, (0x05 << 16) + 0x020, "Point Of View" },
  398     { NULL, (0x05 << 16) + 0x021, "Turn Right/Left" },
  399     { NULL, (0x05 << 16) + 0x022, "Pitch Right/Left" },
  400     { NULL, (0x05 << 16) + 0x023, "Roll Forward/Backward" },
  401     { NULL, (0x05 << 16) + 0x024, "Move Right/Left" },
  402     { NULL, (0x05 << 16) + 0x025, "Move Forward/Backward" },
  403     { NULL, (0x05 << 16) + 0x026, "Move Up/Down" },
  404     { NULL, (0x05 << 16) + 0x027, "Lean Right/Left" },
  405     { NULL, (0x05 << 16) + 0x028, "Lean Forward/Backward" },
  406     { NULL, (0x05 << 16) + 0x029, "Height of POV" },
  407     { NULL, (0x05 << 16) + 0x02a, "Flipper" },
  408     { NULL, (0x05 << 16) + 0x02b, "Secondary Flipper" },
  409     { NULL, (0x05 << 16) + 0x02c, "Bump" },
  410     { NULL, (0x05 << 16) + 0x02d, "New Game" },
  411     { NULL, (0x05 << 16) + 0x02e, "Shoot Ball" },
  412     { NULL, (0x05 << 16) + 0x02f, "Player" },
  413     { NULL, (0x05 << 16) + 0x030, "Gun Bolt" },
  414     { NULL, (0x05 << 16) + 0x031, "Gun Clip" },
  415     { NULL, (0x05 << 16) + 0x032, "Gun Selector" },
  416     { NULL, (0x05 << 16) + 0x033, "Gun Single Shot" },
  417     { NULL, (0x05 << 16) + 0x034, "Gun Burst" },
  418     { NULL, (0x05 << 16) + 0x035, "Gun Automatic" },
  419     { NULL, (0x05 << 16) + 0x036, "Gun Safety" },
  420     { NULL, (0x05 << 16) + 0x037, "Gamepad Fire/Jump" },
  421     { NULL, (0x05 << 16) + 0x038, "Gamepad Fun" },
  422     { NULL, (0x05 << 16) + 0x039, "Gamepad Trigger" },
  423     { NULL, (0x07 << 16) + 0x000, "No Event" },
  424     { NULL, (0x07 << 16) + 0x001, "Keyboard ErrorRollOver" },
  425     { NULL, (0x07 << 16) + 0x002, "Keyboard POSTfail" },
  426     { NULL, (0x07 << 16) + 0x003, "Keyboard Error Undefined" },
  427     { NULL, (0x07 << 16) + 0x004, "A" },
  428     { NULL, (0x07 << 16) + 0x005, "B" },
  429     { NULL, (0x07 << 16) + 0x006, "C" },
  430     { NULL, (0x07 << 16) + 0x007, "D" },
  431     { NULL, (0x07 << 16) + 0x008, "E" },
  432     { NULL, (0x07 << 16) + 0x009, "F" },
  433     { NULL, (0x07 << 16) + 0x00a, "G" },
  434     { NULL, (0x07 << 16) + 0x00b, "H" },
  435     { NULL, (0x07 << 16) + 0x00c, "I" },
  436     { NULL, (0x07 << 16) + 0x00d, "J" },
  437     { NULL, (0x07 << 16) + 0x00e, "K" },
  438     { NULL, (0x07 << 16) + 0x00f, "L" },
  439     { NULL, (0x07 << 16) + 0x010, "M" },
  440     { NULL, (0x07 << 16) + 0x011, "N" },
  441     { NULL, (0x07 << 16) + 0x012, "O" },
  442     { NULL, (0x07 << 16) + 0x013, "P" },
  443     { NULL, (0x07 << 16) + 0x014, "Q" },
  444     { NULL, (0x07 << 16) + 0x015, "R" },
  445     { NULL, (0x07 << 16) + 0x016, "S" },
  446     { NULL, (0x07 << 16) + 0x017, "T" },
  447     { NULL, (0x07 << 16) + 0x018, "U" },
  448     { NULL, (0x07 << 16) + 0x019, "V" },
  449     { NULL, (0x07 << 16) + 0x01a, "W" },
  450     { NULL, (0x07 << 16) + 0x01b, "X" },
  451     { NULL, (0x07 << 16) + 0x01c, "Y" },
  452     { NULL, (0x07 << 16) + 0x01d, "Z" },
  453     { NULL, (0x07 << 16) + 0x01e, "1 and ! (One and Exclamation)" },
  454     { NULL, (0x07 << 16) + 0x01f, "2 and @ (2 and at)" },
  455     { NULL, (0x07 << 16) + 0x020, "3 and # (3 and Hash)" },
  456     { NULL, (0x07 << 16) + 0x021, "4 and $ (4 and Dollar Sign)" },
  457     { NULL, (0x07 << 16) + 0x022, "5 and % (5 and Percent Sign)" },
  458     { NULL, (0x07 << 16) + 0x023, "6 and ^ (6 and circumflex)" },
  459     { NULL, (0x07 << 16) + 0x024, "7 and & (Seven and Ampersand)" },
  460     { NULL, (0x07 << 16) + 0x025, "8 and * (Eight and asterisk)" },
  461     { NULL, (0x07 << 16) + 0x026, "9 and ( (Nine and Parenthesis Left)" },
  462     { NULL, (0x07 << 16) + 0x027, "0 and ) (Zero and Parenthesis Right)" },
  463     { NULL, (0x07 << 16) + 0x028, "Return (Enter)" },
  464     { NULL, (0x07 << 16) + 0x029, "Escape" },
  465     { NULL, (0x07 << 16) + 0x02a, "Delete (Backspace)" },
  466     { NULL, (0x07 << 16) + 0x02b, "Tab" },
  467     { NULL, (0x07 << 16) + 0x02c, "Space Bar" },
  468     { NULL, (0x07 << 16) + 0x02d, "- and _ (Minus and underscore)" },
  469     { NULL, (0x07 << 16) + 0x02e, "= and + (Equal and Plus)" },
  470     { NULL, (0x07 << 16) + 0x02f, "[ and { (Bracket and Braces Left)" },
  471     { NULL, (0x07 << 16) + 0x030, "] and } (Bracket and Braces Right)" },
  472     { NULL, (0x07 << 16) + 0x031, "\\ and | (Backslash and Bar)" },
  473     { NULL, (0x07 << 16) + 0x032, "# and ~ (Hash and Tilde, Non-US Keyboard near right shift)" },
  474     { NULL, (0x07 << 16) + 0x033, "; and : (Semicolon and Colon)" },
  475     { NULL, (0x07 << 16) + 0x034, "ยด and \" (Accent Acute and Double Quotes)" },
  476     { NULL, (0x07 << 16) + 0x035, "` and ~ (Accent Grace and Tilde)" },
  477     { NULL, (0x07 << 16) + 0x036, ", and < (Comma and Less)" },
  478     { NULL, (0x07 << 16) + 0x037, ". and > (Period and Greater)" },
  479     { NULL, (0x07 << 16) + 0x038, "/ and ? (Slash and Question Mark)" },
  480     { NULL, (0x07 << 16) + 0x039, "Caps Lock" },
  481     { NULL, (0x07 << 16) + 0x03a, "F1" },
  482     { NULL, (0x07 << 16) + 0x03b, "F2" },
  483     { NULL, (0x07 << 16) + 0x03c, "F3" },
  484     { NULL, (0x07 << 16) + 0x03d, "F4" },
  485     { NULL, (0x07 << 16) + 0x03e, "F5" },
  486     { NULL, (0x07 << 16) + 0x03f, "F6" },
  487     { NULL, (0x07 << 16) + 0x040, "F7" },
  488     { NULL, (0x07 << 16) + 0x041, "F8" },
  489     { NULL, (0x07 << 16) + 0x042, "F9" },
  490     { NULL, (0x07 << 16) + 0x043, "F10" },
  491     { NULL, (0x07 << 16) + 0x044, "F11" },
  492     { NULL, (0x07 << 16) + 0x045, "F12" },
  493     { NULL, (0x07 << 16) + 0x046, "Print Screen" },
  494     { NULL, (0x07 << 16) + 0x047, "Scroll Lock" },
  495     { NULL, (0x07 << 16) + 0x048, "Pause" },
  496     { NULL, (0x07 << 16) + 0x049, "Insert" },
  497     { NULL, (0x07 << 16) + 0x04a, "Home" },
  498     { NULL, (0x07 << 16) + 0x04b, "Page Up" },
  499     { NULL, (0x07 << 16) + 0x04c, "Delete Forward (without Changing Position)" },
  500     { NULL, (0x07 << 16) + 0x04d, "End" },
  501     { NULL, (0x07 << 16) + 0x04e, "Page Down" },
  502     { NULL, (0x07 << 16) + 0x04f, "Right Arrow" },
  503     { NULL, (0x07 << 16) + 0x050, "Left Arrow" },
  504     { NULL, (0x07 << 16) + 0x051, "Down Arrow" },
  505     { NULL, (0x07 << 16) + 0x052, "Up Arrow" },
  506     { NULL, (0x07 << 16) + 0x053, "Num Lock and Clear" },
  507     { NULL, (0x07 << 16) + 0x054, "Keypad / (Division Sign)" },
  508     { NULL, (0x07 << 16) + 0x055, "Keypad * (Multiplication Sign)" },
  509     { NULL, (0x07 << 16) + 0x056, "Keypad - (Subtraction Sign)" },
  510     { NULL, (0x07 << 16) + 0x057, "Keypad + (Addition Sign)" },
  511     { NULL, (0x07 << 16) + 0x058, "Keypad Enter" },
  512     { NULL, (0x07 << 16) + 0x059, "Keypad 1 and END" },
  513     { NULL, (0x07 << 16) + 0x05a, "Keypad 2 and Down Arrow" },
  514     { NULL, (0x07 << 16) + 0x05b, "Keypad 3 and Page Down" },
  515     { NULL, (0x07 << 16) + 0x05c, "Keypad 4 and Left Arrow" },
  516     { NULL, (0x07 << 16) + 0x05d, "Keypad 5 (Tactilei Raised)" },
  517     { NULL, (0x07 << 16) + 0x05f, "Keypad 6 and Right Arrow" },
  518     { NULL, (0x07 << 16) + 0x060, "Keypad 7 and Home" },
  519     { NULL, (0x07 << 16) + 0x061, "Keypad 8 and Up Arrow" },
  520     { NULL, (0x07 << 16) + 0x062, "Keypad 8 and Page Up" },
  521     { NULL, (0x07 << 16) + 0x063, "Keypad . (decimal delimiter) and Delete" },
  522     { NULL, (0x07 << 16) + 0x064, "\\ and | (Backslash and Bar, UK and Non-US Keyboard near left shift)" },
  523     { NULL, (0x07 << 16) + 0x065, "Keyboard Application (Windows Key for Win95 or Compose)" },
  524     { NULL, (0x07 << 16) + 0x066, "Power (not a key)" },
  525     { NULL, (0x07 << 16) + 0x067, "Keypad = (Equal Sign)" },
  526     { NULL, (0x07 << 16) + 0x068, "F13" },
  527     { NULL, (0x07 << 16) + 0x069, "F14" },
  528     { NULL, (0x07 << 16) + 0x06a, "F15" },
  529     { NULL, (0x07 << 16) + 0x06b, "F16" },
  530     { NULL, (0x07 << 16) + 0x06c, "F17" },
  531     { NULL, (0x07 << 16) + 0x06d, "F18" },
  532     { NULL, (0x07 << 16) + 0x06e, "F19" },
  533     { NULL, (0x07 << 16) + 0x06f, "F20" },
  534     { NULL, (0x07 << 16) + 0x070, "F21" },
  535     { NULL, (0x07 << 16) + 0x071, "F22" },
  536     { NULL, (0x07 << 16) + 0x072, "F23" },
  537     { NULL, (0x07 << 16) + 0x073, "F24" },
  538     { NULL, (0x07 << 16) + 0x074, "Execute" },
  539     { NULL, (0x07 << 16) + 0x075, "Help" },
  540     { NULL, (0x07 << 16) + 0x076, "Menu" },
  541     { NULL, (0x07 << 16) + 0x077, "Select" },
  542     { NULL, (0x07 << 16) + 0x078, "Stop" },
  543     { NULL, (0x07 << 16) + 0x079, "Again" },
  544     { NULL, (0x07 << 16) + 0x07a, "Undo" },
  545     { NULL, (0x07 << 16) + 0x07b, "Cut" },
  546     { NULL, (0x07 << 16) + 0x07c, "Copy" },
  547     { NULL, (0x07 << 16) + 0x07d, "Paste" },
  548     { NULL, (0x07 << 16) + 0x07e, "Find" },
  549     { NULL, (0x07 << 16) + 0x07f, "Mute" },
  550     { NULL, (0x07 << 16) + 0x080, "Volume Up" },
  551     { NULL, (0x07 << 16) + 0x081, "Volume Down" },
  552     { NULL, (0x07 << 16) + 0x082, "Locking Caps Lock" },
  553     { NULL, (0x07 << 16) + 0x083, "Locking Num Lock" },
  554     { NULL, (0x07 << 16) + 0x084, "Locking Scroll Lock" },
  555     { NULL, (0x07 << 16) + 0x085, "Keypad Comma" },
  556     { NULL, (0x07 << 16) + 0x086, "Keypad Equal Sign (AS/400)" },
  557     { NULL, (0x07 << 16) + 0x087, "International 1 (PC98)" },
  558     { NULL, (0x07 << 16) + 0x088, "International 2 (PC98)" },
  559     { NULL, (0x07 << 16) + 0x089, "International 3 (PC98)" },
  560     { NULL, (0x07 << 16) + 0x08a, "International 4 (PC98)" },
  561     { NULL, (0x07 << 16) + 0x08b, "International 5 (PC98)" },
  562     { NULL, (0x07 << 16) + 0x08c, "International 6 (PC98)" },
  563     { NULL, (0x07 << 16) + 0x08d, "International 7 (Toggle Single/Double Byte Mode)" },
  564     { NULL, (0x07 << 16) + 0x08e, "International 8" },
  565     { NULL, (0x07 << 16) + 0x08f, "International 9" },
  566     { NULL, (0x07 << 16) + 0x090, "LANG 1 (Hangul/English Toggle, Korea)" },
  567     { NULL, (0x07 << 16) + 0x091, "LANG 2 (Hanja Conversion, Korea)" },
  568     { NULL, (0x07 << 16) + 0x092, "LANG 3 (Katakana, Japan)" },
  569     { NULL, (0x07 << 16) + 0x093, "LANG 4 (Hiragana, Japan)" },
  570     { NULL, (0x07 << 16) + 0x094, "LANG 5 (Zenkaku/Hankaku, Japan)" },
  571     { NULL, (0x07 << 16) + 0x095, "LANG 6" },
  572     { NULL, (0x07 << 16) + 0x096, "LANG 7" },
  573     { NULL, (0x07 << 16) + 0x097, "LANG 8" },
  574     { NULL, (0x07 << 16) + 0x098, "LANG 9" },
  575     { NULL, (0x07 << 16) + 0x099, "Alternate Erase" },
  576     { NULL, (0x07 << 16) + 0x09a, "SysReq/Attention" },
  577     { NULL, (0x07 << 16) + 0x09b, "Cancel" },
  578     { NULL, (0x07 << 16) + 0x09c, "Clear" },
  579     { NULL, (0x07 << 16) + 0x09d, "Prior" },
  580     { NULL, (0x07 << 16) + 0x09e, "Return" },
  581     { NULL, (0x07 << 16) + 0x09f, "Separator" },
  582     { NULL, (0x07 << 16) + 0x0a0, "Out" },
  583     { NULL, (0x07 << 16) + 0x0a1, "Open" },
  584     { NULL, (0x07 << 16) + 0x0a2, "Clear/Again" },
  585     { NULL, (0x07 << 16) + 0x0a3, "CrSel/Props" },
  586     { NULL, (0x07 << 16) + 0x0a4, "ExSel" },
  587     { NULL, (0x07 << 16) + 0x0e0, "Control Left" },
  588     { NULL, (0x07 << 16) + 0x0e1, "Shift Left" },
  589     { NULL, (0x07 << 16) + 0x0e2, "Alt Left" },
  590     { NULL, (0x07 << 16) + 0x0e3, "GUI Left" },
  591     { NULL, (0x07 << 16) + 0x0e4, "Control Right" },
  592     { NULL, (0x07 << 16) + 0x0e5, "Shift Right" },
  593     { NULL, (0x07 << 16) + 0x0e6, "Alt Rigth" },
  594     { NULL, (0x07 << 16) + 0x0e7, "GUI Right" },
  595     { NULL, (0x08 << 16) + 0x000, "Undefined" },
  596     { NULL, (0x08 << 16) + 0x001, "NumLock" },
  597     { NULL, (0x08 << 16) + 0x002, "CapsLock" },
  598     { NULL, (0x08 << 16) + 0x003, "Scroll Lock" },
  599     { NULL, (0x08 << 16) + 0x004, "Compose" },
  600     { NULL, (0x08 << 16) + 0x005, "Kana" },
  601     { NULL, (0x08 << 16) + 0x006, "Power" },
  602     { NULL, (0x08 << 16) + 0x007, "Shift" },
  603     { NULL, (0x08 << 16) + 0x008, "Do not disturb" },
  604     { NULL, (0x08 << 16) + 0x009, "Mute" },
  605     { NULL, (0x08 << 16) + 0x00a, "Tone Enabke" },
  606     { NULL, (0x08 << 16) + 0x00b, "High Cut Filter" },
  607     { NULL, (0x08 << 16) + 0x00c, "Low Cut Filter" },
  608     { NULL, (0x08 << 16) + 0x00d, "Equalizer Enable" },
  609     { NULL, (0x08 << 16) + 0x00e, "Sound Field ON" },
  610     { NULL, (0x08 << 16) + 0x00f, "Surround On" },
  611     { NULL, (0x08 << 16) + 0x010, "Repeat" },
  612     { NULL, (0x08 << 16) + 0x011, "Stereo" },
  613     { NULL, (0x08 << 16) + 0x012, "Sampling Rate Detect" },
  614     { NULL, (0x08 << 16) + 0x013, "Spinning" },
  615     { NULL, (0x08 << 16) + 0x014, "CAV" },
  616     { NULL, (0x08 << 16) + 0x015, "CLV" },
  617     { NULL, (0x08 << 16) + 0x016, "Recording Format Detect" },
  618     { NULL, (0x08 << 16) + 0x017, "Off-Hook" },
  619     { NULL, (0x08 << 16) + 0x018, "Ring" },
  620     { NULL, (0x08 << 16) + 0x019, "Message Waiting" },
  621     { NULL, (0x08 << 16) + 0x01a, "Data Mode" },
  622     { NULL, (0x08 << 16) + 0x01b, "Battery Operation" },
  623     { NULL, (0x08 << 16) + 0x01c, "Battery OK" },
  624     { NULL, (0x08 << 16) + 0x01d, "Battery Low" },
  625     { NULL, (0x08 << 16) + 0x01e, "Speaker" },
  626     { NULL, (0x08 << 16) + 0x01f, "Head Set" },
  627     { NULL, (0x08 << 16) + 0x020, "Hold" },
  628     { NULL, (0x08 << 16) + 0x021, "Microphone" },
  629     { NULL, (0x08 << 16) + 0x022, "Coverage" },
  630     { NULL, (0x08 << 16) + 0x023, "Night Mode" },
  631     { NULL, (0x08 << 16) + 0x024, "Send Calls" },
  632     { NULL, (0x08 << 16) + 0x025, "Call Pickup" },
  633     { NULL, (0x08 << 16) + 0x026, "Conference" },
  634     { NULL, (0x08 << 16) + 0x027, "Stand-by" },
  635     { NULL, (0x08 << 16) + 0x028, "Camera On" },
  636     { NULL, (0x08 << 16) + 0x029, "Camera Off" },
  637     { NULL, (0x08 << 16) + 0x02a, "On-Line" },
  638     { NULL, (0x08 << 16) + 0x02b, "Off-Line" },
  639     { NULL, (0x08 << 16) + 0x02c, "Busy" },
  640     { NULL, (0x08 << 16) + 0x02d, "Ready" },
  641     { NULL, (0x08 << 16) + 0x02e, "Paper-Out" },
  642     { NULL, (0x08 << 16) + 0x02f, "Paper-Jam" },
  643     { NULL, (0x08 << 16) + 0x030, "Remote" },
  644     { NULL, (0x08 << 16) + 0x031, "Forward" },
  645     { NULL, (0x08 << 16) + 0x032, "Reverse" },
  646     { NULL, (0x08 << 16) + 0x033, "Stop" },
  647     { NULL, (0x08 << 16) + 0x034, "Rewind" },
  648     { NULL, (0x08 << 16) + 0x035, "Fast Forward" },
  649     { NULL, (0x08 << 16) + 0x036, "Play" },
  650     { NULL, (0x08 << 16) + 0x037, "Pause" },
  651     { NULL, (0x08 << 16) + 0x038, "Record" },
  652     { NULL, (0x08 << 16) + 0x039, "Error" },
  653     { NULL, (0x08 << 16) + 0x03a, "Usage Selected Indicator" },
  654     { NULL, (0x08 << 16) + 0x03b, "Usage In Use Indicator" },
  655     { NULL, (0x08 << 16) + 0x03c, "Usage Multi Indicator" },
  656     { NULL, (0x08 << 16) + 0x03d, "Indicator On" },
  657     { NULL, (0x08 << 16) + 0x03e, "Indicator Flash" },
  658     { NULL, (0x08 << 16) + 0x03f, "Indicator Slow Blink" },
  659     { NULL, (0x08 << 16) + 0x040, "Indicator Fast Blink" },
  660     { NULL, (0x08 << 16) + 0x041, "Indicator Off" },
  661     { NULL, (0x08 << 16) + 0x042, "Flash On Time" },
  662     { NULL, (0x08 << 16) + 0x043, "Slow Blink On Time" },
  663     { NULL, (0x08 << 16) + 0x044, "Slow Blink Off Time" },
  664     { NULL, (0x08 << 16) + 0x045, "Fast Blink On Time" },
  665     { NULL, (0x08 << 16) + 0x046, "Fast Blink Off Time" },
  666     { NULL, (0x08 << 16) + 0x047, "Usage Color Indicator" },
  667     { NULL, (0x08 << 16) + 0x048, "Indicator Red" },
  668     { NULL, (0x08 << 16) + 0x049, "Indicator Green" },
  669     { NULL, (0x08 << 16) + 0x04a, "Indicator Amber" },
  670     { NULL, (0x08 << 16) + 0x04b, "Generic Indicator" },
  671     { NULL, (0x08 << 16) + 0x04c, "System Suspend" },
  672     { NULL, (0x08 << 16) + 0x04d, "External Power Connected" },
  673     { NULL, (0x09 << 16) + 0x000, "No Button Pressed" },
  674     { NULL, (0x09 << 16) + 0x001, "Button 1 (Primary)" },
  675     { NULL, (0x09 << 16) + 0x002, "Button 2 (Secondary)" },
  676     { NULL, (0x09 << 16) + 0x003, "Button 3 (Tertiary)" },
  677     { NULL, (0x09 << 16) + 0x004, "Button 4" },
  678     { NULL, (0x09 << 16) + 0x005, "Button 5" },
  679     { NULL, (0x0a << 16) + 0x001, "Instance 1" },
  680     { NULL, (0x0a << 16) + 0x002, "Instance 2" },
  681     { NULL, (0x0a << 16) + 0x003, "Instance 3" },
  682     { NULL, (0x0b << 16) + 0x000, "Unassigned" },
  683     { NULL, (0x0b << 16) + 0x001, "Phone" },
  684     { NULL, (0x0b << 16) + 0x002, "Answering Machine" },
  685     { NULL, (0x0b << 16) + 0x003, "Message Controls" },
  686     { NULL, (0x0b << 16) + 0x004, "Handset" },
  687     { NULL, (0x0b << 16) + 0x005, "Headset" },
  688     { NULL, (0x0b << 16) + 0x006, "Telephony Key Pad" },
  689     { NULL, (0x0b << 16) + 0x007, "Programmable Button" },
  690     { NULL, (0x0b << 16) + 0x020, "Hook Switch" },
  691     { NULL, (0x0b << 16) + 0x021, "Flash" },
  692     { NULL, (0x0b << 16) + 0x022, "Feature" },
  693     { NULL, (0x0b << 16) + 0x023, "Hold" },
  694     { NULL, (0x0b << 16) + 0x024, "Redial" },
  695     { NULL, (0x0b << 16) + 0x025, "Transfer" },
  696     { NULL, (0x0b << 16) + 0x026, "Drop" },
  697     { NULL, (0x0b << 16) + 0x027, "Park" },
  698     { NULL, (0x0b << 16) + 0x028, "Forward Calls" },
  699     { NULL, (0x0b << 16) + 0x029, "Alternate Function" },
  700     { NULL, (0x0b << 16) + 0x02a, "Line" },
  701     { NULL, (0x0b << 16) + 0x02b, "Speaker Phone" },
  702     { NULL, (0x0b << 16) + 0x02c, "Conference" },
  703     { NULL, (0x0b << 16) + 0x02d, "Ring Enable" },
  704     { NULL, (0x0b << 16) + 0x02e, "Ring Select" },
  705     { NULL, (0x0b << 16) + 0x02f, "Phone Mute" },
  706     { NULL, (0x0b << 16) + 0x030, "Caller ID" },
  707     { NULL, (0x0b << 16) + 0x050, "Speed Dial" },
  708     { NULL, (0x0b << 16) + 0x051, "Store Number" },
  709     { NULL, (0x0b << 16) + 0x052, "Recall Number" },
  710     { NULL, (0x0b << 16) + 0x053, "Phone Directory" },
  711     { NULL, (0x0b << 16) + 0x070, "Voice Mail" },
  712     { NULL, (0x0b << 16) + 0x071, "Screen Calls" },
  713     { NULL, (0x0b << 16) + 0x072, "Do Not Disturb" },
  714     { NULL, (0x0b << 16) + 0x073, "Message" },
  715     { NULL, (0x0b << 16) + 0x074, "Answer On/Offf" },
  716     { NULL, (0x0b << 16) + 0x090, "Inside Dial Tone" },
  717     { NULL, (0x0b << 16) + 0x091, "Outside Dial Tone" },
  718     { NULL, (0x0b << 16) + 0x092, "Inside Ring Tone" },
  719     { NULL, (0x0b << 16) + 0x093, "Outside Ring Tone" },
  720     { NULL, (0x0b << 16) + 0x094, "Priority Ring Tone" },
  721     { NULL, (0x0b << 16) + 0x095, "Inside Ringback" },
  722     { NULL, (0x0b << 16) + 0x096, "Priority Ringback" },
  723     { NULL, (0x0b << 16) + 0x097, "Line Busy Tone" },
  724     { NULL, (0x0b << 16) + 0x098, "Recorder Tone" },
  725     { NULL, (0x0b << 16) + 0x099, "Call Waiting Tone" },
  726     { NULL, (0x0b << 16) + 0x09a, "Confirmation Tone 1" },
  727     { NULL, (0x0b << 16) + 0x09b, "Confirmation Tone 2" },
  728     { NULL, (0x0b << 16) + 0x09c, "Tones Off" },
  729     { NULL, (0x0b << 16) + 0x09d, "Outside Ringback" },
  730     { NULL, (0x0b << 16) + 0x0b0, "Key 1" },
  731     { NULL, (0x0b << 16) + 0x0b1, "Key 2" },
  732     { NULL, (0x0b << 16) + 0x0b3, "Key 3" },
  733     { NULL, (0x0b << 16) + 0x0b4, "Key 4" },
  734     { NULL, (0x0b << 16) + 0x0b5, "Key 5" },
  735     { NULL, (0x0b << 16) + 0x0b6, "Key 6" },
  736     { NULL, (0x0b << 16) + 0x0b7, "Key 7" },
  737     { NULL, (0x0b << 16) + 0x0b8, "Key 8" },
  738     { NULL, (0x0b << 16) + 0x0b9, "Key 9" },
  739     { NULL, (0x0b << 16) + 0x0ba, "Key Star" },
  740     { NULL, (0x0b << 16) + 0x0bb, "Key Pound" },
  741     { NULL, (0x0b << 16) + 0x0bc, "Key A" },
  742     { NULL, (0x0b << 16) + 0x0bd, "Key B" },
  743     { NULL, (0x0b << 16) + 0x0be, "Key C" },
  744     { NULL, (0x0b << 16) + 0x0bf, "Key D" },
  745     { NULL, (0x0c << 16) + 0x000, "Unassigned" },
  746     { NULL, (0x0c << 16) + 0x001, "Consumer Control" },
  747     { NULL, (0x0c << 16) + 0x002, "Numeric Key Pad" },
  748     { NULL, (0x0c << 16) + 0x003, "Programmable Buttons" },
  749     { NULL, (0x0c << 16) + 0x020, "+10" },
  750     { NULL, (0x0c << 16) + 0x021, "+100" },
  751     { NULL, (0x0c << 16) + 0x022, "AM/PM" },
  752     { NULL, (0x0c << 16) + 0x030, "Power" },
  753     { NULL, (0x0c << 16) + 0x031, "Reset" },
  754     { NULL, (0x0c << 16) + 0x032, "Sleep" },
  755     { NULL, (0x0c << 16) + 0x033, "Sleep After" },
  756     { NULL, (0x0c << 16) + 0x034, "Sleep Mode" },
  757     { NULL, (0x0c << 16) + 0x035, "Illumination" },
  758     { NULL, (0x0c << 16) + 0x036, "Function Buttons" },
  759     { NULL, (0x0c << 16) + 0x040, "Menu" },
  760     { NULL, (0x0c << 16) + 0x041, "Menu Pick" },
  761     { NULL, (0x0c << 16) + 0x042, "Menu Up" },
  762     { NULL, (0x0c << 16) + 0x043, "Menu Down" },
  763     { NULL, (0x0c << 16) + 0x044, "Menu Left" },
  764     { NULL, (0x0c << 16) + 0x045, "Menu Right" },
  765     { NULL, (0x0c << 16) + 0x046, "Menu Escape" },
  766     { NULL, (0x0c << 16) + 0x047, "Menu Value Increase" },
  767     { NULL, (0x0c << 16) + 0x048, "Menu Value Decrease" },
  768     { NULL, (0x0c << 16) + 0x060, "Data on Screen" },
  769     { NULL, (0x0c << 16) + 0x061, "Closed Caption" },
  770     { NULL, (0x0c << 16) + 0x062, "Closed Caption Select" },
  771     { NULL, (0x0c << 16) + 0x063, "VCR/TV" },
  772     { NULL, (0x0c << 16) + 0x064, "Broadcast Mode" },
  773     { NULL, (0x0c << 16) + 0x065, "Snapshot" },
  774     { NULL, (0x0c << 16) + 0x066, "Still" },
  775     { NULL, (0x0c << 16) + 0x080, "Selection" },
  776     { NULL, (0x0c << 16) + 0x081, "Assign Selection" },
  777     { NULL, (0x0c << 16) + 0x082, "Mode Step" },
  778     { NULL, (0x0c << 16) + 0x083, "Recall Last" },
  779     { NULL, (0x0c << 16) + 0x084, "Enter Channel" },
  780     { NULL, (0x0c << 16) + 0x085, "Order Movie" },
  781     { NULL, (0x0c << 16) + 0x086, "Channel" },
  782     { NULL, (0x0c << 16) + 0x087, "Media Selection" },
  783     { NULL, (0x0c << 16) + 0x088, "Media Select Computer" },
  784     { NULL, (0x0c << 16) + 0x089, "Media Select TV" },
  785     { NULL, (0x0c << 16) + 0x08a, "Media Select WWW" },
  786     { NULL, (0x0c << 16) + 0x08b, "Media Select DVD" },
  787     { NULL, (0x0c << 16) + 0x08c, "Media Select Telephone" },
  788     { NULL, (0x0c << 16) + 0x08d, "Media Select Program Guide" },
  789     { NULL, (0x0c << 16) + 0x08e, "Media Select Video Phone" },
  790     { NULL, (0x0c << 16) + 0x08f, "Media Select Games" },
  791     { NULL, (0x0c << 16) + 0x090, "Media Select Messages" },
  792     { NULL, (0x0c << 16) + 0x091, "Media Select CD" },
  793     { NULL, (0x0c << 16) + 0x092, "Media Select VCR" },
  794     { NULL, (0x0c << 16) + 0x093, "Media Select Tuner" },
  795     { NULL, (0x0c << 16) + 0x094, "Quit" },
  796     { NULL, (0x0c << 16) + 0x095, "Help" },
  797     { NULL, (0x0c << 16) + 0x096, "Media Select Tape" },
  798     { NULL, (0x0c << 16) + 0x097, "Media Select Cable" },
  799     { NULL, (0x0c << 16) + 0x098, "Media Select Satellite" },
  800     { NULL, (0x0c << 16) + 0x099, "Media Select Security" },
  801     { NULL, (0x0c << 16) + 0x09a, "Media Select Home" },
  802     { NULL, (0x0c << 16) + 0x09b, "Media Select Call" },
  803     { NULL, (0x0c << 16) + 0x09c, "Channel Increment" },
  804     { NULL, (0x0c << 16) + 0x09d, "Channel Decrement" },
  805     { NULL, (0x0c << 16) + 0x09e, "Media Select SAP" },
  806     { NULL, (0x0c << 16) + 0x0a0, "VCR Plus" },
  807     { NULL, (0x0c << 16) + 0x0a1, "Once" },
  808     { NULL, (0x0c << 16) + 0x0a2, "Daily" },
  809     { NULL, (0x0c << 16) + 0x0a3, "Weekly" },
  810     { NULL, (0x0c << 16) + 0x0a4, "Monthly" },
  811     { NULL, (0x0c << 16) + 0x0b0, "Play" },
  812     { NULL, (0x0c << 16) + 0x0b1, "Pause" },
  813     { NULL, (0x0c << 16) + 0x0b2, "Record" },
  814     { NULL, (0x0c << 16) + 0x0b3, "Fast Forward" },
  815     { NULL, (0x0c << 16) + 0x0b4, "Rewind" },
  816     { NULL, (0x0c << 16) + 0x0b5, "Scan Next Track" },
  817     { NULL, (0x0c << 16) + 0x0b6, "Scan Previous Track" },
  818     { NULL, (0x0c << 16) + 0x0b7, "Stop" },
  819     { NULL, (0x0c << 16) + 0x0b8, "Eject" },
  820     { NULL, (0x0c << 16) + 0x0b9, "Random Play" },
  821     { NULL, (0x0c << 16) + 0x0ba, "Select Disc" },
  822     { NULL, (0x0c << 16) + 0x0bb, "Enter Disc" },
  823     { NULL, (0x0c << 16) + 0x0bc, "Repeat" },
  824     { NULL, (0x0c << 16) + 0x0bd, "Tracking" },
  825     { NULL, (0x0c << 16) + 0x0be, "Track Normal" },
  826     { NULL, (0x0c << 16) + 0x0bf, "Slow Tracking" },
  827     { NULL, (0x0c << 16) + 0x0c0, "Frame Forward" },
  828     { NULL, (0x0c << 16) + 0x0c1, "Frame Back" },
  829     { NULL, (0x0c << 16) + 0x0c2, "Mark" },
  830     { NULL, (0x0c << 16) + 0x0c3, "Clear Mark" },
  831     { NULL, (0x0c << 16) + 0x0c4, "Repeat from Mark" },
  832     { NULL, (0x0c << 16) + 0x0c5, "Return to Mark" },
  833     { NULL, (0x0c << 16) + 0x0c6, "Search Mark Forward" },
  834     { NULL, (0x0c << 16) + 0x0c7, "Search Mark Backward" },
  835     { NULL, (0x0c << 16) + 0x0c8, "Counter Reset" },
  836     { NULL, (0x0c << 16) + 0x0c9, "Show Counter" },
  837     { NULL, (0x0c << 16) + 0x0ca, "Tracking Increment" },
  838     { NULL, (0x0c << 16) + 0x0cb, "Tracking Decrement" },
  839     { NULL, (0x0c << 16) + 0x0cc, "Stop/Eject" },
  840     { NULL, (0x0c << 16) + 0x0cd, "Play/Pause" },
  841     { NULL, (0x0c << 16) + 0x0ce, "Play/Skip" },
  842     { NULL, (0x0c << 16) + 0x0e0, "Volume" },
  843     { NULL, (0x0c << 16) + 0x0e1, "Balance" },
  844     { NULL, (0x0c << 16) + 0x0e2, "Mute" },
  845     { NULL, (0x0c << 16) + 0x0e3, "Bass" },
  846     { NULL, (0x0c << 16) + 0x0e4, "Treble" },
  847     { NULL, (0x0c << 16) + 0x0e5, "Bass Boost" },
  848     { NULL, (0x0c << 16) + 0x0e6, "Surround Mode" },
  849     { NULL, (0x0c << 16) + 0x0e7, "Loudness" },
  850     { NULL, (0x0c << 16) + 0x0e8, "MPX" },
  851     { NULL, (0x0c << 16) + 0x0e9, "Volume Increment" },
  852     { NULL, (0x0c << 16) + 0x0ea, "Volume Decrement" },
  853     { NULL, (0x0c << 16) + 0x0f0, "Speed Select" },
  854     { NULL, (0x0c << 16) + 0x0f1, "Playback Speed" },
  855     { NULL, (0x0c << 16) + 0x0f2, "Standard Play" },
  856     { NULL, (0x0c << 16) + 0x0f3, "Long Play" },
  857     { NULL, (0x0c << 16) + 0x0f4, "Extended Play" },
  858     { NULL, (0x0c << 16) + 0x0f5, "Slow" },
  859     { NULL, (0x0c << 16) + 0x100, "Fan Enable" },
  860     { NULL, (0x0c << 16) + 0x101, "Fan Speed" },
  861     { NULL, (0x0c << 16) + 0x102, "Light Enable" },
  862     { NULL, (0x0c << 16) + 0x103, "Light Illumination Level" },
  863     { NULL, (0x0c << 16) + 0x104, "Climate Control Enable" },
  864     { NULL, (0x0c << 16) + 0x105, "Room Temperature" },
  865     { NULL, (0x0c << 16) + 0x106, "Security Enable" },
  866     { NULL, (0x0c << 16) + 0x107, "Fire Alarm" },
  867     { NULL, (0x0c << 16) + 0x108, "Police Alarm" },
  868     { NULL, (0x0c << 16) + 0x150, "Balance Right" },
  869     { NULL, (0x0c << 16) + 0x151, "Balance Left" },
  870     { NULL, (0x0c << 16) + 0x152, "Bass Increment" },
  871     { NULL, (0x0c << 16) + 0x153, "Bass Decrement" },
  872     { NULL, (0x0c << 16) + 0x154, "Treble Increment" },
  873     { NULL, (0x0c << 16) + 0x155, "Treble Decrement" },
  874     { NULL, (0x0c << 16) + 0x160, "Speaker System" },
  875     { NULL, (0x0c << 16) + 0x161, "Channel Left" },
  876     { NULL, (0x0c << 16) + 0x162, "Channel Right" },
  877     { NULL, (0x0c << 16) + 0x163, "Channel Center" },
  878     { NULL, (0x0c << 16) + 0x164, "Channel Front" },
  879     { NULL, (0x0c << 16) + 0x165, "Channel Center Front" },
  880     { NULL, (0x0c << 16) + 0x166, "Channel Side" },
  881     { NULL, (0x0c << 16) + 0x167, "Channel Surround" },
  882     { NULL, (0x0c << 16) + 0x168, "Channel Low Frequency Enhancement" },
  883     { NULL, (0x0c << 16) + 0x169, "Channel Top" },
  884     { NULL, (0x0c << 16) + 0x16a, "Channel Unknown" },
  885     { NULL, (0x0c << 16) + 0x170, "Sub-Channel" },
  886     { NULL, (0x0c << 16) + 0x171, "Sub-Channel Increment" },
  887     { NULL, (0x0c << 16) + 0x172, "Sub-Channel Decrement" },
  888     { NULL, (0x0c << 16) + 0x173, "Alternative Audio Increment" },
  889     { NULL, (0x0c << 16) + 0x174, "Alternative Audio Decrement" },
  890     { NULL, (0x0c << 16) + 0x180, "Application Launch Buttons" },
  891     { NULL, (0x0c << 16) + 0x181, "AL Launch Button Configuration Tool" },
  892     { NULL, (0x0c << 16) + 0x182, "AL Launch Button Configuration" },
  893     { NULL, (0x0c << 16) + 0x183, "AL Consumer Control Configuration" },
  894     { NULL, (0x0c << 16) + 0x184, "AL Word Processor" },
  895     { NULL, (0x0c << 16) + 0x185, "AL Text Editor" },
  896     { NULL, (0x0c << 16) + 0x186, "AL Spreadsheet" },
  897     { NULL, (0x0c << 16) + 0x187, "AL Graphics Editor" },
  898     { NULL, (0x0c << 16) + 0x188, "AL Presentation App" },
  899     { NULL, (0x0c << 16) + 0x189, "AL Database App" },
  900     { NULL, (0x0c << 16) + 0x18a, "AL Email Reader" },
  901     { NULL, (0x0c << 16) + 0x18b, "AL Newsreader" },
  902     { NULL, (0x0c << 16) + 0x18c, "AL Voicemail" },
  903     { NULL, (0x0c << 16) + 0x18d, "AL Contacts/Address Book" },
  904     { NULL, (0x0c << 16) + 0x18e, "AL Calendar/Schedule" },
  905     { NULL, (0x0c << 16) + 0x18f, "AL Task/Project Manager" },
  906     { NULL, (0x0c << 16) + 0x190, "AL Log/Jounal/Timecard" },
  907     { NULL, (0x0c << 16) + 0x191, "AL Checkbook/Finance" },
  908     { NULL, (0x0c << 16) + 0x192, "AL Calculator" },
  909     { NULL, (0x0c << 16) + 0x193, "AL A/V Capture/Playback" },
  910     { NULL, (0x0c << 16) + 0x194, "AL Local Machine Browser" },
  911     { NULL, (0x0c << 16) + 0x195, "AL LAN/Wan Browser" },
  912     { NULL, (0x0c << 16) + 0x196, "AL Internet Browser" },
  913     { NULL, (0x0c << 16) + 0x197, "AL Remote Networking/ISP Connect" },
  914     { NULL, (0x0c << 16) + 0x198, "AL Network Conference" },
  915     { NULL, (0x0c << 16) + 0x199, "AL Network Chat" },
  916     { NULL, (0x0c << 16) + 0x19a, "AL Telephony/Dialer" },
  917     { NULL, (0x0c << 16) + 0x19b, "AL Logon" },
  918     { NULL, (0x0c << 16) + 0x19c, "AL Logoff" },
  919     { NULL, (0x0c << 16) + 0x19d, "AL Logon/Logoff" },
  920     { NULL, (0x0c << 16) + 0x19e, "AL Terminal Local/Screensaver" },
  921     { NULL, (0x0c << 16) + 0x19f, "AL Control Panel" },
  922     { NULL, (0x0c << 16) + 0x1a0, "AL Command Line Processor/Run" },
  923     { NULL, (0x0c << 16) + 0x1a1, "AL Process/Task Manager" },
  924     { NULL, (0x0c << 16) + 0x1a2, "AL Select Task/Application" },
  925     { NULL, (0x0c << 16) + 0x1a3, "AL Next Task/Application" },
  926     { NULL, (0x0c << 16) + 0x1a4, "AL Previous Task/Application" },
  927     { NULL, (0x0c << 16) + 0x1a5, "AL Preemptive Halt Task/Application" },
  928     { NULL, (0x0c << 16) + 0x200, "Generic GUI Application Controls" },
  929     { NULL, (0x0c << 16) + 0x201, "AC New" },
  930     { NULL, (0x0c << 16) + 0x202, "AC Open" },
  931     { NULL, (0x0c << 16) + 0x203, "AC CLose" },
  932     { NULL, (0x0c << 16) + 0x204, "AC Exit" },
  933     { NULL, (0x0c << 16) + 0x205, "AC Maximize" },
  934     { NULL, (0x0c << 16) + 0x206, "AC Minimize" },
  935     { NULL, (0x0c << 16) + 0x207, "AC Save" },
  936     { NULL, (0x0c << 16) + 0x208, "AC Print" },
  937     { NULL, (0x0c << 16) + 0x209, "AC Properties" },
  938     { NULL, (0x0c << 16) + 0x21a, "AC Undo" },
  939     { NULL, (0x0c << 16) + 0x21b, "AC Copy" },
  940     { NULL, (0x0c << 16) + 0x21c, "AC Cut" },
  941     { NULL, (0x0c << 16) + 0x21d, "AC Paste" },
  942     { NULL, (0x0c << 16) + 0x21e, "AC Select All" },
  943     { NULL, (0x0c << 16) + 0x21f, "AC Find" },
  944     { NULL, (0x0c << 16) + 0x220, "AC Find and Replace" },
  945     { NULL, (0x0c << 16) + 0x221, "AC Search" },
  946     { NULL, (0x0c << 16) + 0x222, "AC Go To" },
  947     { NULL, (0x0c << 16) + 0x223, "AC Home" },
  948     { NULL, (0x0c << 16) + 0x224, "AC Back" },
  949     { NULL, (0x0c << 16) + 0x225, "AC Forward" },
  950     { NULL, (0x0c << 16) + 0x226, "AC Stop" },
  951     { NULL, (0x0c << 16) + 0x227, "AC Refresh" },
  952     { NULL, (0x0c << 16) + 0x228, "AC Previous Link" },
  953     { NULL, (0x0c << 16) + 0x229, "AC Next Link" },
  954     { NULL, (0x0c << 16) + 0x22b, "AC History" },
  955     { NULL, (0x0c << 16) + 0x22c, "AC Subscriptions" },
  956     { NULL, (0x0c << 16) + 0x22d, "AC Zoom In" },
  957     { NULL, (0x0c << 16) + 0x22e, "AC Zoom Out" },
  958     { NULL, (0x0c << 16) + 0x22f, "AC Zoom" },
  959     { NULL, (0x0c << 16) + 0x230, "AC Full Screen View" },
  960     { NULL, (0x0c << 16) + 0x231, "AC Normal View" },
  961     { NULL, (0x0c << 16) + 0x232, "AC View Toggle" },
  962     { NULL, (0x0c << 16) + 0x233, "AC Scroll Up" },
  963     { NULL, (0x0c << 16) + 0x234, "AC Scroll Down" },
  964     { NULL, (0x0c << 16) + 0x235, "AC Scroll" },
  965     { NULL, (0x0c << 16) + 0x236, "AC Pan Left" },
  966     { NULL, (0x0c << 16) + 0x237, "AC Pan Right" },
  967     { NULL, (0x0c << 16) + 0x238, "AC Pan" },
  968     { NULL, (0x0c << 16) + 0x239, "AC New Window" },
  969     { NULL, (0x0c << 16) + 0x23a, "AC Tile Horizontally" },
  970     { NULL, (0x0c << 16) + 0x23b, "AC Tile Vertically" },
  971     { NULL, (0x0c << 16) + 0x23c, "AC Format" },
  972     { NULL, (0x0d << 16) + 0x000, "Undefined" },
  973     { NULL, (0x0d << 16) + 0x001, "Digitizer" },
  974     { NULL, (0x0d << 16) + 0x002, "Pen" },
  975     { NULL, (0x0d << 16) + 0x003, "Light Pen" },
  976     { NULL, (0x0d << 16) + 0x004, "Touch Screen" },
  977     { NULL, (0x0d << 16) + 0x005, "Touch Pad" },
  978     { NULL, (0x0d << 16) + 0x006, "White Board" },
  979     { NULL, (0x0d << 16) + 0x007, "Coordinate Measuring Machine" },
  980     { NULL, (0x0d << 16) + 0x008, "3D Digitizer" },
  981     { NULL, (0x0d << 16) + 0x009, "Stereo Plotter" },
  982     { NULL, (0x0d << 16) + 0x00a, "Articulated Arm" },
  983     { NULL, (0x0d << 16) + 0x00b, "Armature" },
  984     { NULL, (0x0d << 16) + 0x00c, "Multiple Point Digitizer" },
  985     { NULL, (0x0d << 16) + 0x00d, "Free Space Wand" },
  986     { NULL, (0x0d << 16) + 0x020, "Stylus" },
  987     { NULL, (0x0d << 16) + 0x021, "Puck" },
  988     { NULL, (0x0d << 16) + 0x022, "Finger" },
  989     { NULL, (0x0d << 16) + 0x030, "Tip Pressure" },
  990     { NULL, (0x0d << 16) + 0x031, "Barrel Pressure" },
  991     { NULL, (0x0d << 16) + 0x032, "In Range" },
  992     { NULL, (0x0d << 16) + 0x033, "Touch" },
  993     { NULL, (0x0d << 16) + 0x034, "Untouch" },
  994     { NULL, (0x0d << 16) + 0x035, "Tap" },
  995     { NULL, (0x0d << 16) + 0x036, "Quality" },
  996     { NULL, (0x0d << 16) + 0x037, "Data Valid" },
  997     { NULL, (0x0d << 16) + 0x038, "Transducer Index" },
  998     { NULL, (0x0d << 16) + 0x039, "Tablet Function Keys" },
  999     { NULL, (0x0d << 16) + 0x03a, "Program Change Keys" },
 1000     { NULL, (0x0d << 16) + 0x03b, "Battery Strength" },
 1001     { NULL, (0x0d << 16) + 0x03c, "Invert" },
 1002     { NULL, (0x0d << 16) + 0x03d, "X Tilt" },
 1003     { NULL, (0x0d << 16) + 0x03e, "Y Tilt" },
 1004     { NULL, (0x0d << 16) + 0x03f, "Azimuth" },
 1005     { NULL, (0x0d << 16) + 0x040, "Altitude" },
 1006     { NULL, (0x0d << 16) + 0x041, "Twist" },
 1007     { NULL, (0x0d << 16) + 0x042, "Tip Switch" },
 1008     { NULL, (0x0d << 16) + 0x043, "Secondary Tip Switch" },
 1009     { NULL, (0x0d << 16) + 0x044, "Barrel Switch" },
 1010     { NULL, (0x0d << 16) + 0x045, "Eraser" },
 1011     { NULL, (0x0d << 16) + 0x046, "Tablet Pick" },
 1012     { NULL, (0x0d << 16) + 0x047, "Confidence" },
 1013     { NULL, (0x0d << 16) + 0x048, "Width" },
 1014     { NULL, (0x0d << 16) + 0x049, "Height" },
 1015     { NULL, (0x0d << 16) + 0x051, "Contact ID" },
 1016     { NULL, (0x0d << 16) + 0x052, "Input Mode" },
 1017     { NULL, (0x0d << 16) + 0x053, "Device Index" },
 1018     { NULL, (0x0d << 16) + 0x054, "Contact Count" },
 1019     { NULL, (0x0d << 16) + 0x055, "Maximum Contact Number" },
 1020     { NULL, (0x0f << 16) + 0x000, "Undefined" },
 1021     { NULL, (0x0f << 16) + 0x001, "Physical Interface Device" },
 1022     { NULL, (0x0f << 16) + 0x020, "Normal" },
 1023     { NULL, (0x0f << 16) + 0x021, "Set Effect Report" },
 1024     { NULL, (0x0f << 16) + 0x022, "Effect Block Index" },
 1025     { NULL, (0x0f << 16) + 0x023, "Parameter Block Offset" },
 1026     { NULL, (0x0f << 16) + 0x024, "ROM Flag" },
 1027     { NULL, (0x0f << 16) + 0x025, "Effect Type" },
 1028     { NULL, (0x0f << 16) + 0x026, "ET Constant Force" },
 1029     { NULL, (0x0f << 16) + 0x027, "ET Ramp" },
 1030     { NULL, (0x0f << 16) + 0x028, "ET Custom Force Data" },
 1031     { NULL, (0x0f << 16) + 0x030, "ET Square" },
 1032     { NULL, (0x0f << 16) + 0x031, "ET Sine" },
 1033     { NULL, (0x0f << 16) + 0x032, "ET Triangle" },
 1034     { NULL, (0x0f << 16) + 0x033, "ET Sawtooth Up" },
 1035     { NULL, (0x0f << 16) + 0x034, "ET Sawtooth Down" },
 1036     { NULL, (0x0f << 16) + 0x040, "ET Spring" },
 1037     { NULL, (0x0f << 16) + 0x041, "ET Damper" },
 1038     { NULL, (0x0f << 16) + 0x042, "ET Inertia" },
 1039     { NULL, (0x0f << 16) + 0x043, "ET Friction" },
 1040     { NULL, (0x0f << 16) + 0x050, "Duration" },
 1041     { NULL, (0x0f << 16) + 0x051, "Sample Period" },
 1042     { NULL, (0x0f << 16) + 0x052, "Gain" },
 1043     { NULL, (0x0f << 16) + 0x053, "Trigger Button" },
 1044     { NULL, (0x0f << 16) + 0x054, "Trigger Repeat Interval" },
 1045     { NULL, (0x0f << 16) + 0x055, "Axes Enable" },
 1046     { NULL, (0x0f << 16) + 0x056, "Direction Enable" },
 1047     { NULL, (0x0f << 16) + 0x057, "Direction" },
 1048     { NULL, (0x0f << 16) + 0x058, "Type Specific Block Offset" },
 1049     { NULL, (0x0f << 16) + 0x059, "Block Type" },
 1050     { NULL, (0x0f << 16) + 0x05A, "Set Envelope Report" },
 1051     { NULL, (0x0f << 16) + 0x05B, "Attack Level" },
 1052     { NULL, (0x0f << 16) + 0x05C, "Attack Time" },
 1053     { NULL, (0x0f << 16) + 0x05D, "Fade Level" },
 1054     { NULL, (0x0f << 16) + 0x05E, "Fade Time" },
 1055     { NULL, (0x0f << 16) + 0x05F, "Set Condition Report" },
 1056     { NULL, (0x0f << 16) + 0x060, "CP Offset" },
 1057     { NULL, (0x0f << 16) + 0x061, "Positive Coefficient" },
 1058     { NULL, (0x0f << 16) + 0x062, "Negative Coefficient" },
 1059     { NULL, (0x0f << 16) + 0x063, "Positive Saturation" },
 1060     { NULL, (0x0f << 16) + 0x064, "Negative Saturation" },
 1061     { NULL, (0x0f << 16) + 0x065, "Dead Band" },
 1062     { NULL, (0x0f << 16) + 0x066, "Download Force Sample" },
 1063     { NULL, (0x0f << 16) + 0x067, "Isoch Custom Force Enable" },
 1064     { NULL, (0x0f << 16) + 0x068, "Custom Force Data Report" },
 1065     { NULL, (0x0f << 16) + 0x069, "Custom Force Data" },
 1066     { NULL, (0x0f << 16) + 0x06A, "Custom Force Vendor Defined Data" },
 1067     { NULL, (0x0f << 16) + 0x06B, "Set Custom Force Report" },
 1068     { NULL, (0x0f << 16) + 0x06C, "Custom Force Data Offset" },
 1069     { NULL, (0x0f << 16) + 0x06D, "Sample Count" },
 1070     { NULL, (0x0f << 16) + 0x06E, "Set Periodic Report" },
 1071     { NULL, (0x0f << 16) + 0x06F, "Offset" },
 1072     { NULL, (0x0f << 16) + 0x070, "Magnitude" },
 1073     { NULL, (0x0f << 16) + 0x071, "Phase" },
 1074     { NULL, (0x0f << 16) + 0x072, "Period" },
 1075     { NULL, (0x0f << 16) + 0x073, "Set Constant Force Report" },
 1076     { NULL, (0x0f << 16) + 0x074, "Set Ramp Force Report" },
 1077     { NULL, (0x0f << 16) + 0x075, "Ramp Start" },
 1078     { NULL, (0x0f << 16) + 0x076, "Ramp End" },
 1079     { NULL, (0x0f << 16) + 0x077, "Effect Operation Report" },
 1080     { NULL, (0x0f << 16) + 0x078, "Effect Operation" },
 1081     { NULL, (0x0f << 16) + 0x079, "Op Effect Start" },
 1082     { NULL, (0x0f << 16) + 0x07A, "Op Effect Start Solo" },
 1083     { NULL, (0x0f << 16) + 0x07B, "Op Effect Stop" },
 1084     { NULL, (0x0f << 16) + 0x07C, "Loop Count" },
 1085     { NULL, (0x0f << 16) + 0x07D, "Device Gain Report" },
 1086     { NULL, (0x0f << 16) + 0x07E, "Device Gain" },
 1087     { NULL, (0x0f << 16) + 0x07F, "PID Pool Report" },
 1088     { NULL, (0x0f << 16) + 0x080, "RAM Pool Size" },
 1089     { NULL, (0x0f << 16) + 0x081, "ROM Pool Size" },
 1090     { NULL, (0x0f << 16) + 0x082, "ROM Effect Block Count" },
 1091     { NULL, (0x0f << 16) + 0x083, "Simultaneous Effects Max" },
 1092     { NULL, (0x0f << 16) + 0x084, "Pool Alignment" },
 1093     { NULL, (0x0f << 16) + 0x085, "PID Pool Move Report" },
 1094     { NULL, (0x0f << 16) + 0x086, "Move Source" },
 1095     { NULL, (0x0f << 16) + 0x087, "Move Destination" },
 1096     { NULL, (0x0f << 16) + 0x088, "Move Length" },
 1097     { NULL, (0x0f << 16) + 0x089, "PID Block Load Report" },
 1098     { NULL, (0x0f << 16) + 0x08B, "Block Load Status" },
 1099     { NULL, (0x0f << 16) + 0x08C, "Block Load Success" },
 1100     { NULL, (0x0f << 16) + 0x08D, "Block Load Full" },
 1101     { NULL, (0x0f << 16) + 0x08E, "Block Load Error" },
 1102     { NULL, (0x0f << 16) + 0x08F, "Block Handle" },
 1103     { NULL, (0x0f << 16) + 0x090, "PID Block Free Report" },
 1104     { NULL, (0x0f << 16) + 0x091, "Type Specific Block Handle" },
 1105     { NULL, (0x0f << 16) + 0x092, "PID State Report" },
 1106     { NULL, (0x0f << 16) + 0x094, "Effect Playing" },
 1107     { NULL, (0x0f << 16) + 0x095, "PID Device Control Report" },
 1108     { NULL, (0x0f << 16) + 0x096, "PID Device Control" },
 1109     { NULL, (0x0f << 16) + 0x097, "DC Enable Actuators" },
 1110     { NULL, (0x0f << 16) + 0x098, "DC Disable Actuators" },
 1111     { NULL, (0x0f << 16) + 0x099, "DC Stop All Effects" },
 1112     { NULL, (0x0f << 16) + 0x09A, "DC Device Reset" },
 1113     { NULL, (0x0f << 16) + 0x09B, "DC Device Pause" },
 1114     { NULL, (0x0f << 16) + 0x09C, "DC Device Continue" },
 1115     { NULL, (0x0f << 16) + 0x09F, "Device Paused" },
 1116     { NULL, (0x0f << 16) + 0x0A0, "Actuators Enabled" },
 1117     { NULL, (0x0f << 16) + 0x0A4, "Safety Switch" },
 1118     { NULL, (0x0f << 16) + 0x0A5, "Actuator Override Switch" },
 1119     { NULL, (0x0f << 16) + 0x0A6, "Actuator Power" },
 1120     { NULL, (0x0f << 16) + 0x0A7, "Start Delay" },
 1121     { NULL, (0x0f << 16) + 0x0A8, "Parameter Block Size" },
 1122     { NULL, (0x0f << 16) + 0x0A9, "Device Managed Pool" },
 1123     { NULL, (0x0f << 16) + 0x0AA, "Shared Parameter Blocks" },
 1124     { NULL, (0x0f << 16) + 0x0AB, "Create New Effect Report" },
 1125     { NULL, (0x0f << 16) + 0x0AC, "RAM Pool Available" },
 1126     { NULL, (0x14 << 16) + 0x000, "Undefined" },
 1127     { NULL, (0x14 << 16) + 0x001, "Alphanumeric Display" },
 1128     { NULL, (0x14 << 16) + 0x020, "Display Attributes Report" },
 1129     { NULL, (0x14 << 16) + 0x021, "ASCII Character Set" },
 1130     { NULL, (0x14 << 16) + 0x022, "Data Read Back" },
 1131     { NULL, (0x14 << 16) + 0x023, "Font Read Back" },
 1132     { NULL, (0x14 << 16) + 0x024, "Display Control Report" },
 1133     { NULL, (0x14 << 16) + 0x025, "Clear Display" },
 1134     { NULL, (0x14 << 16) + 0x026, "Display Enable" },
 1135     { NULL, (0x14 << 16) + 0x027, "Screen Saver Delay" },
 1136     { NULL, (0x14 << 16) + 0x028, "Screen Saver Enable" },
 1137     { NULL, (0x14 << 16) + 0x029, "Vertical Scroll" },
 1138     { NULL, (0x14 << 16) + 0x02a, "Horizontal Scroll" },
 1139     { NULL, (0x14 << 16) + 0x02b, "Character Report" },
 1140     { NULL, (0x14 << 16) + 0x02c, "Display Data" },
 1141     { NULL, (0x14 << 16) + 0x02d, "Display Status" },
 1142     { NULL, (0x14 << 16) + 0x02e, "Stat Not Ready" },
 1143     { NULL, (0x14 << 16) + 0x02f, "Stat Ready" },
 1144     { NULL, (0x14 << 16) + 0x030, "Err Not a loadable Character" },
 1145     { NULL, (0x14 << 16) + 0x031, "Err Font Data Cannot Be Read" },
 1146     { NULL, (0x14 << 16) + 0x032, "Cursur Position Report" },
 1147     { NULL, (0x14 << 16) + 0x033, "Row" },
 1148     { NULL, (0x14 << 16) + 0x034, "Column" },
 1149     { NULL, (0x14 << 16) + 0x035, "Rows" },
 1150     { NULL, (0x14 << 16) + 0x036, "Columns" },
 1151     { NULL, (0x14 << 16) + 0x037, "Cursor Pixel Positioning" },
 1152     { NULL, (0x14 << 16) + 0x038, "Cursor Mode" },
 1153     { NULL, (0x14 << 16) + 0x039, "Cursor Enable" },
 1154     { NULL, (0x14 << 16) + 0x03a, "Cursor Blink" },
 1155     { NULL, (0x14 << 16) + 0x03b, "Font Report" },
 1156     { NULL, (0x14 << 16) + 0x03c, "Font Data" },
 1157     { NULL, (0x14 << 16) + 0x03d, "Character Width" },
 1158     { NULL, (0x14 << 16) + 0x03e, "Character Height" },
 1159     { NULL, (0x14 << 16) + 0x03f, "Character Spacing Horizontal" },
 1160     { NULL, (0x14 << 16) + 0x040, "Character Spacing Vertical" },
 1161     { NULL, (0x14 << 16) + 0x041, "Unicode Character Set" },
 1162     { NULL, (0x80 << 16) + 0x001, "Monitor Control" },
 1163     { NULL, (0x80 << 16) + 0x002, "EDID Information" },
 1164     { NULL, (0x80 << 16) + 0x003, "VDIF Information" },
 1165     { NULL, (0x80 << 16) + 0x004, "VESA Version" },
 1166     { NULL, (0x82 << 16) + 0x001, "Degauss" },
 1167     { NULL, (0x82 << 16) + 0x010, "Brightness" },
 1168     { NULL, (0x82 << 16) + 0x012, "Contrast" },
 1169     { NULL, (0x82 << 16) + 0x016, "Red Video Gain" },
 1170     { NULL, (0x82 << 16) + 0x018, "Green Video Gain" },
 1171     { NULL, (0x82 << 16) + 0x01a, "Blue Video Gain" },
 1172     { NULL, (0x82 << 16) + 0x01c, "Focus" },
 1173     { NULL, (0x82 << 16) + 0x020, "Horizontal Position" },
 1174     { NULL, (0x82 << 16) + 0x022, "Horizontal Size" },
 1175     { NULL, (0x82 << 16) + 0x024, "Horizontal Pincushion" },
 1176     { NULL, (0x82 << 16) + 0x026, "Horizontal Pincushion Balance" },
 1177     { NULL, (0x82 << 16) + 0x028, "Horizontal Misconvergence" },
 1178     { NULL, (0x82 << 16) + 0x02a, "Horizontal Linearity" },
 1179     { NULL, (0x82 << 16) + 0x02c, "Horizontal Linearity Balance" },
 1180     { NULL, (0x82 << 16) + 0x030, "Vertical Position" },
 1181     { NULL, (0x82 << 16) + 0x032, "Vertical Size" },
 1182     { NULL, (0x82 << 16) + 0x034, "Vertical Pincushion" },
 1183     { NULL, (0x82 << 16) + 0x036, "Vertical Pincushion Balance" },
 1184     { NULL, (0x82 << 16) + 0x038, "Vertical Misconvergence" },
 1185     { NULL, (0x82 << 16) + 0x03a, "Vertical Linearity" },
 1186     { NULL, (0x82 << 16) + 0x03c, "Vertical Linearity Balance" },
 1187     { NULL, (0x82 << 16) + 0x040, "Parallelogram Balance (Key Distortion)" },
 1188     { NULL, (0x82 << 16) + 0x042, "Trapezoidal Distortion (Key)" },
 1189     { NULL, (0x82 << 16) + 0x044, "Tilt (Rotation)" },
 1190     { NULL, (0x82 << 16) + 0x046, "Top Corner Distortion Control" },
 1191     { NULL, (0x82 << 16) + 0x048, "Top Corner Distortion Balance" },
 1192     { NULL, (0x82 << 16) + 0x04a, "Bottom Corner Distortion Control" },
 1193     { NULL, (0x82 << 16) + 0x04c, "Bottom Corner Distortion Balance" },
 1194     { NULL, (0x82 << 16) + 0x056, "Horizontal Moire" },
 1195     { NULL, (0x82 << 16) + 0x058, "Vertical Moire" },
 1196     { NULL, (0x82 << 16) + 0x05e, "Input Level Select" },
 1197     { NULL, (0x82 << 16) + 0x060, "Input Source Select" },
 1198     { NULL, (0x82 << 16) + 0x06c, "Red Video Black Level" },
 1199     { NULL, (0x82 << 16) + 0x06e, "Green Video Black Level" },
 1200     { NULL, (0x82 << 16) + 0x070, "Blue Video Black Level" },
 1201     { NULL, (0x82 << 16) + 0x0a2, "Auto Size Center" },
 1202     { NULL, (0x82 << 16) + 0x0a4, "Polarity Horizontal Sychronization" },
 1203     { NULL, (0x82 << 16) + 0x0a6, "Polarity Vertical Synchronization" },
 1204     { NULL, (0x82 << 16) + 0x0aa, "Screen Orientation" },
 1205     { NULL, (0x82 << 16) + 0x0ac, "Horizontal Frequency in Hz" },
 1206     { NULL, (0x82 << 16) + 0x0ae, "Vertical Frequency in 0.1 Hz" },
 1207     { NULL, (0x82 << 16) + 0x0b0, "Settings" },
 1208     { NULL, (0x82 << 16) + 0x0ca, "On Screen Display (OSD)" },
 1209     { NULL, (0x82 << 16) + 0x0d4, "Stereo Mode" },
 1210     { NULL, (0x84 << 16) + 0x000, "Undefined" },
 1211     { NULL, (0x84 << 16) + 0x001, "iName" },
 1212     { NULL, (0x84 << 16) + 0x002, "Present Status" },
 1213     { NULL, (0x84 << 16) + 0x003, "Changed Status" },
 1214     { NULL, (0x84 << 16) + 0x004, "UPS" },
 1215     { NULL, (0x84 << 16) + 0x005, "Power Supply" },
 1216     { NULL, (0x84 << 16) + 0x010, "Battery System" },
 1217     { NULL, (0x84 << 16) + 0x011, "Battery System ID" },
 1218     { NULL, (0x84 << 16) + 0x012, "Battery" },
 1219     { NULL, (0x84 << 16) + 0x013, "Battery ID" },
 1220     { NULL, (0x84 << 16) + 0x014, "Charger" },
 1221     { NULL, (0x84 << 16) + 0x015, "Charger ID" },
 1222     { NULL, (0x84 << 16) + 0x016, "Power Converter" },
 1223     { NULL, (0x84 << 16) + 0x017, "Power Converter ID" },
 1224     { NULL, (0x84 << 16) + 0x018, "Outlet System" },
 1225     { NULL, (0x84 << 16) + 0x019, "Outlet System ID" },
 1226     { NULL, (0x84 << 16) + 0x01a, "Input" },
 1227     { NULL, (0x84 << 16) + 0x01b, "Input ID" },
 1228     { NULL, (0x84 << 16) + 0x01c, "Output" },
 1229     { NULL, (0x84 << 16) + 0x01d, "Output ID" },
 1230     { NULL, (0x84 << 16) + 0x01e, "Flow" },
 1231     { NULL, (0x84 << 16) + 0x01f, "Flow ID" },
 1232     { NULL, (0x84 << 16) + 0x020, "Outlet" },
 1233     { NULL, (0x84 << 16) + 0x021, "Outlet ID" },
 1234     { NULL, (0x84 << 16) + 0x022, "Gang" },
 1235     { NULL, (0x84 << 16) + 0x023, "Gang ID" },
 1236     { NULL, (0x84 << 16) + 0x024, "Power Summary" },
 1237     { NULL, (0x84 << 16) + 0x025, "Power Summary ID" },
 1238     { NULL, (0x84 << 16) + 0x030, "Voltage" },
 1239     { NULL, (0x84 << 16) + 0x031, "Current" },
 1240     { NULL, (0x84 << 16) + 0x032, "Frequency" },
 1241     { NULL, (0x84 << 16) + 0x033, "Apparent Power" },
 1242     { NULL, (0x84 << 16) + 0x034, "Active Power" },
 1243     { NULL, (0x84 << 16) + 0x035, "Percent Load" },
 1244     { NULL, (0x84 << 16) + 0x036, "Temperature" },
 1245     { NULL, (0x84 << 16) + 0x037, "Humidity" },
 1246     { NULL, (0x84 << 16) + 0x038, "Bad Count" },
 1247     { NULL, (0x84 << 16) + 0x040, "Config Voltage" },
 1248     { NULL, (0x84 << 16) + 0x041, "Config Current" },
 1249     { NULL, (0x84 << 16) + 0x042, "Config Frequency" },
 1250     { NULL, (0x84 << 16) + 0x043, "Config Apparent Power" },
 1251     { NULL, (0x84 << 16) + 0x044, "Config Active Power" },
 1252     { NULL, (0x84 << 16) + 0x045, "Config Percent Load" },
 1253     { NULL, (0x84 << 16) + 0x046, "Config Temperature" },
 1254     { NULL, (0x84 << 16) + 0x047, "Config Humidity" },
 1255     { NULL, (0x84 << 16) + 0x050, "Switch On Control" },
 1256     { NULL, (0x84 << 16) + 0x051, "Switch Off Control" },
 1257     { NULL, (0x84 << 16) + 0x052, "Toggle Control" },
 1258     { NULL, (0x84 << 16) + 0x053, "Low Voltage Transfer" },
 1259     { NULL, (0x84 << 16) + 0x054, "High Voltage Transfer" },
 1260     { NULL, (0x84 << 16) + 0x055, "Delay Before Reboot" },
 1261     { NULL, (0x84 << 16) + 0x056, "Delay Before Startup" },
 1262     { NULL, (0x84 << 16) + 0x057, "Delay Before Shutdown" },
 1263     { NULL, (0x84 << 16) + 0x058, "Test" },
 1264     { NULL, (0x84 << 16) + 0x059, "Module Reset" },
 1265     { NULL, (0x84 << 16) + 0x05a, "Audible Alarm Control" },
 1266     { NULL, (0x84 << 16) + 0x060, "Present" },
 1267     { NULL, (0x84 << 16) + 0x061, "Good" },
 1268     { NULL, (0x84 << 16) + 0x062, "Internal Failure" },
 1269     { NULL, (0x84 << 16) + 0x063, "Voltage out of range" },
 1270     { NULL, (0x84 << 16) + 0x064, "Frequency out of range" },
 1271     { NULL, (0x84 << 16) + 0x065, "Overload" },
 1272     { NULL, (0x84 << 16) + 0x066, "Over Charged" },
 1273     { NULL, (0x84 << 16) + 0x067, "Over Temperature" },
 1274     { NULL, (0x84 << 16) + 0x068, "Shutdown Requested" },
 1275     { NULL, (0x84 << 16) + 0x069, "Shutdown  Imminent" },
 1276     { NULL, (0x84 << 16) + 0x06a, "Reserved" },
 1277     { NULL, (0x84 << 16) + 0x06b, "Switch On/Off" },
 1278     { NULL, (0x84 << 16) + 0x06c, "Switchable" },
 1279     { NULL, (0x84 << 16) + 0x06d, "Used" },
 1280     { NULL, (0x84 << 16) + 0x06e, "Boost" },
 1281     { NULL, (0x84 << 16) + 0x06f, "Buck" },
 1282     { NULL, (0x84 << 16) + 0x070, "Initialized" },
 1283     { NULL, (0x84 << 16) + 0x071, "Tested" },
 1284     { NULL, (0x84 << 16) + 0x072, "Awaiting Power" },
 1285     { NULL, (0x84 << 16) + 0x073, "Communication Lost" },
 1286     { NULL, (0x84 << 16) + 0x0fd, "iManufacturer" },
 1287     { NULL, (0x84 << 16) + 0x0fe, "iProduct" },
 1288     { NULL, (0x84 << 16) + 0x0ff, "iSerialNumber" },
 1289     { NULL, (0x85 << 16) + 0x000, "Undefined" },
 1290     { NULL, (0x85 << 16) + 0x001, "SMB Battery Mode" },
 1291     { NULL, (0x85 << 16) + 0x002, "SMB Battery Status" },
 1292     { NULL, (0x85 << 16) + 0x003, "SMB Alarm Warning" },
 1293     { NULL, (0x85 << 16) + 0x004, "SMB Charger Mode" },
 1294     { NULL, (0x85 << 16) + 0x005, "SMB Charger Status" },
 1295     { NULL, (0x85 << 16) + 0x006, "SMB Charger Spec Info" },
 1296     { NULL, (0x85 << 16) + 0x007, "SMB Selector State" },
 1297     { NULL, (0x85 << 16) + 0x008, "SMB Selector Presets" },
 1298     { NULL, (0x85 << 16) + 0x009, "SMB Selector Info" },
 1299     { NULL, (0x85 << 16) + 0x010, "Optional Mfg. Function 1" },
 1300     { NULL, (0x85 << 16) + 0x011, "Optional Mfg. Function 2" },
 1301     { NULL, (0x85 << 16) + 0x012, "Optional Mfg. Function 3" },
 1302     { NULL, (0x85 << 16) + 0x013, "Optional Mfg. Function 4" },
 1303     { NULL, (0x85 << 16) + 0x014, "Optional Mfg. Function 5" },
 1304     { NULL, (0x85 << 16) + 0x015, "Connection to SMBus" },
 1305     { NULL, (0x85 << 16) + 0x016, "Output Connection" },
 1306     { NULL, (0x85 << 16) + 0x017, "Charger Connection" },
 1307     { NULL, (0x85 << 16) + 0x018, "Battery Insertion" },
 1308     { NULL, (0x85 << 16) + 0x019, "Use Next" },
 1309     { NULL, (0x85 << 16) + 0x01a, "OK to use" },
 1310     { NULL, (0x85 << 16) + 0x01b, "Battery  Supported" },
 1311     { NULL, (0x85 << 16) + 0x01c, "SelectorRevision" },
 1312     { NULL, (0x85 << 16) + 0x01d, "Charging Indicator" },
 1313     { NULL, (0x85 << 16) + 0x028, "Manufacturer Access" },
 1314     { NULL, (0x85 << 16) + 0x029, "Remaining Capacity Limit" },
 1315     { NULL, (0x85 << 16) + 0x02a, "Remaining Time Limit" },
 1316     { NULL, (0x85 << 16) + 0x02b, "At Rate" },
 1317     { NULL, (0x85 << 16) + 0x02c, "Capacity Mode" },
 1318     { NULL, (0x85 << 16) + 0x02d, "Broadcast To Charger" },
 1319     { NULL, (0x85 << 16) + 0x02e, "Primary Battery" },
 1320     { NULL, (0x85 << 16) + 0x02f, "Charge Controller" },
 1321     { NULL, (0x85 << 16) + 0x040, "Terminate Charge" },
 1322     { NULL, (0x85 << 16) + 0x041, "Terminate Discharge" },
 1323     { NULL, (0x85 << 16) + 0x042, "Below Remaining Capacity Limit" },
 1324     { NULL, (0x85 << 16) + 0x043, "Remaining Time Limit Expired" },
 1325     { NULL, (0x85 << 16) + 0x044, "Charging" },
 1326     { NULL, (0x85 << 16) + 0x045, "Discharging" },
 1327     { NULL, (0x85 << 16) + 0x046, "Fully Charged" },
 1328     { NULL, (0x85 << 16) + 0x047, "Fully Discharged" },
 1329     { NULL, (0x85 << 16) + 0x048, "Conditioning Flag" },
 1330     { NULL, (0x85 << 16) + 0x049, "At Rate OK" },
 1331     { NULL, (0x85 << 16) + 0x04a, "SMB Error Code" },
 1332     { NULL, (0x85 << 16) + 0x04b, "Need Replacement" },
 1333     { NULL, (0x85 << 16) + 0x060, "At Rate Time To Full" },
 1334     { NULL, (0x85 << 16) + 0x061, "At Rate Time To Empty" },
 1335     { NULL, (0x85 << 16) + 0x062, "Average Current" },
 1336     { NULL, (0x85 << 16) + 0x063, "Max Error" },
 1337     { NULL, (0x85 << 16) + 0x064, "Relative State Of Charge" },
 1338     { NULL, (0x85 << 16) + 0x065, "Absolute State Of Charge" },
 1339     { NULL, (0x85 << 16) + 0x066, "Remaining Capacity" },
 1340     { NULL, (0x85 << 16) + 0x067, "Full Charge Capacity" },
 1341     { NULL, (0x85 << 16) + 0x068, "Run Time To Empty" },
 1342     { NULL, (0x85 << 16) + 0x069, "Average Time To Empty" },
 1343     { NULL, (0x85 << 16) + 0x06a, "Average Time To Full" },
 1344     { NULL, (0x85 << 16) + 0x06b, "Cycle Count" },
 1345     { NULL, (0x85 << 16) + 0x080, "Batt. Pack Model Level" },
 1346     { NULL, (0x85 << 16) + 0x081, "Internal Charge Controller" },
 1347     { NULL, (0x85 << 16) + 0x082, "Primary Battery Support" },
 1348     { NULL, (0x85 << 16) + 0x083, "Design Capacity" },
 1349     { NULL, (0x85 << 16) + 0x084, "Specification Info" },
 1350     { NULL, (0x85 << 16) + 0x085, "Manufacturer Date" },
 1351     { NULL, (0x85 << 16) + 0x086, "Serial Number" },
 1352     { NULL, (0x85 << 16) + 0x087, "iManufacturerName" },
 1353     { NULL, (0x85 << 16) + 0x088, "iDeviceName" },
 1354     { NULL, (0x85 << 16) + 0x089, "iDeviceChemistry" },
 1355     { NULL, (0x85 << 16) + 0x08a, "Manufacturer Data" },
 1356     { NULL, (0x85 << 16) + 0x08b, "Rechargeable" },
 1357     { NULL, (0x85 << 16) + 0x08c, "Warning Capacity Limit" },
 1358     { NULL, (0x85 << 16) + 0x08d, "Capacity Granularity 1" },
 1359     { NULL, (0x85 << 16) + 0x08e, "Capacity Granularity 2" },
 1360     { NULL, (0x85 << 16) + 0x08f, "iOEMInformation" },
 1361     { NULL, (0x85 << 16) + 0x0c0, "Inhibit Charge" },
 1362     { NULL, (0x85 << 16) + 0x0c1, "Enable Polling" },
 1363     { NULL, (0x85 << 16) + 0x0c2, "Reset To Zero" },
 1364     { NULL, (0x85 << 16) + 0x0d0, "AC Present" },
 1365     { NULL, (0x85 << 16) + 0x0d1, "Battery Present" },
 1366     { NULL, (0x85 << 16) + 0x0d2, "Power Fail" },
 1367     { NULL, (0x85 << 16) + 0x0d3, "Alarm Inhibited" },
 1368     { NULL, (0x85 << 16) + 0x0d4, "Thermistor Under Range" },
 1369     { NULL, (0x85 << 16) + 0x0d5, "Thermistor Hot" },
 1370     { NULL, (0x85 << 16) + 0x0d6, "Thermistor Cold" },
 1371     { NULL, (0x85 << 16) + 0x0d7, "Thermistor Over Range" },
 1372     { NULL, (0x85 << 16) + 0x0d8, "Voltage Out Of Range" },
 1373     { NULL, (0x85 << 16) + 0x0d9, "Current Out Of Range" },
 1374     { NULL, (0x85 << 16) + 0x0da, "Current Not Regulated" },
 1375     { NULL, (0x85 << 16) + 0x0db, "Voltage Not Regulated" },
 1376     { NULL, (0x85 << 16) + 0x0dc, "Master Mode" },
 1377     { NULL, (0x85 << 16) + 0x0f0, "Charger Selector Support" },
 1378     { NULL, (0x85 << 16) + 0x0f1, "Charger Spec" },
 1379     { NULL, (0x85 << 16) + 0x0f2, "Level 2" },
 1380     { NULL, (0x85 << 16) + 0x0f3, "Level 3" },
 1381     { NULL, (0xf0 << 16) + 0x0f1, "Cash Drawer" },
 1382     { NULL, (0xf0 << 16) + 0x0f2, "Cash Drawer Number" },
 1383     { NULL, (0xf0 << 16) + 0x0f3, "Cash Drawer Set" },
 1384     { NULL, (0xf0 << 16) + 0x0f4, "Cash Drawer Status" },
 1385     { NULL },
 1386 };
 1387 
 1388 /* dialects are represented as:
 1389  *  langid + (dialectid << 10)
 1390  */
 1391 static struct genericstrtable langids[] =
 1392 {
 1393     { NULL, 0x0001 + (0x01 << 10), "Saudi Arabia" },
 1394     { NULL, 0x0001 + (0x02 << 10), "Iraq" },
 1395     { NULL, 0x0001 + (0x03 << 10), "Egypt" },
 1396     { NULL, 0x0001 + (0x04 << 10), "Libya" },
 1397     { NULL, 0x0001 + (0x05 << 10), "Algeria" },
 1398     { NULL, 0x0001 + (0x06 << 10), "Morocco" },
 1399     { NULL, 0x0001 + (0x07 << 10), "Tunesia" },
 1400     { NULL, 0x0001 + (0x08 << 10), "Oman" },
 1401     { NULL, 0x0001 + (0x09 << 10), "Yemen" },
 1402     { NULL, 0x0001 + (0x0a << 10), "Syria" },
 1403     { NULL, 0x0001 + (0x0b << 10), "Jordan" },
 1404     { NULL, 0x0001 + (0x0c << 10), "Lebanon" },
 1405     { NULL, 0x0001 + (0x0d << 10), "Kuwait" },
 1406     { NULL, 0x0001 + (0x0e << 10), "U.A.E" },
 1407     { NULL, 0x0001 + (0x0f << 10), "Bahrain" },
 1408     { NULL, 0x0001 + (0x10 << 10), "Qatar" },
 1409     { NULL, 0x0001, "Arabic" },
 1410     { NULL, 0x0002, "Bulgarian" },
 1411     { NULL, 0x0003, "Catalan" },
 1412     { NULL, 0x0004 + (0x01 << 10), "Traditional" },
 1413     { NULL, 0x0004 + (0x02 << 10), "Simplified" },
 1414     { NULL, 0x0004 + (0x03 << 10), "Hongkong SAR, PRC" },
 1415     { NULL, 0x0004 + (0x04 << 10), "Singapore" },
 1416     { NULL, 0x0004 + (0x05 << 10), "Macau SAR" },
 1417     { NULL, 0x0004, "Chinese" },
 1418     { NULL, 0x0005, "Czech" },
 1419     { NULL, 0x0006, "Danish" },
 1420     { NULL, 0x0007 + (0x01 << 10), "German" },
 1421     { NULL, 0x0007 + (0x02 << 10), "Swiss" },
 1422     { NULL, 0x0007 + (0x03 << 10), "Austrian" },
 1423     { NULL, 0x0007 + (0x04 << 10), "Luxembourg" },
 1424     { NULL, 0x0007 + (0x05 << 10), "Liechtenstein" },
 1425     { NULL, 0x0007, "German" },
 1426     { NULL, 0x0008, "Greek" },
 1427     { NULL, 0x0009 + (0x01 << 10), "US" },
 1428     { NULL, 0x0009 + (0x02 << 10), "UK" },
 1429     { NULL, 0x0009 + (0x03 << 10), "Australian" },
 1430     { NULL, 0x0009 + (0x04 << 10), "Canadian" },
 1431     { NULL, 0x0009 + (0x05 << 10), "New Zealand" },
 1432     { NULL, 0x0009 + (0x06 << 10), "Ireland" },
 1433     { NULL, 0x0009 + (0x07 << 10), "South Africa" },
 1434     { NULL, 0x0009 + (0x08 << 10), "Jamaica" },
 1435     { NULL, 0x0009 + (0x09 << 10), "Carribean" },
 1436     { NULL, 0x0009 + (0x0a << 10), "Belize" },
 1437     { NULL, 0x0009 + (0x0b << 10), "Trinidad" },
 1438     { NULL, 0x0009 + (0x0c << 10), "Zimbabwe" },
 1439     { NULL, 0x0009 + (0x0d << 10), "Philippines" },
 1440     { NULL, 0x0009, "English" },
 1441     { NULL, 0x000a + (0x01 << 10), "Castilian" },
 1442     { NULL, 0x000a + (0x02 << 10), "Mexican" },
 1443     { NULL, 0x000a + (0x03 << 10), "Modern" },
 1444     { NULL, 0x000a + (0x04 << 10), "Guatemala" },
 1445     { NULL, 0x000a + (0x05 << 10), "Costa Rica" },
 1446     { NULL, 0x000a + (0x06 << 10), "Panama" },
 1447     { NULL, 0x000a + (0x07 << 10), "Dominican Republic" },
 1448     { NULL, 0x000a + (0x08 << 10), "Venzuela" },
 1449     { NULL, 0x000a + (0x09 << 10), "Colombia" },
 1450     { NULL, 0x000a + (0x0a << 10), "Peru" },
 1451     { NULL, 0x000a + (0x0b << 10), "Argentina" },
 1452     { NULL, 0x000a + (0x0c << 10), "Ecuador" },
 1453     { NULL, 0x000a + (0x0d << 10), "Chile" },
 1454     { NULL, 0x000a + (0x0e << 10), "Uruguay" },
 1455     { NULL, 0x000a + (0x0f << 10), "Paraguay" },
 1456     { NULL, 0x000a + (0x10 << 10), "Bolivia" },
 1457     { NULL, 0x000a + (0x11 << 10), "El Salvador" },
 1458     { NULL, 0x000a + (0x12 << 10), "Honduras" },
 1459     { NULL, 0x000a + (0x13 << 10), "Nicaragua" },
 1460     { NULL, 0x000a + (0x14 << 10), "Puerto Rico" },
 1461     { NULL, 0x000a, "Spanish" },
 1462     { NULL, 0x000b, "Finnish" },
 1463     { NULL, 0x000c + (0x01 << 10), "French" },
 1464     { NULL, 0x000c + (0x02 << 10), "Belgian" },
 1465     { NULL, 0x000c + (0x03 << 10), "Canadian" },
 1466     { NULL, 0x000c + (0x04 << 10), "Swiss" },
 1467     { NULL, 0x000c + (0x05 << 10), "Luxembourg" },
 1468     { NULL, 0x000c + (0x06 << 10), "Monaco" },
 1469     { NULL, 0x000c, "French" },
 1470     { NULL, 0x000d, "Hebrew" },
 1471     { NULL, 0x000e, "Hungarian" },
 1472     { NULL, 0x000f, "Idelandic" },
 1473     { NULL, 0x0010 + (0x01 << 10), "Italian" },
 1474     { NULL, 0x0010 + (0x02 << 10), "Swiss" },
 1475     { NULL, 0x0010, "Italian" },
 1476     { NULL, 0x0011, "Japanese" },
 1477     { NULL, 0x0012 + (0x01 << 10), "Korean" },
 1478     { NULL, 0x0012, "Korean" },
 1479     { NULL, 0x0013 + (0x01 << 10), "Dutch" },
 1480     { NULL, 0x0013 + (0x02 << 10), "Belgian" },
 1481     { NULL, 0x0013, "Dutch" },
 1482     { NULL, 0x0014 + (0x01 << 10), "Bokmal" },
 1483     { NULL, 0x0014 + (0x02 << 10), "Nynorsk" },
 1484     { NULL, 0x0014, "Norwegian" },
 1485     { NULL, 0x0015, "Polish" },
 1486     { NULL, 0x0016 + (0x01 << 10), "Portuguese" },
 1487     { NULL, 0x0016 + (0x02 << 10), "Brazilian" },
 1488     { NULL, 0x0016, "Portuguese" },
 1489     { NULL, 0x0017, "forgotten" },
 1490     { NULL, 0x0018, "Romanian" },
 1491     { NULL, 0x0019, "Russian" },
 1492     { NULL, 0x001a + (0x01 << 10), "Croatian" },
 1493     { NULL, 0x001a + (0x02 << 10), "Latin" },
 1494     { NULL, 0x001a + (0x03 << 10), "Cyrillic" },
 1495     { NULL, 0x001a, "Serbian" },
 1496     { NULL, 0x001b, "Slovak" },
 1497     { NULL, 0x001c, "Albanian" },
 1498     { NULL, 0x001d + (0x01 << 10), "Swedish" },
 1499     { NULL, 0x001d + (0x02 << 10), "Finland" },
 1500     { NULL, 0x001d, "Swedish" },
 1501     { NULL, 0x001e, "Thai" },
 1502     { NULL, 0x001f, "Turkish" },
 1503     { NULL, 0x0020 + (0x01 << 10), "Pakistan" },
 1504     { NULL, 0x0020 + (0x02 << 10), "India" },
 1505     { NULL, 0x0020, "Urdu" },
 1506     { NULL, 0x0021, "Indonesian" },
 1507     { NULL, 0x0022, "Ukrainian" },
 1508     { NULL, 0x0023, "Belarusian" },
 1509     { NULL, 0x0024, "Slovenian" },
 1510     { NULL, 0x0025, "Estonian" },
 1511     { NULL, 0x0026, "Latvian" },
 1512     { NULL, 0x0027 + (0x01 << 10), "Lithuanian" },
 1513     { NULL, 0x0027, "Lithuanian" },
 1514     { NULL, 0x0028, "forgotten" },
 1515     { NULL, 0x0029, "Farsi" },
 1516     { NULL, 0x002a, "Vietnamese" },
 1517     { NULL, 0x002b, "Armenian" },
 1518     { NULL, 0x002c + (0x01 << 10), "Cyrillic" },
 1519     { NULL, 0x002c + (0x02 << 10), "Latin" },
 1520     { NULL, 0x002c, "Azeri" },
 1521     { NULL, 0x002d, "Basque" },
 1522     { NULL, 0x002e, "forgotten" },
 1523     { NULL, 0x002f, "Macedonian" },
 1524     { NULL, 0x0036, "Afrikaans" },
 1525     { NULL, 0x0037, "Georgian" },
 1526     { NULL, 0x0038, "Faeroese" },
 1527     { NULL, 0x0039, "Hindi" },
 1528     { NULL, 0x003e + (0x01 << 10), "Malaysia" },
 1529     { NULL, 0x003e + (0x02 << 10), "Brunei Darassalam" },
 1530     { NULL, 0x003e, "Malay" },
 1531     { NULL, 0x003f, "Kazak" },
 1532     { NULL, 0x0041, "Awahili" },
 1533     { NULL, 0x0043 + (0x01 << 10), "Latin" },
 1534     { NULL, 0x0043 + (0x02 << 10), "Cyrillic" },
 1535     { NULL, 0x0043, "Uzbek" },
 1536     { NULL, 0x0044, "Tatar" },
 1537     { NULL, 0x0045, "Bengali" },
 1538     { NULL, 0x0046, "Punjabi" },
 1539     { NULL, 0x0047, "Gujarati" },
 1540     { NULL, 0x0048, "Oriya" },
 1541     { NULL, 0x0049, "Tamil" },
 1542     { NULL, 0x004a, "Telugu" },
 1543     { NULL, 0x004b, "Kannada" },
 1544     { NULL, 0x004c, "Malayalam" },
 1545     { NULL, 0x004d, "Assamese" },
 1546     { NULL, 0x004e, "Marathi" },
 1547     { NULL, 0x004f, "Sanskrit" },
 1548     { NULL, 0x0057, "Konkani" },
 1549     { NULL, 0x0058, "Manipuri" },
 1550     { NULL, 0x0059, "Sindhi" },
 1551     { NULL, 0x0060 + (0x02 << 10), "India" },
 1552     { NULL, 0x0060, "Kashmiri" },
 1553     { NULL, 0x0061 + (0x02 << 10), "India" },
 1554     { NULL, 0x0061, "Nepali" },
 1555     { NULL },
 1556 };
 1557 
 1558 static struct genericstrtable countrycodes[] =
 1559 {
 1560         { NULL, 0, "Not supported" },
 1561         { NULL, 1, "Arabic" },
 1562         { NULL, 2, "Belgian" },
 1563         { NULL, 3, "Canadian-Bilingual" },
 1564         { NULL, 4, "Canadian-French" },
 1565         { NULL, 5, "Czech Republic" },
 1566         { NULL, 6, "Danish" },
 1567         { NULL, 7, "Finnish" },
 1568         { NULL, 8, "French" },
 1569         { NULL, 9, "German" },
 1570         { NULL, 10, "Greek" },
 1571         { NULL, 11, "Hebrew" },
 1572         { NULL, 12, "Hungary" },
 1573         { NULL, 13, "International (ISO)" },
 1574         { NULL, 14, "Italian" },
 1575         { NULL, 15, "Japan (Katakana)" },
 1576         { NULL, 16, "Korean" },
 1577         { NULL, 17, "Latin American" },
 1578         { NULL, 18, "Netherlands/Dutch" },
 1579         { NULL, 19, "Norwegian" },
 1580         { NULL, 20, "Persian (Farsi)" },
 1581         { NULL, 21, "Poland" },
 1582         { NULL, 22, "Portuguese" },
 1583         { NULL, 23, "Russia" },
 1584         { NULL, 24, "Slovakia" },
 1585         { NULL, 25, "Spanish" },
 1586         { NULL, 26, "Swedish" },
 1587         { NULL, 27, "Swiss/French" },
 1588         { NULL, 28, "Swiss/German" },
 1589         { NULL, 29, "Switzerland" },
 1590         { NULL, 30, "Taiwan" },
 1591         { NULL, 31, "Turkish-Q" },
 1592         { NULL, 32, "UK" },
 1593         { NULL, 33, "US" },
 1594         { NULL, 34, "Yugoslavia" },
 1595         { NULL, 35, "Turkish-F" },
 1596     { NULL },
 1597 };
 1598 
 1599 /* ---------------------------------------------------------------------- */
 1600 #endif /* _USB_SPEC_H */