hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
==========================
ALPS HID Touchpad Protocol
==========================
 
Introduction
------------
Currently ALPS HID driver supports U1 Touchpad device.
 
U1 device basic information.
 
==========    ======
Vender ID    0x044E
Product ID    0x120B
Version ID    0x0121
==========    ======
 
 
HID Descriptor
--------------
 
=======    ====================    =====    =======================================
Byte    Field            Value    Notes
=======    ====================    =====    =======================================
0    wHIDDescLength        001E    Length of HID Descriptor : 30 bytes
2    bcdVersion        0100    Compliant with Version 1.00
4    wReportDescLength    00B2    Report Descriptor is 178 Bytes (0x00B2)
6    wReportDescRegister    0002    Identifier to read Report Descriptor
8    wInputRegister        0003    Identifier to read Input Report
10    wMaxInputLength        0053    Input Report is 80 Bytes + 2
12    wOutputRegister        0000    Identifier to read Output Report
14    wMaxOutputLength    0000    No Output Reports
16    wCommandRegister    0005    Identifier for Command Register
18    wDataRegister        0006    Identifier for Data Register
20    wVendorID        044E    Vendor ID 0x044E
22    wProductID        120B    Product ID 0x120B
24    wVersionID        0121    Version 01.21
26    RESERVED        0000    RESERVED
=======    ====================    =====    =======================================
 
 
Report ID
---------
 
==========    =================  =========================================
ReportID-1    (Input Reports)       (HIDUsage-Mouse) for TP&SP
ReportID-2    (Input Reports)       (HIDUsage-keyboard) for TP
ReportID-3    (Input Reports)       (Vendor Usage: Max 10 finger data) for TP
ReportID-4    (Input Reports)       (Vendor Usage: ON bit data) for GP
ReportID-5    (Feature Reports)  Feature Reports
ReportID-6    (Input Reports)       (Vendor Usage: StickPointer data) for SP
ReportID-7    (Feature Reports)  Flash update (Bootloader)
==========    =================  =========================================
 
 
Data pattern
------------
 
=====    ==========    =====    =================
Case1    ReportID_1    TP/SP    Relative/Relative
Case2    ReportID_3    TP    Absolute
   ReportID_6    SP    Absolute
=====    ==========    =====    =================
 
 
Command Read/Write
------------------
To read/write to RAM, need to send a commands to the device.
 
The command format is as below.
 
DataByte(SET_REPORT)
 
=====    ======================
Byte1    Command Byte
Byte2    Address - Byte 0 (LSB)
Byte3    Address - Byte 1
Byte4    Address - Byte 2
Byte5    Address - Byte 3 (MSB)
Byte6    Value Byte
Byte7    Checksum
=====    ======================
 
Command Byte is read=0xD1/write=0xD2 .
 
Address is read/write RAM address.
 
Value Byte is writing data when you send the write commands.
 
When you read RAM, there is no meaning.
 
DataByte(GET_REPORT)
 
=====    ======================
Byte1    Response Byte
Byte2    Address - Byte 0 (LSB)
Byte3    Address - Byte 1
Byte4    Address - Byte 2
Byte5    Address - Byte 3 (MSB)
Byte6    Value Byte
Byte7    Checksum
=====    ======================
 
Read value is stored in Value Byte.
 
 
Packet Format
Touchpad data byte
------------------
 
 
======= ======= ======= ======= ======= ======= ======= ======= =====
-    b7    b6    b5    b4    b3    b2    b1    b0
======= ======= ======= ======= ======= ======= ======= ======= =====
1    0    0    SW6    SW5    SW4    SW3    SW2    SW1
2    0    0    0    Fcv    Fn3    Fn2    Fn1    Fn0
3    Xa0_7    Xa0_6    Xa0_5    Xa0_4    Xa0_3    Xa0_2    Xa0_1    Xa0_0
4    Xa0_15    Xa0_14    Xa0_13    Xa0_12    Xa0_11    Xa0_10    Xa0_9    Xa0_8
5    Ya0_7    Ya0_6    Ya0_5    Ya0_4    Ya0_3    Ya0_2    Ya0_1    Ya0_0
6    Ya0_15    Ya0_14    Ya0_13    Ya0_12    Ya0_11    Ya0_10    Ya0_9    Ya0_8
7    LFB0    Zs0_6    Zs0_5    Zs0_4    Zs0_3    Zs0_2    Zs0_1    Zs0_0
 
