-
Notifications
You must be signed in to change notification settings - Fork 5
About Goodix TouchPad
Barryblueice edited this page Feb 10, 2026
·
1 revision
The HID descriptors obtained by Goodix touchpad are the same as those of ELAN, but there are two different register addresses(According to coreboot source code confirmed)。It is usually 0x01 or0x20.
Take GT7863 in the project as an example. The register address for the HID descriptor is 0x20. The obtained content is as follows:
05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02 95 06 81 03 05 01 09 30 09 31 09 38 15 81 25 7F 75 08 95 03 81 06 05 0C 0A 38 02 95 01 81 06 75 08 95 03 81 03 C0 C0 05 0D 09 05 A1 01 85 04 05 0D 09 22 A1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0F 09 51 81 02 05 01 15 00 26 7F 0D 75 10 55 0E 65 13 09 30 35 00 46 F0 01 95 01 81 02 46 46 01 26 6F 08 09 31 81 02 C0 05 0D 09 22 A1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0F 09 51 81 02 05 01 15 00 26 7F 0D 75 10 55 0E 65 13 09 30 35 00 46 F0 01 95 01 81 02 46 46 01 26 6F 08 09 31 81 02 C0 05 0D 09 22 A1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0F 09 51 81 02 05 01 15 00 26 7F 0D 75 10 55 0E 65 13 09 30 35 00 46 F0 01 95 01 81 02 46 46 01 26 6F 08 09 31 81 02 C0 05 0D 09 22 A1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0F 09 51 81 02 05 01 15 00 26 7F 0D 75 10 55 0E 65 13 09 30 35 00 46 F0 01 95 01 81 02 46 46 01 26 6F 08 09 31 81 02 C0 05 0D 09 22 A1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 75 01 95 02 81 03 95 01 75 04 25 0F 09 51 81 02 05 01 15 00 26 7F 0D 75 10 55 0E 65 13 09 30 35 00 46 F0 01 95 01 81 02 46 46 01 26 6F 08 09 31 81 02 C0 05 0D 55 0C 66 01 10 47 FF FF 00 00 27 FF FF 00 00 75 10 95 01 09 56 81 02 09 54 25 7F 95 01 75 08 81 02 05 09 09 01 25 01 75 01 95 01 81 02 95 07 81 03 05 0D 85 02 09 55 09 59 75 04 95 02 25 0F B1 02 85 07 09 60 75 01 95 01 15 00 25 01 B1 02 95 0F B1 03 06 00 FF 06 00 FF 85 06 09 C5 15 00 26 FF 00 75 08 96 00 01 B1 02 85 0D 09 C4 15 00 26 FF 00 75 08 95 04 B1 02 85 0C 09 C6 96 E0 02 75 08 B1 02 85 0B 09 C7 95 42 75 08 B1 02 C0 05 0D 09 0E A1 01 85 03 09 22 A1 00 09 52 15 00 25 0A 75 08 95 02 B1 02 C0 09 22 A1 00 85 05 09 57 09 58 15 00 75 01 95 02 25 03 B1 02 95 0E B1 03 C0 C0 06 00 FF 09 01 A1 01 85 0E 09 01 19 00 29 FF 15 00 25 FF 95 40 75 08 91 02 09 01 19 00 29 FF 15 00 25 FF 95 40 81 02 C0
The analysis is as follows:
Report ID 1: Mouse / Relative Movement / Wheel
| Content | Meaning |
|---|---|
| 05 01 | Usage Page (Generic Desktop) |
| 09 02 | Usage (Mouse) |
| A1 01 | Collection (Application) |
| 85 01 | Report ID 1 |
| 09 01 | Usage (Pointer) |
| A1 00 | Collection (Physical) |
| 05 09 | Usage Page (Button) |
| 19 01 | Usage Minimum (Button 1) |
| 29 02 | Usage Maximum (Button 2) |
| 15 00 | Logical Min 0 |
| 25 01 | Logical Max 1 |
| 75 01 | Report Size 1 bit |
| 95 02 | Report Count 2 |
| 81 02 | Input (Data, Variable) — Button state |
| 95 06 | Report Count 6 |
| 81 03 | Input (Constant) — Padding |
| 05 01 | Usage Page (Generic Desktop) |
| 09 30 | Usage (X) |
| 09 31 | Usage (Y) |
| 09 38 | Usage (Wheel) |
| 15 81 | Logical Min -127 |
| 25 7F | Logical Max 127 |
| 75 08 | Report Size 8 bits |
| 95 03 | Report Count 3 |
| 81 06 | Input (Data, Variable, Relative) — X/Y/Wheel movement |
| 05 0C | Usage Page (Consumer) |
| 0A 38 02 | Usage (AC Pan) |
| 95 01 | Report Count 1 |
| 81 06 | Input (Data, Variable, Relative) |
| 75 08 | Report Size 8 bits |
| 95 03 | Report Count 3 |
| 81 03 | Input (Constant) — Padding |
| C0 | End Collection (Physical) |
| C0 | End Collection (Application) |
Report ID 4 / 3 / 5: Multi-Touch Points (Touch Points)
| Content | Meaning |
|---|---|
| 05 0D | Usage Page (Digitizers) |
| 09 05 | Usage (Touch Pad) |
| A1 01 | Collection (Application) |
| 85 04 | Report ID 4 |
| 05 0D | Usage Page (Digitizers) |
| 09 22 | Usage (Finger) |
| A1 02 | Collection (Logical) |
| 15 00 | Logical Min 0 |
| 25 01 | Logical Max 1 |
| 09 47 | Usage (Tip Switch) |
| 09 42 | Usage (In Range) |
| 95 02 | Report Count 2 |
| 75 01 | Report Size 1 bit |
| 81 02 | Input (Data, Variable) — Finger state |
| 75 01 | Report Size 1 bit |
| 95 02 | Report Count 2 |
| 81 03 | Input (Constant) — Padding |
| 95 01 | Report Count 1 |
| 75 04 | Report Size 4 bits |
| 25 0F | Logical Max 15 |
| 09 51 | Usage (Contact Identifier) |
| 81 02 | Input (Data, Variable) — Finger ID |
| 05 01 | Usage Page (Generic Desktop) |
| 15 00 | Logical Min 0 |
| 26 7F 0D | Logical Max 3455 |
| 75 10 | Report Size 16 bits |
| 55 0E | Unit Exponent |
| 65 13 | Unit (SI Linear: mm) |
| 09 30 | Usage (X) |
| 35 00 | Physical Min |
| 46 F0 01 | Physical Max X |
| 95 01 | Report Count 1 |
| 81 02 | Input (Data, Variable) — X coordinate |
| 46 46 01 | Physical Max Y |
| 26 6F 08 | Logical Max Y |
| 09 31 | Usage (Y) |
| 81 02 | Input (Data, Variable) — Y coordinate |
| C0 | End Collection (Finger) |
| ... | Repeat for multiple fingers, similar structure |
Report ID 2 / 7 / 6: Additional Features / Pressure / Gestures
| Content | Meaning |
|---|---|
| 05 0D | Usage Page (Digitizers) |
| 85 02 | Report ID 2 |
| 09 55 / 09 59 | Usages (Pressure-related) |
| 75 04 | Report Size 4 bits |
| 95 02 | Report Count 2 |
| B1 02 | Feature (Data, Variable) — Pressure info |
| 85 07 | Report ID 7 |
| 09 60 | Usage |
| 75 01 | Report Size 1 bit |
| 95 01 | Report Count 1 |
| B1 02 | Feature (Data, Variable) — Gesture / Status |
Report ID 0E: Vendor-defined / Extended Info
| Content | Meaning |
|---|---|
| 06 00 FF | Vendor-defined Usage Page |
| 09 01 | Usage |
| A1 01 | Collection (Application) |
| 85 0E | Report ID 14 |
| 09 01 | Usage |
| 19 00 | Usage Minimum 0 |
| 29 FF | Usage Maximum 255 |
| 15 00 | Logical Min 0 |
| 25 FF | Logical Max 255 |
| 95 40 | Report Count 64 bytes |
| 75 08 | Report Size 8 bits |
| 91 02 | Output (Data, Variable) — Custom output |
| 81 02 | Input (Data, Variable) — Custom input |
| C0 | End Collection |