On Sat, 01 Sep 2018 at 20:53:45 +0200, Mark Kettenis wrote:
> Not sure if that is indeed the right approach, but we can always fix
> it in a better way later.

The HID report descriptor contains this:

[...]
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0xA4,              //     Push
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x26, 0x00, 0x34,  //       Logical Maximum (13312)
0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,Null State)
0x09, 0x31,        //       Usage (Y)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x26, 0x00, 0x23,  //       Logical Maximum (8960)
0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,Null State)
0xB4,              //     Pop

So it matched HUP_GENERIC_DESKTOP and was setting the logical 
maximums to 13312/8960, but that chunk is nested in other 
collections.  I'm not sure how our HID Parser is supposed to deal 
with that.

Here's the full HID report descriptor from the i2c touchscreen:

0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x04,        // Usage (Touch Screen)
0xA1, 0x01,        // Collection (Application)
0x85, 0x01,        //   Report ID (1)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x01,        //     Report Size (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x75, 0x06,        //     Report Size (6)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x3F,        //     Logical Maximum (63)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x01,        //     Report Count (1)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0xA4,              //     Push
0x26, 0xC0, 0x09,  //       Logical Maximum (2496)
0x75, 0x10,        //       Report Size (16)
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //       Usage (X)
0x35, 0x00,        //       Physical Minimum (0)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x95, 0x02,        //       Report Count (2)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x26, 0x90, 0x06,  //       Logical Maximum (1680)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x09, 0x31,        //       Usage (Y)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x01,        //     Report Size (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x75, 0x06,        //     Report Size (6)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x3F,        //     Logical Maximum (63)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x01,        //     Report Count (1)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0xA4,              //     Push
0x26, 0xC0, 0x09,  //       Logical Maximum (2496)
0x75, 0x10,        //       Report Size (16)
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //       Usage (X)
0x35, 0x00,        //       Physical Minimum (0)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x95, 0x02,        //       Report Count (2)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x26, 0x90, 0x06,  //       Logical Maximum (1680)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x09, 0x31,        //       Usage (Y)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x01,        //     Report Size (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x75, 0x06,        //     Report Size (6)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x3F,        //     Logical Maximum (63)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x01,        //     Report Count (1)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0xA4,              //     Push
0x26, 0xC0, 0x09,  //       Logical Maximum (2496)
0x75, 0x10,        //       Report Size (16)
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //       Usage (X)
0x35, 0x00,        //       Physical Minimum (0)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x95, 0x02,        //       Report Count (2)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x26, 0x90, 0x06,  //       Logical Maximum (1680)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x09, 0x31,        //       Usage (Y)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x01,        //     Report Size (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x75, 0x06,        //     Report Size (6)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x3F,        //     Logical Maximum (63)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x01,        //     Report Count (1)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0xA4,              //     Push
0x26, 0xC0, 0x09,  //       Logical Maximum (2496)
0x75, 0x10,        //       Report Size (16)
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //       Usage (X)
0x35, 0x00,        //       Physical Minimum (0)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x95, 0x02,        //       Report Count (2)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x26, 0x90, 0x06,  //       Logical Maximum (1680)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x09, 0x31,        //       Usage (Y)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x42,        //     Usage (Tip Switch)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x01,        //     Report Count (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x01,        //     Report Size (1)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x75, 0x06,        //     Report Size (6)
0x09, 0x51,        //     Usage (0x51)
0x25, 0x3F,        //     Logical Maximum (63)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x26, 0xFF, 0x00,  //     Logical Maximum (255)
0x75, 0x08,        //     Report Size (8)
0x09, 0x48,        //     Usage (0x48)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x49,        //     Usage (0x49)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x01,        //     Report Count (1)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0xA4,              //     Push
0x26, 0xC0, 0x09,  //       Logical Maximum (2496)
0x75, 0x10,        //       Report Size (16)
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x09, 0x30,        //       Usage (X)
0x35, 0x00,        //       Physical Minimum (0)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x95, 0x02,        //       Report Count (2)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x26, 0x90, 0x06,  //       Logical Maximum (1680)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x09, 0x31,        //       Usage (Y)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0xC0,              //   End Collection
0x05, 0x0D,        //   Usage Page (Digitizer)
0x09, 0x56,        //   Usage (0x56)
0x55, 0x00,        //   Unit Exponent (0)
0x65, 0x00,        //   Unit (None)
0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //   Logical Maximum (2147483646)
0x95, 0x01,        //   Report Count (1)
0x75, 0x20,        //   Report Size (32)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x54,        //   Usage (0x54)
0x25, 0x7F,        //   Logical Maximum (127)
0x95, 0x01,        //   Report Count (1)
0x75, 0x08,        //   Report Size (8)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x85, 0x0A,        //   Report ID (10)
0x09, 0x55,        //   Usage (0x55)
0x25, 0x0A,        //   Logical Maximum (10)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x85, 0x44,        //   Report ID (68)
0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
0x09, 0xC5,        //   Usage (0xC5)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x96, 0x00, 0x01,  //   Report Count (256)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0xFF, 0x01,  // Usage Page (Reserved 0x01FF)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x85, 0x02,        //   Report ID (2)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x40,        //   Report Count (64)
0x09, 0x00,        //   Usage (0x00)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection
0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x85, 0x03,        //   Report ID (3)
0x75, 0x08,        //   Report Size (8)
0x95, 0x20,        //   Report Count (32)
0x09, 0x01,        //   Usage (0x01)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x85, 0x06,        //   Report ID (6)
0x09, 0x03,        //   Usage (0x03)
0x75, 0x08,        //   Report Size (8)
0x95, 0x12,        //   Report Count (18)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x09, 0x04,        //   Usage (0x04)
0x75, 0x08,        //   Report Size (8)
0x95, 0x03,        //   Report Count (3)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0xC0,              // End Collection
0x06, 0x01, 0xFF,  // Usage Page (Vendor Defined 0xFF01)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x85, 0x04,        //   Report ID (4)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x13,        //   Report Count (19)
0x09, 0x00,        //   Usage (0x00)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection
0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x02,        // Usage (Pen)
0xA1, 0x01,        // Collection (Application)
0x85, 0x07,        //   Report ID (7)
0x35, 0x00,        //   Physical Minimum (0)
0x09, 0x20,        //   Usage (Stylus)
0xA1, 0x00,        //   Collection (Physical)
0x09, 0x32,        //     Usage (In Range)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x44,        //     Usage (Barrel Switch)
0x09, 0x3C,        //     Usage (Invert)
0x09, 0x45,        //     Usage (Eraser)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x75, 0x01,        //     Report Size (1)
0x95, 0x05,        //     Report Count (5)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x03,        //     Report Count (3)
0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x09, 0x30,        //     Usage (X)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0xA4,              //     Push
0x55, 0x0F,        //       Unit Exponent (-1)
0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
0x46, 0xD3, 0x00,  //       Physical Maximum (211)
0x26, 0x00, 0x34,  //       Logical Maximum (13312)
0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,Null State)
0x09, 0x31,        //       Usage (Y)
0x46, 0x8D, 0x00,  //       Physical Maximum (141)
0x26, 0x00, 0x23,  //       Logical Maximum (8960)
0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,Null State)
0xB4,              //     Pop
0x05, 0x0D,        //     Usage Page (Digitizer)
0x09, 0x30,        //     Usage (Tip Pressure)
0x26, 0x00, 0x10,  //     Logical Maximum (4096)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x75, 0x08,        //     Report Size (8)
0x95, 0x01,        //     Report Count (1)
0x09, 0x3B,        //     Usage (Battery Strength)
0x25, 0x64,        //     Logical Maximum (100)
0x81, 0x42,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,Null State)
0x75, 0x10,        //     Report Size (16)
0x95, 0x01,        //     Report Count (1)
0x09, 0x3D,        //     Usage (X Tilt)
0xA4,              //     Push
0x65, 0x14,        //       Unit (System: English Rotation, Length: Centimeter)
0x55, 0x0E,        //       Unit Exponent (-2)
0x36, 0xD8, 0xDC,  //       Physical Minimum (-9000)
0x46, 0x28, 0x23,  //       Physical Maximum (9000)
0x16, 0xD8, 0xDC,  //       Logical Minimum (-9000)
0x26, 0x28, 0x23,  //       Logical Maximum (9000)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x09, 0x3E,        //       Usage (Y Tilt)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0x35, 0x00,        //       Physical Minimum (0)
0x47, 0xA0, 0x8C, 0x00, 0x00,  //       Physical Maximum (35999)
0x15, 0x00,        //       Logical Minimum (0)
0x27, 0xA0, 0x8C, 0x00, 0x00,  //       Logical Maximum (35999)
0x09, 0x3F,        //       Usage (Azimuth)
0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred 
State,No Null Position)
0xB4,              //     Pop
0x06, 0x00, 0xFF,  //     Usage Page (Vendor Defined 0xFF00)
0x75, 0x08,        //     Report Size (8)
0x95, 0x02,        //     Report Count (2)
0x09, 0x01,        //     Usage (0x01)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              //   End Collection
0xC0,              // End Collection
0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x81,        // Usage (0x81)
0xA1, 0x01,        // Collection (Application)
0x85, 0x17,        //   Report ID (23)
0x75, 0x08,        //   Report Size (8)
0x95, 0x1F,        //   Report Count (31)
0x09, 0x05,        //   Usage (0x05)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection
0x75, 0x08,        // Report Size (8)
0x15, 0x00,        // Logical Minimum (0)
0x26, 0xFF, 0x00,  // Logical Maximum (255)
0x06, 0x0B, 0xFF,  // Usage Page (Vendor Defined 0xFF0B)
0x09, 0x0B,        // Usage (0x0B)
0xA1, 0x01,        // Collection (Application)
0x95, 0x02,        //   Report Count (2)
0x09, 0x48,        //   Usage (0x48)
0x85, 0x48,        //   Report ID (72)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x95, 0x0F,        //   Report Count (15)
0x09, 0x29,        //   Usage (0x29)
0x85, 0x29,        //   Report ID (41)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x95, 0x1F,        //   Report Count (31)
0x09, 0x2A,        //   Usage (0x2A)
0x85, 0x2A,        //   Report ID (42)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x95, 0x3E,        //   Report Count (62)
0x09, 0x2B,        //   Usage (0x2B)
0x85, 0x2B,        //   Report ID (43)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x95, 0xFE,        //   Report Count (-2)
0x09, 0x2C,        //   Usage (0x2C)
0x85, 0x2C,        //   Report ID (44)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x96, 0xFE, 0x01,  //   Report Count (510)
0x09, 0x2D,        //   Usage (0x2D)
0x85, 0x2D,        //   Report ID (45)
0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x95, 0x0F,        //   Report Count (15)
0x09, 0x2E,        //   Usage (0x2E)
0x85, 0x2E,        //   Report ID (46)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x1F,        //   Report Count (31)
0x09, 0x2F,        //   Usage (0x2F)
0x85, 0x2F,        //   Report ID (47)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0x3E,        //   Report Count (62)
0x09, 0x30,        //   Usage (0x30)
0x85, 0x30,        //   Report ID (48)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x95, 0xFE,        //   Report Count (-2)
0x09, 0x31,        //   Usage (0x31)
0x85, 0x31,        //   Report ID (49)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x96, 0xFE, 0x01,  //   Report Count (510)
0x09, 0x32,        //   Usage (0x32)
0x85, 0x32,        //   Report ID (50)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x96, 0xFE, 0x03,  //   Report Count (1022)
0x09, 0x33,        //   Usage (0x33)
0x85, 0x33,        //   Report ID (51)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x96, 0xFE, 0x07,  //   Report Count (2046)
0x09, 0x34,        //   Usage (0x34)
0x85, 0x34,        //   Report ID (52)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x96, 0xFE, 0x0F,  //   Report Count (4094)
0x09, 0x35,        //   Usage (0x35)
0x85, 0x35,        //   Report ID (53)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x96, 0x3F, 0x1D,  //   Report Count (7487)
0x09, 0x36,        //   Usage (0x36)
0x85, 0x36,        //   Report ID (54)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection
0x06, 0x0F, 0xFF,  // Usage Page (Vendor Defined 0xFF0F)
0x09, 0x60,        // Usage (0x60)
0xA1, 0x01,        // Collection (Application)
0x85, 0x19,        //   Report ID (25)
0x75, 0x08,        //   Report Size (8)
0x95, 0x04,        //   Report Count (4)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x09, 0x00,        //   Usage (0x00)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position,Non-volatile)
0x85, 0x19,        //   Report ID (25)
0x75, 0x08,        //   Report Size (8)
0x95, 0x04,        //   Report Count (4)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x09, 0xC6,        //   Usage (0xC6)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection
0x06, 0x0F, 0xFF,  // Usage Page (Vendor Defined 0xFF0F)
0x09, 0x50,        // Usage (0x50)
0xA1, 0x01,        // Collection (Application)
0x85, 0x22,        //   Report ID (34)
0x75, 0x20,        //   Report Size (32)
0x95, 0x01,        //   Report Count (1)
0x17, 0x00, 0x00, 0x00, 0x80,  //   Logical Minimum (-2147483649)
0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //   Logical Maximum (2147483646)
0x09, 0x72,        //   Usage (0x72)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x73,        //   Usage (0x73)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x74,        //   Usage (0x74)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0x09, 0x75,        //   Usage (0x75)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No 
Null Position)
0xC0,              // End Collection

// 948 bytes

Reply via email to