8    Xa1_7    Xa1_6    Xa1_5    Xa1_4    Xa1_3    Xa1_2    Xa1_1    Xa1_0
9    Xa1_15    Xa1_14    Xa1_13    Xa1_12    Xa1_11    Xa1_10    Xa1_9    Xa1_8
10    Ya1_7    Ya1_6    Ya1_5    Ya1_4    Ya1_3    Ya1_2    Ya1_1    Ya1_0
11    Ya1_15    Ya1_14    Ya1_13    Ya1_12    Ya1_11    Ya1_10    Ya1_9    Ya1_8
12    LFB1    Zs1_6    Zs1_5    Zs1_4    Zs1_3    Zs1_2    Zs1_1    Zs1_0
 
13    Xa2_7    Xa2_6    Xa2_5    Xa2_4    Xa2_3    Xa2_2    Xa2_1    Xa2_0
14    Xa2_15    Xa2_14    Xa2_13    Xa2_12    Xa2_11    Xa2_10    Xa2_9    Xa2_8
15    Ya2_7    Ya2_6    Ya2_5    Ya2_4    Ya2_3    Ya2_2    Ya2_1    Ya2_0
16    Ya2_15    Ya2_14    Ya2_13    Ya2_12    Ya2_11    Ya2_10    Ya2_9    Ya2_8
17    LFB2    Zs2_6    Zs2_5    Zs2_4    Zs2_3    Zs2_2    Zs2_1    Zs2_0
 
18    Xa3_7    Xa3_6    Xa3_5    Xa3_4    Xa3_3    Xa3_2    Xa3_1    Xa3_0
19    Xa3_15    Xa3_14    Xa3_13    Xa3_12    Xa3_11    Xa3_10    Xa3_9    Xa3_8
20    Ya3_7    Ya3_6    Ya3_5    Ya3_4    Ya3_3    Ya3_2    Ya3_1    Ya3_0
21    Ya3_15    Ya3_14    Ya3_13    Ya3_12    Ya3_11    Ya3_10    Ya3_9    Ya3_8
22    LFB3    Zs3_6    Zs3_5    Zs3_4    Zs3_3    Zs3_2    Zs3_1    Zs3_0
 
23    Xa4_7    Xa4_6    Xa4_5    Xa4_4    Xa4_3    Xa4_2    Xa4_1    Xa4_0
24    Xa4_15    Xa4_14    Xa4_13    Xa4_12    Xa4_11    Xa4_10    Xa4_9    Xa4_8
25    Ya4_7    Ya4_6    Ya4_5    Ya4_4    Ya4_3    Ya4_2    Ya4_1    Ya4_0
26    Ya4_15    Ya4_14    Ya4_13    Ya4_12    Ya4_11    Ya4_10    Ya4_9    Ya4_8
27    LFB4    Zs4_6    Zs4_5    Zs4_4    Zs4_3    Zs4_2    Zs4_1    Zs4_0
======= ======= ======= ======= ======= ======= ======= ======= =====
 
 
SW1-SW6:
   SW ON/OFF status
Xan_15-0(16bit):
   X Absolute data of the "n"th finger
Yan_15-0(16bit):
   Y Absolute data of the "n"th finger
Zsn_6-0(7bit):
   Operation area of the "n"th finger
 
 
StickPointer data byte
----------------------
 
======= ======= ======= ======= ======= ======= ======= ======= =====
-    b7    b6    b5    b4    b3    b2    b1    b0
======= ======= ======= ======= ======= ======= ======= ======= =====
Byte1    1    1    1    0    1    SW3    SW2    SW1
Byte2    X7    X6    X5    X4    X3    X2    X1    X0
Byte3    X15    X14    X13    X12    X11    X10    X9    X8
Byte4    Y7    Y6    Y5    Y4    Y3    Y2    Y1    Y0
Byte5    Y15    Y14    Y13    Y12    Y11    Y10    Y9    Y8
Byte6    Z7    Z6    Z5    Z4    Z3    Z2    Z1    Z0
Byte7    T&P    Z14    Z13    Z12    Z11    Z10    Z9    Z8
======= ======= ======= ======= ======= ======= ======= ======= =====
 
SW1-SW3:
   SW ON/OFF status
Xn_15-0(16bit):
   X Absolute data
Yn_15-0(16bit):
   Y Absolute data
Zn_14-0(15bit):
   Z