spbnick
Genius WizardPen 4x3, barely usable for drawing, supported
The popular Huion H610 Pro, about $75 on Amazon, supported
The rare Waltop Sirius, tilt detection, battery-free pen, supported
Huion WH1409, not supported yet
Yiynova MVP27U+RH, 27" IPS LCD, tilt detection, not supported yet
Plenty of people can't afford a Wacom:
Plenty of people can't afford a Wacom:
Same people who would rather use Linux
And, of course:
For Fun!
If Wacom is still better?
digimend.github.io
Huion
Huion
Huion
* or supposed to
Tablet
USB
HID interface
Report Descriptor
Report
Report
Report
Report
PC
Reports
Report Descriptor
09 01 DB 37 0D 46 4E 00
08 00 02 F7 00 00
ID
Pen
Mouse
Buttons
Coords
Pressure
Wheel
UC-Logic WP8060U
0x05, 0x0D, /* Usage Page (Digitizer), */
0x09, 0x02, /* Usage (Pen), */
0xA1, 0x01, /* Collection (Application), */
0x85, 0x09, /* Report ID (9), */
0x09, 0x20, /* Usage (Stylus), */
0xA0, /* Collection (Physical), */
0x75, 0x01, /* Report Size (1), */
0x09, 0x42, /* Usage (Tip Switch), */
0x09, 0x44, /* Usage (Barrel Switch), */
0x09, 0x46, /* Usage (Tablet Pick), */
0x14, /* Logical Minimum (0), */
0x25, 0x01, /* Logical Maximum (1), */
0x95, 0x03, /* Report Count (3), */
0x81, 0x02, /* Input (Variable), */
0x95, 0x05, /* Report Count (5), */
0x81, 0x01, /* Input (Constant), */
0x75, 0x10, /* Report Size (16), */
0x95, 0x01, /* Report Count (1), */
0x14, /* Logical Minimum (0), */
0xA4, /* Push, */
0x05, 0x01, /* Usage Page (Desktop), */
0x55, 0xFD, /* Unit Exponent (-3), */
0x65, 0x13, /* Unit (Inch), */
0x34, /* Physical Minimum (0), */
0x09, 0x30, /* Usage (X), */
0x46, 0x40, 0x1F, /* Physical Maximum (8000), */
0x26, 0xFF, 0x7F, /* Logical Maximum (32767), */
0x81, 0x02, /* Input (Variable), */
/* ... */
Report Descriptor
UC-Logic WP8060U (fixed)
USB
HID
Input
Generic
UC-Logic
Waltop
Kye
•••
Wacom
I2C
Bluetooth
Kernel
Evdev
libinput
Wayland
X.org
Userspace
Toolkits (GTK, Qt, ...)
Oh, boy...
001:003:000:STREAM 1375962321.017426
09 00 52 04 BA 04 00 00
001:003:000:STREAM 1375962321.021443
09 01 52 04 BA 04 05 00
001:003:000:STREAM 1375962321.025381
09 01 52 04 BA 04 07 00
001:003:000:STREAM 1375962321.029373
09 01 52 04 BA 04 0A 00
001:003:000:STREAM 1375962321.033402
09 01 52 04 BA 04 0C 00
001:003:000:STREAM 1375962321.045399
09 01 52 04 BA 04 08 00
001:003:000:STREAM 1375962321.049529
09 01 52 04 BA 04 04 00
001:003:000:STREAM 1375962321.053441
09 01 52 04 BA 04 01 00
001:003:000:STREAM 1375962321.057417
09 00 52 04 BA 04 00 00
Buttons, but no proximity bit?
Report ID 0x09
X coordinate
Y coordinate
Pressure
Little-endian!
003:009:000:STREAM 1436696385.627237
07 80 4B 44 E3 25 00 00
003:009:000:STREAM 1436696385.643256
07 81 4F 44 D7 25 4D 00
003:009:000:STREAM 1436696385.709249
07 81 4A 44 C0 25 FB 01
003:009:000:STREAM 1436696385.775340
07 81 4A 44 C0 25 05 06
003:009:000:STREAM 1436696389.879212
07 81 38 44 94 25 FF 07
003:009:000:STREAM 1436696389.899233
07 81 02 44 A6 25 9C 03
003:009:000:STREAM 1436696389.907201
07 81 C4 43 B8 25 47 01
003:009:000:STREAM 1436696389.967255
07 80 71 43 06 26 00 00
003:009:000:STREAM 1436696389.969218
07 C0 71 43 06 26 00 00
Hey, buttons, and... inverted proximity bit?
Report ID 0x07!
X coordinate
Y coordinate
Pressure
Little-endian!
003:004:000:STREAM 1534321568.045283
08 80 AF 2C 1B 70 00 00 00 00 00 00
003:004:000:STREAM 1534321568.051237
08 81 E8 2B 1B 70 DF 06 00 00 00 00
003:004:000:STREAM 1534321568.059257
08 81 11 2B 1B 70 87 0C 00 00 00 00
003:004:000:STREAM 1534321568.065262
08 81 23 2A 1B 70 97 10 00 00 00 00
003:004:000:STREAM 1534321568.073265
08 81 3D 29 27 70 AF 0E 00 00 00 00
003:004:000:STREAM 1534321568.079278
08 81 16 28 48 70 4F 09 00 00 00 00
003:004:000:STREAM 1534321568.087291
08 81 E7 26 89 70 0F 05 00 00 00 00
003:004:000:STREAM 1534321568.091278
08 81 91 26 AC 70 3F 03 00 00 00 00
Buttons, but... no proximity bit, again?
Report ID 0x08!
X coordinate, two parts
Y coordinate, two parts
Pressure
Little-endian!
Buttons not released on proximity-out!
05 0D 09 02 A1 01 85 07 09 20 A1 00 09 42 09 44
09 45 09 3C 09 43 09 44 15 00 25 01 75 01 95 06
81 02 09 32 75 01 95 01 .. .. ..
<?xml version="1.0"?>
<descriptor>
<usage_page>digitizer<!-- Digitizer (0Dh) --></usage_page>
<usage>digitizer_pen<!-- Pen (02h, application collection) --></usage>
<COLLECTION type="application">
<report_id>7</report_id>
<usage>digitizer_stylus<!-- Stylus (20h, logical collection) --></usage>
<COLLECTION type="physical">
<usage>digitizer_tip_switch<!-- Tip switch (42h, momentary control) --></usage>
. . .
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), */
. . .
usbhid-dump -ed
hidrd-convert -i hex -o xml
edit, edit, edit,
hidrd-convert -i xml -o code
If needed, add a .raw_event handler to e.g.:
UC-Logic WP8060U
UC-Logic WP8060U
UC-Logic WP8060U
UC-Logic WP8060U
UC-Logic WP8060U
UC-Logic WP8060U Pen
UC-Logic WP8060U Mouse
UC-Logic WP8060U Buttons
Those are
useless!
After the session is over, come by and get your free DIGImend stickers!