Skip to content

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

Clone this wiki locally