[colug-432] HID descriptor
Vince Herried
Vince at PlanetVince.com
Sat Nov 15 13:25:55 EST 2014
I have a graphics tablet that I'm working with a driver developer to get
working.
We have a driver that works for reporting the x, y, and z ( pressure )
but doesn't work with the buttons.
I've traced the device and have documented the usb stream as follows:
07 E0 01 01 80 ...... Button 1 (nearest the logo)
07 E0 01 01 40 ...... Button 2
07 E0 01 01 20 ...... Button 3
07 E0 01 01 10 ...... Button 4
07 E0 01 01 08 ...... Button 5
07 E0 01 01 04 ...... Button 6
07 E0 01 01 02 ...... Button 7
07 E0 01 01 01 ...... Button 8
07 E0 01 01 00 Button up
when the stylus is used the output is then
07 01 xx xx yy yy zz zz ( where xx is the axis and yy is y axis and zz is
the preasure and the 01 means the tip is in contact
07 02 ..... means barrel switch 1 is on
07 40 ...... means barrel switch 2 is on
07 80 ..... stylus is in proximity
07 C0 ...... stylus left the area
it appears I need to write a new version of the report descrptor
to support the buttons.
The existing driver has the following:
static const __u8 huion_tablet_rdesc_template[] = {
0x05, 0x0D, /* Usage Page (Digitizer),
*/
0x09, 0x02, /* Usage (Pen),
*/
0xA1, 0x01, /* Collection (Application),
*/
0x85, 0x07, /* Report ID (7),
*/
0x09, 0x20, /* Usage (Stylus),
*/
0xA0, /* Collection (Physical),
*/
0x14, /* Logical Minimum (0),
*/
0x25, 0x01, /* Logical Maximum (1),
*/
0x75, 0x01, /* Report Size (1),
*/
0x09, 0x42, /* Usage (Tip Switch),
*/
0x09, 0x44, /* Usage (Barrel Switch),
*/
0x09, 0x46, /* Usage (Tablet Pick),
*/
0x95, 0x03, /* Report Count (3),
*/
0x81, 0x02, /* Input (Variable),
*/
0x95, 0x03, /* Report Count (3),
*/
0x81, 0x03, /* Input (Constant, Variable),
*/
0x09, 0x32, /* Usage (In Range),
*/
0x95, 0x01, /* Report Count (1),
*/
0x81, 0x02, /* Input (Variable),
*/
0x95, 0x01, /* Report Count (1),
*/
0x81, 0x03, /* Input (Constant, Variable),
*/
0x75, 0x10, /* Report Size (16),
*/
0x95, 0x01, /* Report Count (1),
*/
0xA4, /* Push,
*/
0x05, 0x01, /* Usage Page (Desktop),
*/
0x65, 0x13, /* Unit (Inch),
*/
0x55, 0xFD, /* Unit Exponent (-3), 0x55,0x0d ?
*/
0x34, /* Physical Minimum (0),
*/
0x09, 0x30, /* Usage (X),
*/
0x27, HUION_PH(X_LM), /* Logical Maximum (PLACEHOLDER),
*/
0x47, HUION_PH(X_PM), /* Physical Maximum (PLACEHOLDER),
*/
0x81, 0x02, /* Input (Variable),
*/
0x09, 0x31, /* Usage (Y),
*/
0x27, HUION_PH(Y_LM), /* Logical Maximum (PLACEHOLDER),
*/
0x47, HUION_PH(Y_PM), /* Physical Maximum (PLACEHOLDER),
*/
0x81, 0x02, /* Input (Variable),
*/
0xB4, /* Pop,
*/
0x09, 0x30, /* Usage (Tip Pressure),
*/
0x27,
HUION_PH(PRESSURE_LM), /* Logical Maximum (PLACEHOLDER),
*/
0x81, 0x02, /* Input (Variable),
*/
0xC0, /* End Collection,
*/
0xC0 /* End Collection
*/
};
Any one know how to wedge the button information into this thigy?
My first foray into USB cracking.
----------
Vince
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.colug.net/pipermail/colug-432/attachments/20141115/3a84adf2/attachment.html
More information about the colug-432
mailing list