Research Notes
How drawing tablets talk to a computer, and how macOS expects a driver to talk to apps. Each note says where its claims come from. The notes index on GitHub explains the labels.
Wacom pen protocols
- Intuos Pro gen 3 — PTK-470/670/870 over USB and Bluetooth LE, including edge behavior
- Intuos Pro gen 2 — PTH-x60, CTL-x100, and many pen displays over USB and Bluetooth
- Intuos 10-byte format — Intuos 1–5, Intuos Pro gen 1, Intuos3, and the 2015–2018 consumer Intuos
- Consumer tablets — Graphire, Bamboo, and the shared touch and key container
- Pen displays — Cintiq, DTU, PL, Cintiq touch, and the ExpressKey Remote
Across Wacom tablets
- Switching into full-data mode — the feature report every tablet needs, and where to send it
- Pen tool codes — codes seen on hardware, and the eraser, Art Pen, and rotation rules
- Wireless and battery — transports by model and battery encodings
- LEDs and OLEDs — ring LEDs and Intuos4 key displays
Other
- Xencelabs — Pen Tablet, Pen Display, and Quick Keys: input and host writes
- macOS tablet event synthesis — the proximity, pen, click, and scroll fields apps check
What a tablet says
A tablet never tells the computer “a pen is here.” It sends a short burst of
numbers, a hundred or more times a second, and the driver decides what they mean.
These four examples come from an Intuos5 L (PTH-850) and an Intuos Pro L (PTH-860),
trimmed to the bytes that matter. The pen’s serial number appears as xx.
An Intuos5 pen touching the surface
02 E1 2A 68 22 8C 97 2A D1 3F
Ten bytes carry everything. 02 names the report, and E1 says
“a pen, in contact.” Position comes next: X is about 21,700 and Y about
17,700, out of a range twice the tablet’s nominal resolution. Pressure spreads
across three bytes and reads 1,209 of 2,047, a little over half. The last bytes hold
the tilt, about 21° one way and 17° the other.
The same pen, pressing a side button
02 E2 26 D4 21 FB 00 29 4C 87 02 E4 2A 12 21 9A 00 29 48 8A
Only the second byte changes. E2 means the lower button, and
E4 the upper one. Pressure reads zero because the pen hovers just above
the surface.
An Intuos Pro pen hovering, over USB
10 60 DF 69 00 94 62 00 00 00 21 0D 00 00 00 00 19 xx xx xx xx 42 08
The newer tablet spends more bytes and saves the driver some arithmetic.
60 means “in range, not touching.” X and Y take three bytes
each, read from the right: 27,103 and 25,236. Tilt sits in its own bytes,
21 and 0D, or 33° and 13°. 19 says the
tip floats 25 steps above the surface. Every report repeats the pen’s serial
number and its type code, 08 42, so the driver always knows which
pen it’s reading.
The same tablet, over Bluetooth
80 E1 AE A8 A3 64 A8 16 15 0D F9 FF 00 00 0F
E1 AE A8 A4 64 A8 16 15 0D F9 FF 00 00 0F
E1 AF A8 A4 64 A8 16 15 0D F9 FF 00 00 0F
…
xx xx xx xx 42 08
Bluetooth sends fewer, larger messages, so the tablet packs several pen samples into
each one, oldest first. Each 14-byte sample starts with its own status, here
E1 for a pen in contact, followed by X, Y, and pressure. These three
samples show the pen pressing down steadily at 5,800 of 8,191 while barely moving.
Unused slots stay empty, and the pen’s identity follows the
samples. A driver that reads only the first sample in each message draws a choppy line.
The protocol notes above give the full layouts.