MockTab

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

Across Wacom tablets

Other

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.