1 // Copyright 2017 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <stdint.h>
6 
7 // The following are actual report descriptors, either from the standard
8 // documentation or captured from real devices.
9 
10 // A boot mouse as defined in the HID documentation (appendix B.2)
11 // Note that it does not have a report id.
12 extern "C" const uint8_t boot_mouse_r_desc[50] = {
13     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
14     0x09, 0x02,        // Usage (Mouse)
15     0xA1, 0x01,        // Collection (Application)
16     0x09, 0x01,        //   Usage (Pointer)
17     0xA1, 0x00,        //   Collection (Physical)
18     0x05, 0x09,        //     Usage Page (Button)
19     0x19, 0x01,        //     Usage Minimum (0x01)
20     0x29, 0x03,        //     Usage Maximum (0x03)
21     0x15, 0x00,        //     Logical Minimum (0)
22     0x25, 0x01,        //     Logical Maximum (1)
23     0x95, 0x03,        //     Report Count (3)
24     0x75, 0x01,        //     Report Size (1)
25     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
26     0x95, 0x01,        //     Report Count (1)
27     0x75, 0x05,        //     Report Size (5)
28     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
29     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
30     0x09, 0x30,        //     Usage (X)
31     0x09, 0x31,        //     Usage (Y)
32     0x15, 0x81,        //     Logical Minimum (-127)
33     0x25, 0x7F,        //     Logical Maximum (127)
34     0x75, 0x08,        //     Report Size (8)
35     0x95, 0x02,        //     Report Count (2)
36     0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,No Null Position)
37     0xC0,              //   End Collection
38     0xC0,              // End Collection
39 };
40 
41 // Genuine HP USB 2-Button Optical Mouse P/N: 672652-001.
42 extern "C" const uint8_t hp_mouse_r_desc[46] = {
43     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
44     0x09, 0x02,        // Usage (Mouse)
45     0xA1, 0x01,        // Collection (Application)
46     0x09, 0x01,        //   Usage (Pointer)
47     0xA1, 0x00,        //   Collection (Physical)
48     0x05, 0x09,        //     Usage Page (Button)
49     0x19, 0x01,        //     Usage Minimum (0x01)
50     0x29, 0x03,        //     Usage Maximum (0x03)
51     0x15, 0x00,        //     Logical Minimum (0)
52     0x25, 0x01,        //     Logical Maximum (1)
53     0x95, 0x08,        //     Report Count (8)
54     0x75, 0x01,        //     Report Size (1)
55     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
56     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
57     0x09, 0x30,        //     Usage (X)
58     0x09, 0x31,        //     Usage (Y)
59     0x09, 0x38,        //     Usage (Wheel)
60     0x15, 0x81,        //     Logical Minimum (-127)
61     0x25, 0x7F,        //     Logical Maximum (127)
62     0x75, 0x08,        //     Report Size (8)
63     0x95, 0x03,        //     Report Count (3)
64     0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
65     0xC0,              //   End Collection
66     0xC0,              // End Collection
67 };
68 
69 // Composite device by Adafruit.
70 extern "C" const uint8_t trinket_r_desc[173] = {
71     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
72     0x09, 0x02,        // Usage (Mouse)
73     0xA1, 0x01,        // Collection (Application)
74     0x09, 0x01,        //   Usage (Pointer)
75     0xA1, 0x00,        //   Collection (Physical)
76     0x85, 0x01,        //     Report ID (1)
77     0x05, 0x09,        //     Usage Page (Button)
78     0x19, 0x01,        //     Usage Minimum (0x01)
79     0x29, 0x03,        //     Usage Maximum (0x03)
80     0x15, 0x00,        //     Logical Minimum (0)
81     0x25, 0x01,        //     Logical Maximum (1)
82     0x95, 0x03,        //     Report Count (3)
83     0x75, 0x01,        //     Report Size (1)
84     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
85     0x95, 0x01,        //     Report Count (1)
86     0x75, 0x05,        //     Report Size (5)
87     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
88     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
89     0x09, 0x30,        //     Usage (X)
90     0x09, 0x31,        //     Usage (Y)
91     0x15, 0x81,        //     Logical Minimum (-127)
92     0x25, 0x7F,        //     Logical Maximum (127)
93     0x75, 0x08,        //     Report Size (8)
94     0x95, 0x02,        //     Report Count (2)
95     0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,No Null Position)
96     0xC0,              //   End Collection
97     0xC0,              // End Collection
98 // ======== Keyboard ======================================================================
99     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
100     0x09, 0x06,        // Usage (Keyboard)
101     0xA1, 0x01,        // Collection (Application)
102     0x85, 0x02,        //   Report ID (2)
103     0x75, 0x01,        //   Report Size (1)
104     0x95, 0x08,        //   Report Count (8)
105     0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
106     0x19, 0xE0,        //   Usage Minimum (0xE0)
107     0x29, 0xE7,        //   Usage Maximum (0xE7)
108     0x15, 0x00,        //   Logical Minimum (0)
109     0x25, 0x01,        //   Logical Maximum (1)
110     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
111     0x95, 0x01,        //   Report Count (1)
112     0x75, 0x08,        //   Report Size (8)
113     0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
114     0x95, 0x05,        //   Report Count (5)
115     0x75, 0x01,        //   Report Size (1)
116     0x05, 0x08,        //   Usage Page (LEDs)
117     0x19, 0x01,        //   Usage Minimum (Num Lock)
118     0x29, 0x05,        //   Usage Maximum (Kana)
119     0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
120     0x95, 0x01,        //   Report Count (1)
121     0x75, 0x03,        //   Report Size (3)
122     0x91, 0x03,        //   Output (Const,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
123     0x95, 0x05,        //   Report Count (5)
124     0x75, 0x08,        //   Report Size (8)
125     0x15, 0x00,        //   Logical Minimum (0)
126     0x26, 0xA4, 0x00,  //   Logical Maximum (164)
127     0x05, 0x07,        //   Usage Page (Kbrd/Keypad)
128     0x19, 0x00,        //   Usage Minimum (0x00)
129     0x2A, 0xA4, 0x00,  //   Usage Maximum (0xA4)
130     0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,No Null Position)
131     0xC0,              // End Collection
132 // ==== Multimedia Keys ======================================================================
133     0x05, 0x0C,        // Usage Page (Consumer)
134     0x09, 0x01,        // Usage (Consumer Control)
135     0xA1, 0x01,        // Collection (Application)
136     0x85, 0x03,        //   Report ID (3)
137     0x19, 0x00,        //   Usage Minimum (Unassigned)
138     0x2A, 0x3C, 0x02,  //   Usage Maximum (AC Format)
139     0x15, 0x00,        //   Logical Minimum (0)
140     0x26, 0x3C, 0x02,  //   Logical Maximum (572)
141     0x95, 0x01,        //   Report Count (1)
142     0x75, 0x10,        //   Report Size (16)
143     0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,No Null Position)
144     0xC0,              // End Collection
145 // ======== Power Controls ==================================================================
146     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
147     0x09, 0x80,        // Usage (Sys Control)
148     0xA1, 0x01,        // Collection (Application)
149     0x85, 0x04,        //   Report ID (4)
150     0x95, 0x01,        //   Report Count (1)
151     0x75, 0x02,        //   Report Size (2)
152     0x15, 0x01,        //   Logical Minimum (1)
153     0x25, 0x03,        //   Logical Maximum (3)
154     0x09, 0x82,        //   Usage (Sys Sleep)
155     0x09, 0x81,        //   Usage (Sys Power Down)
156     0x09, 0x83,        //   Usage (Sys Wake Up)
157     0x81, 0x60,        //   Input (Data,Array,Abs,No Wrap,Linear,No Null State)
158     0x75, 0x06,        //   Report Size (6)
159     0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
160     0xC0,              // End Collection
161 };
162 
163 // Playstation controller 3 descriptor
164 extern "C" const uint8_t ps3_ds_r_desc[148] = {
165     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
166     0x09, 0x04,        // Usage (Joystick)
167     0xA1, 0x01,        // Collection (Application)
168     0xA1, 0x02,        //   Collection (Logical)
169     0x85, 0x01,        //     Report ID (1)
170     0x75, 0x08,        //     Report Size (8)
171     0x95, 0x01,        //     Report Count (1)
172     0x15, 0x00,        //     Logical Minimum (0)
173     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
174     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
175     0x75, 0x01,        //     Report Size (1)
176     0x95, 0x13,        //     Report Count (19)
177     0x15, 0x00,        //     Logical Minimum (0)
178     0x25, 0x01,        //     Logical Maximum (1)
179     0x35, 0x00,        //     Physical Minimum (0)
180     0x45, 0x01,        //     Physical Maximum (1)
181     0x05, 0x09,        //     Usage Page (Button)
182     0x19, 0x01,        //     Usage Minimum (0x01)
183     0x29, 0x13,        //     Usage Maximum (0x13)
184     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
185     0x75, 0x01,        //     Report Size (1)
186     0x95, 0x0D,        //     Report Count (13)
187     0x06, 0x00, 0xFF,  //     Usage Page (Vendor Defined 0xFF00)
188     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
189     0x15, 0x00,        //     Logical Minimum (0)
190     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
191     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
192     0x09, 0x01,        //     Usage (Pointer)
193     0xA1, 0x00,        //     Collection (Physical)
194     0x75, 0x08,        //       Report Size (8)
195     0x95, 0x04,        //       Report Count (4)
196     0x35, 0x00,        //       Physical Minimum (0)
197     0x46, 0xFF, 0x00,  //       Physical Maximum (255)
198     0x09, 0x30,        //       Usage (X)
199     0x09, 0x31,        //       Usage (Y)
200     0x09, 0x32,        //       Usage (Z)
201     0x09, 0x35,        //       Usage (Rz)
202     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
203     0xC0,              //     End Collection
204     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
205     0x75, 0x08,        //     Report Size (8)
206     0x95, 0x27,        //     Report Count (39)
207     0x09, 0x01,        //     Usage (Pointer)
208     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
209     0x75, 0x08,        //     Report Size (8)
210     0x95, 0x30,        //     Report Count (48)
211     0x09, 0x01,        //     Usage (Pointer)
212     0x91, 0x02,        //     Output (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
213     0x75, 0x08,        //     Report Size (8)
214     0x95, 0x30,        //     Report Count (48)
215     0x09, 0x01,        //     Usage (Pointer)
216     0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
217     0xC0,              //   End Collection
218 // ========================================================================================
219     0xA1, 0x02,        //   Collection (Logical)
220     0x85, 0x02,        //     Report ID (2)
221     0x75, 0x08,        //     Report Size (8)
222     0x95, 0x30,        //     Report Count (48)
223     0x09, 0x01,        //     Usage (Pointer)
224     0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
225     0xC0,              //   End Collection
226 // ========================================================================================
227     0xA1, 0x02,        //   Collection (Logical)
228     0x85, 0xEE,        //     Report ID (-18)
229     0x75, 0x08,        //     Report Size (8)
230     0x95, 0x30,        //     Report Count (48)
231     0x09, 0x01,        //     Usage (Pointer)
232     0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
233     0xC0,              //   End Collection
234 // ========================================================================================
235     0xA1, 0x02,        //   Collection (Logical)
236     0x85, 0xEF,        //     Report ID (-17)
237     0x75, 0x08,        //     Report Size (8)
238     0x95, 0x30,        //     Report Count (48)
239     0x09, 0x01,        //     Usage (Pointer)
240     0xB1, 0x02,        //     Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
241     0xC0,              //   End Collection
242     0xC0,              // End Collection
243 };
244 
245 // Touchpad acer12 switch.
246 extern "C" const uint8_t acer12_touch_r_desc[660] = {
247     0x05, 0x0D,        // Usage Page (Digitizer)
248     0x09, 0x04,        // Usage (Touch Screen)
249     0xA1, 0x01,        // Collection (Application)
250     0x85, 0x01,        //   Report ID (1)
251     0x09, 0x22,        //   Usage (Finger)
252     0xA1, 0x02,        //   Collection (Logical)
253     0x09, 0x42,        //     Usage (Tip Switch)
254     0x15, 0x00,        //     Logical Minimum (0)
255     0x25, 0x01,        //     Logical Maximum (1)
256     0x75, 0x01,        //     Report Size (1)
257     0x95, 0x01,        //     Report Count (1)
258     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
259     0x75, 0x01,        //     Report Size (1)
260     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
261     0x75, 0x06,        //     Report Size (6)
262     0x09, 0x51,        //     Usage (0x51)
263     0x25, 0x3F,        //     Logical Maximum (63)
264     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
265     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
266     0x75, 0x08,        //     Report Size (8)
267     0x09, 0x48,        //     Usage (0x48)
268     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
269     0x09, 0x49,        //     Usage (0x49)
270     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
271     0x95, 0x01,        //     Report Count (1)
272     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
273     0xA4,              //     Push
274     0x26, 0xD0, 0x0B,  //       Logical Maximum (3024)
275     0x75, 0x10,        //       Report Size (16)
276     0x55, 0x0F,        //       Unit Exponent (-1)
277     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
278     0x09, 0x30,        //       Usage (X)
279     0x35, 0x00,        //       Physical Minimum (0)
280     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
281     0x95, 0x02,        //       Report Count (2)
282     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
283     0x26, 0x10, 0x08,  //       Logical Maximum (2064)
284     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
285     0x09, 0x31,        //       Usage (Y)
286     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
287     0xB4,              //     Pop
288     0xC0,              //   End Collection
289     0x05, 0x0D,        //   Usage Page (Digitizer)
290     0x09, 0x22,        //   Usage (Finger)
291     0xA1, 0x02,        //   Collection (Logical)
292     0x05, 0x0D,        //     Usage Page (Digitizer)
293     0x09, 0x42,        //     Usage (Tip Switch)
294     0x15, 0x00,        //     Logical Minimum (0)
295     0x25, 0x01,        //     Logical Maximum (1)
296     0x75, 0x01,        //     Report Size (1)
297     0x95, 0x01,        //     Report Count (1)
298     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
299     0x75, 0x01,        //     Report Size (1)
300     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
301     0x75, 0x06,        //     Report Size (6)
302     0x09, 0x51,        //     Usage (0x51)
303     0x25, 0x3F,        //     Logical Maximum (63)
304     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
305     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
306     0x75, 0x08,        //     Report Size (8)
307     0x09, 0x48,        //     Usage (0x48)
308     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
309     0x09, 0x49,        //     Usage (0x49)
310     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
311     0x95, 0x01,        //     Report Count (1)
312     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
313     0xA4,              //     Push
314     0x26, 0xD0, 0x0B,  //       Logical Maximum (3024)
315     0x75, 0x10,        //       Report Size (16)
316     0x55, 0x0F,        //       Unit Exponent (-1)
317     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
318     0x09, 0x30,        //       Usage (X)
319     0x35, 0x00,        //       Physical Minimum (0)
320     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
321     0x95, 0x02,        //       Report Count (2)
322     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
323     0x26, 0x10, 0x08,  //       Logical Maximum (2064)
324     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
325     0x09, 0x31,        //       Usage (Y)
326     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
327     0xB4,              //     Pop
328     0xC0,              //   End Collection
329     0x05, 0x0D,        //   Usage Page (Digitizer)
330     0x09, 0x22,        //   Usage (Finger)
331     0xA1, 0x02,        //   Collection (Logical)
332     0x05, 0x0D,        //     Usage Page (Digitizer)
333     0x09, 0x42,        //     Usage (Tip Switch)
334     0x15, 0x00,        //     Logical Minimum (0)
335     0x25, 0x01,        //     Logical Maximum (1)
336     0x75, 0x01,        //     Report Size (1)
337     0x95, 0x01,        //     Report Count (1)
338     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
339     0x75, 0x01,        //     Report Size (1)
340     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
341     0x75, 0x06,        //     Report Size (6)
342     0x09, 0x51,        //     Usage (0x51)
343     0x25, 0x3F,        //     Logical Maximum (63)
344     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
345     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
346     0x75, 0x08,        //     Report Size (8)
347     0x09, 0x48,        //     Usage (0x48)
348     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
349     0x09, 0x49,        //     Usage (0x49)
350     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
351     0x95, 0x01,        //     Report Count (1)
352     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
353     0xA4,              //     Push
354     0x26, 0xD0, 0x0B,  //       Logical Maximum (3024)
355     0x75, 0x10,        //       Report Size (16)
356     0x55, 0x0F,        //       Unit Exponent (-1)
357     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
358     0x09, 0x30,        //       Usage (X)
359     0x35, 0x00,        //       Physical Minimum (0)
360     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
361     0x95, 0x02,        //       Report Count (2)
362     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
363     0x26, 0x10, 0x08,  //       Logical Maximum (2064)
364     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
365     0x09, 0x31,        //       Usage (Y)
366     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
367     0xB4,              //     Pop
368     0xC0,              //   End Collection
369     0x05, 0x0D,        //   Usage Page (Digitizer)
370     0x09, 0x22,        //   Usage (Finger)
371     0xA1, 0x02,        //   Collection (Logical)
372     0x05, 0x0D,        //     Usage Page (Digitizer)
373     0x09, 0x42,        //     Usage (Tip Switch)
374     0x15, 0x00,        //     Logical Minimum (0)
375     0x25, 0x01,        //     Logical Maximum (1)
376     0x75, 0x01,        //     Report Size (1)
377     0x95, 0x01,        //     Report Count (1)
378     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
379     0x75, 0x01,        //     Report Size (1)
380     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
381     0x75, 0x06,        //     Report Size (6)
382     0x09, 0x51,        //     Usage (0x51)
383     0x25, 0x3F,        //     Logical Maximum (63)
384     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
385     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
386     0x75, 0x08,        //     Report Size (8)
387     0x09, 0x48,        //     Usage (0x48)
388     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
389     0x09, 0x49,        //     Usage (0x49)
390     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
391     0x95, 0x01,        //     Report Count (1)
392     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
393     0xA4,              //     Push
394     0x26, 0xD0, 0x0B,  //       Logical Maximum (3024)
395     0x75, 0x10,        //       Report Size (16)
396     0x55, 0x0F,        //       Unit Exponent (-1)
397     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
398     0x09, 0x30,        //       Usage (X)
399     0x35, 0x00,        //       Physical Minimum (0)
400     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
401     0x95, 0x02,        //       Report Count (2)
402     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
403     0x26, 0x10, 0x08,  //       Logical Maximum (2064)
404     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
405     0x09, 0x31,        //       Usage (Y)
406     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
407     0xB4,              //     Pop
408     0xC0,              //   End Collection
409     0x05, 0x0D,        //   Usage Page (Digitizer)
410     0x09, 0x22,        //   Usage (Finger)
411     0xA1, 0x02,        //   Collection (Logical)
412     0x05, 0x0D,        //     Usage Page (Digitizer)
413     0x09, 0x42,        //     Usage (Tip Switch)
414     0x15, 0x00,        //     Logical Minimum (0)
415     0x25, 0x01,        //     Logical Maximum (1)
416     0x75, 0x01,        //     Report Size (1)
417     0x95, 0x01,        //     Report Count (1)
418     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
419     0x75, 0x01,        //     Report Size (1)
420     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
421     0x75, 0x06,        //     Report Size (6)
422     0x09, 0x51,        //     Usage (0x51)
423     0x25, 0x3F,        //     Logical Maximum (63)
424     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
425     0x26, 0xFF, 0x00,  //     Logical Maximum (255)
426     0x75, 0x08,        //     Report Size (8)
427     0x09, 0x48,        //     Usage (0x48)
428     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
429     0x09, 0x49,        //     Usage (0x49)
430     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
431     0x95, 0x01,        //     Report Count (1)
432     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
433     0xA4,              //     Push
434     0x26, 0xD0, 0x0B,  //       Logical Maximum (3024)
435     0x75, 0x10,        //       Report Size (16)
436     0x55, 0x0F,        //       Unit Exponent (-1)
437     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
438     0x09, 0x30,        //       Usage (X)
439     0x35, 0x00,        //       Physical Minimum (0)
440     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
441     0x95, 0x02,        //       Report Count (2)
442     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
443     0x26, 0x10, 0x08,  //       Logical Maximum (2064)
444     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
445     0x09, 0x31,        //       Usage (Y)
446     0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
447     0xB4,              //     Pop
448     0xC0,              //   End Collection
449     0x05, 0x0D,        //   Usage Page (Digitizer)
450     0x09, 0x56,        //   Usage (0x56)
451     0x55, 0x00,        //   Unit Exponent (0)
452     0x65, 0x00,        //   Unit (None)
453     0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //   Logical Maximum (2147483647)
454     0x95, 0x01,        //   Report Count (1)
455     0x75, 0x20,        //   Report Size (32)
456     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
457     0x09, 0x54,        //   Usage (0x54)
458     0x25, 0x7F,        //   Logical Maximum (127)
459     0x95, 0x01,        //   Report Count (1)
460     0x75, 0x08,        //   Report Size (8)
461     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
462     0x85, 0x0A,        //   Report ID (10)
463     0x09, 0x55,        //   Usage (0x55)
464     0x25, 0x0A,        //   Logical Maximum (10)
465     0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
466     0x85, 0x0E,        //   Report ID (14)
467     0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
468     0x09, 0xC5,        //   Usage (0xC5)
469     0x15, 0x00,        //   Logical Minimum (0)
470     0x26, 0xFF, 0x00,  //   Logical Maximum (255)
471     0x75, 0x08,        //   Report Size (8)
472     0x96, 0x00, 0x01,  //   Report Count (256)
473     0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
474     0xC0,              // End Collection
475 // ===========================================================================================
476     0x06, 0xFF, 0x01,  // Usage Page (Reserved 0x01FF)
477     0x09, 0x01,        // Usage (0x01)
478     0xA1, 0x01,        // Collection (Application)
479     0x85, 0x02,        //   Report ID (2)
480     0x15, 0x00,        //   Logical Minimum (0)
481     0x26, 0xFF, 0x00,  //   Logical Maximum (255)
482     0x75, 0x08,        //   Report Size (8)
483     0x95, 0x40,        //   Report Count (64)
484     0x09, 0x00,        //   Usage (0x00)
485     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
486     0xC0,              // End Collection
487 // ===========================================================================================
488     0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
489     0x09, 0x01,        // Usage (0x01)
490     0xA1, 0x01,        // Collection (Application)
491     0x85, 0x03,        //   Report ID (3)
492     0x75, 0x08,        //   Report Size (8)
493     0x95, 0x20,        //   Report Count (32)
494     0x09, 0x01,        //   Usage (0x01)
495     0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
496     0xC0,              // End Collection
497 // ===========================================================================================
498     0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
499     0x09, 0x01,        // Usage (0x01)
500     0xA1, 0x01,        // Collection (Application)
501     0x85, 0x06,        //   Report ID (6)
502     0x09, 0x03,        //   Usage (0x03)
503     0x75, 0x08,        //   Report Size (8)
504     0x95, 0x12,        //   Report Count (18)
505     0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
506     0x09, 0x04,        //   Usage (0x04)
507     0x75, 0x08,        //   Report Size (8)
508     0x95, 0x03,        //   Report Count (3)
509     0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,No Null Position,Non-volatile)
510     0xC0,              // End Collection
511 // ===========================================================================================
512     0x06, 0x01, 0xFF,  // Usage Page (Vendor Defined 0xFF01)
513     0x09, 0x01,        // Usage (0x01)
514     0xA1, 0x01,        // Collection (Application)
515     0x85, 0x04,        //   Report ID (4)
516     0x15, 0x00,        //   Logical Minimum (0)
517     0x26, 0xFF, 0x00,  //   Logical Maximum (255)
518     0x75, 0x08,        //   Report Size (8)
519     0x95, 0x13,        //   Report Count (19)
520     0x09, 0x00,        //   Usage (0x00)
521     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
522     0xC0,              // End Collection
523 // ===========================================================================================
524     0x05, 0x0D,        // Usage Page (Digitizer)
525     0x09, 0x02,        // Usage (Pen)
526     0xA1, 0x01,        // Collection (Application)
527     0x85, 0x07,        //   Report ID (7)
528     0x35, 0x00,        //   Physical Minimum (0)
529     0x09, 0x20,        //   Usage (Stylus)
530     0xA1, 0x00,        //   Collection (Physical)
531     0x09, 0x32,        //     Usage (In Range)
532     0x09, 0x42,        //     Usage (Tip Switch)
533     0x09, 0x44,        //     Usage (Barrel Switch)
534     0x09, 0x3C,        //     Usage (Invert)
535     0x09, 0x45,        //     Usage (Eraser)
536     0x15, 0x00,        //     Logical Minimum (0)
537     0x25, 0x01,        //     Logical Maximum (1)
538     0x75, 0x01,        //     Report Size (1)
539     0x95, 0x05,        //     Report Count (5)
540     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
541     0x95, 0x03,        //     Report Count (3)
542     0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,No Null Position)
543     0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
544     0x09, 0x30,        //     Usage (X)
545     0x75, 0x10,        //     Report Size (16)
546     0x95, 0x01,        //     Report Count (1)
547     0xA4,              //     Push
548     0x55, 0x0F,        //       Unit Exponent (-1)
549     0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
550     0x46, 0xFE, 0x00,  //       Physical Maximum (254)
551     0x26, 0xC0, 0x0F,  //       Logical Maximum (4032)
552     0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Null State)
553     0x09, 0x31,        //       Usage (Y)
554     0x46, 0xA9, 0x00,  //       Physical Maximum (169)
555     0x26, 0xC0, 0x0A,  //       Logical Maximum (2752)
556     0x81, 0x42,        //       Input (Data,Var,Abs,No Wrap,Linear,Null State)
557     0xB4,              //     Pop
558     0x05, 0x0D,        //     Usage Page (Digitizer)
559     0x09, 0x30,        //     Usage (Tip Pressure)
560     0x26, 0x00, 0x01,  //     Logical Maximum (256)
561     0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
562     0xC0,              //   End Collection
563     0xC0,              // End Collection
564 // ===========================================================================================
565     0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
566     0x09, 0x01,        // Usage (0x01)
567     0xA1, 0x01,        // Collection (Application)
568     0x85, 0x17,        //   Report ID (23)
569     0x75, 0x08,        //   Report Size (8)
570     0x95, 0x1F,        //   Report Count (31)
571     0x09, 0x05,        //   Usage (0x05)
572     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,No Null Position)
573     0xC0,              // End Collection
574 };
575 
576 // Syntetic descriptor for ACPI sensor device.
577 extern "C" const uint8_t eve_tablet_r_desc[28] = {
578     0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
579     0x09, 0x80,        // Usage (Sys Control)
580     0xA1, 0x01,        // Collection (Application)
581     0x0B, 0x01, 0x00, 0x00, 0xFF,  //   Usage (0x0-FFFFFF) [Vendor Defined]
582     0x15, 0x00,        //   Logical Minimum (0)
583     0x25, 0x01,        //   Logical Maximum (1)
584     0x75, 0x01,        //   Report Size (1)
585     0x95, 0x01,        //   Report Count (1)
586     0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
587     0x75, 0x07,        //   Report Size (7)
588     0x95, 0x01,        //   Report Count (1)
589     0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
590     0xC0,              // End Collection
591 };
592 
593 // Touch screen on Asus VT168H monitor.
594 extern "C" const uint8_t asus_touch_desc[945] = {
595 0x05, 0x0D,        // Usage Page (Digitizer)
596 0x09, 0x04,        // Usage (Touch Screen)
597 0xA1, 0x01,        // Collection (Application)
598 0x85, 0x01,        //   Report ID (1)
599 0x09, 0x22,        //   Usage (Finger)
600 0xA1, 0x02,        //   Collection (Logical)
601 0x09, 0x42,        //     Usage (Tip Switch)
602 0x15, 0x00,        //     Logical Minimum (0)
603 0x25, 0x01,        //     Logical Maximum (1)
604 0x75, 0x01,        //     Report Size (1)
605 0x95, 0x01,        //     Report Count (1)
606 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
607 0x75, 0x01,        //     Report Size (1)
608 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
609 0x75, 0x06,        //     Report Size (6)
610 0x09, 0x51,        //     Usage (0x51)
611 0x25, 0x3F,        //     Logical Maximum (63)
612 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
613 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
614 0x75, 0x08,        //     Report Size (8)
615 0x09, 0x48,        //     Usage (0x48)
616 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
617 0x09, 0x49,        //     Usage (0x49)
618 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
619 0x95, 0x01,        //     Report Count (1)
620 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
621 0xA4,              //     Push
622 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
623 0x75, 0x10,        //       Report Size (16)
624 0x55, 0x0F,        //       Unit Exponent (-1)
625 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
626 0x09, 0x30,        //       Usage (X)
627 0x35, 0x00,        //       Physical Minimum (0)
628 0x46, 0x59, 0x01,  //       Physical Maximum (345)
629 0x95, 0x02,        //       Report Count (2)
630 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
631 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
632 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
633 0x09, 0x31,        //       Usage (Y)
634 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
635 0xB4,              //     Pop
636 0xC0,              //   End Collection
637 0x05, 0x0D,        //   Usage Page (Digitizer)
638 0x09, 0x22,        //   Usage (Finger)
639 0xA1, 0x02,        //   Collection (Logical)
640 0x05, 0x0D,        //     Usage Page (Digitizer)
641 0x09, 0x42,        //     Usage (Tip Switch)
642 0x15, 0x00,        //     Logical Minimum (0)
643 0x25, 0x01,        //     Logical Maximum (1)
644 0x75, 0x01,        //     Report Size (1)
645 0x95, 0x01,        //     Report Count (1)
646 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
647 0x75, 0x01,        //     Report Size (1)
648 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
649 0x75, 0x06,        //     Report Size (6)
650 0x09, 0x51,        //     Usage (0x51)
651 0x25, 0x3F,        //     Logical Maximum (63)
652 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
653 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
654 0x75, 0x08,        //     Report Size (8)
655 0x09, 0x48,        //     Usage (0x48)
656 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
657 0x09, 0x49,        //     Usage (0x49)
658 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
659 0x95, 0x01,        //     Report Count (1)
660 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
661 0xA4,              //     Push
662 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
663 0x75, 0x10,        //       Report Size (16)
664 0x55, 0x0F,        //       Unit Exponent (-1)
665 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
666 0x09, 0x30,        //       Usage (X)
667 0x35, 0x00,        //       Physical Minimum (0)
668 0x46, 0x59, 0x01,  //       Physical Maximum (345)
669 0x95, 0x02,        //       Report Count (2)
670 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
671 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
672 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
673 0x09, 0x31,        //       Usage (Y)
674 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
675 0xB4,              //     Pop
676 0xC0,              //   End Collection
677 0x05, 0x0D,        //   Usage Page (Digitizer)
678 0x09, 0x22,        //   Usage (Finger)
679 0xA1, 0x02,        //   Collection (Logical)
680 0x05, 0x0D,        //     Usage Page (Digitizer)
681 0x09, 0x42,        //     Usage (Tip Switch)
682 0x15, 0x00,        //     Logical Minimum (0)
683 0x25, 0x01,        //     Logical Maximum (1)
684 0x75, 0x01,        //     Report Size (1)
685 0x95, 0x01,        //     Report Count (1)
686 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
687 0x75, 0x01,        //     Report Size (1)
688 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
689 0x75, 0x06,        //     Report Size (6)
690 0x09, 0x51,        //     Usage (0x51)
691 0x25, 0x3F,        //     Logical Maximum (63)
692 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
693 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
694 0x75, 0x08,        //     Report Size (8)
695 0x09, 0x48,        //     Usage (0x48)
696 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
697 0x09, 0x49,        //     Usage (0x49)
698 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
699 0x95, 0x01,        //     Report Count (1)
700 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
701 0xA4,              //     Push
702 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
703 0x75, 0x10,        //       Report Size (16)
704 0x55, 0x0F,        //       Unit Exponent (-1)
705 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
706 0x09, 0x30,        //       Usage (X)
707 0x35, 0x00,        //       Physical Minimum (0)
708 0x46, 0x59, 0x01,  //       Physical Maximum (345)
709 0x95, 0x02,        //       Report Count (2)
710 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
711 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
712 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
713 0x09, 0x31,        //       Usage (Y)
714 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
715 0xB4,              //     Pop
716 0xC0,              //   End Collection
717 0x05, 0x0D,        //   Usage Page (Digitizer)
718 0x09, 0x22,        //   Usage (Finger)
719 0xA1, 0x02,        //   Collection (Logical)
720 0x05, 0x0D,        //     Usage Page (Digitizer)
721 0x09, 0x42,        //     Usage (Tip Switch)
722 0x15, 0x00,        //     Logical Minimum (0)
723 0x25, 0x01,        //     Logical Maximum (1)
724 0x75, 0x01,        //     Report Size (1)
725 0x95, 0x01,        //     Report Count (1)
726 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
727 0x75, 0x01,        //     Report Size (1)
728 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
729 0x75, 0x06,        //     Report Size (6)
730 0x09, 0x51,        //     Usage (0x51)
731 0x25, 0x3F,        //     Logical Maximum (63)
732 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
733 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
734 0x75, 0x08,        //     Report Size (8)
735 0x09, 0x48,        //     Usage (0x48)
736 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
737 0x09, 0x49,        //     Usage (0x49)
738 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
739 0x95, 0x01,        //     Report Count (1)
740 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
741 0xA4,              //     Push
742 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
743 0x75, 0x10,        //       Report Size (16)
744 0x55, 0x0F,        //       Unit Exponent (-1)
745 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
746 0x09, 0x30,        //       Usage (X)
747 0x35, 0x00,        //       Physical Minimum (0)
748 0x46, 0x59, 0x01,  //       Physical Maximum (345)
749 0x95, 0x02,        //       Report Count (2)
750 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
751 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
752 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
753 0x09, 0x31,        //       Usage (Y)
754 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
755 0xB4,              //     Pop
756 0xC0,              //   End Collection
757 0x05, 0x0D,        //   Usage Page (Digitizer)
758 0x09, 0x22,        //   Usage (Finger)
759 0xA1, 0x02,        //   Collection (Logical)
760 0x05, 0x0D,        //     Usage Page (Digitizer)
761 0x09, 0x42,        //     Usage (Tip Switch)
762 0x15, 0x00,        //     Logical Minimum (0)
763 0x25, 0x01,        //     Logical Maximum (1)
764 0x75, 0x01,        //     Report Size (1)
765 0x95, 0x01,        //     Report Count (1)
766 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
767 0x75, 0x01,        //     Report Size (1)
768 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
769 0x75, 0x06,        //     Report Size (6)
770 0x09, 0x51,        //     Usage (0x51)
771 0x25, 0x3F,        //     Logical Maximum (63)
772 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
773 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
774 0x75, 0x08,        //     Report Size (8)
775 0x09, 0x48,        //     Usage (0x48)
776 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
777 0x09, 0x49,        //     Usage (0x49)
778 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
779 0x95, 0x01,        //     Report Count (1)
780 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
781 0xA4,              //     Push
782 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
783 0x75, 0x10,        //       Report Size (16)
784 0x55, 0x0F,        //       Unit Exponent (-1)
785 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
786 0x09, 0x30,        //       Usage (X)
787 0x35, 0x00,        //       Physical Minimum (0)
788 0x46, 0x59, 0x01,  //       Physical Maximum (345)
789 0x95, 0x02,        //       Report Count (2)
790 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
791 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
792 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
793 0x09, 0x31,        //       Usage (Y)
794 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
795 0xB4,              //     Pop
796 0xC0,              //   End Collection
797 0x05, 0x0D,        //   Usage Page (Digitizer)
798 0x09, 0x22,        //   Usage (Finger)
799 0xA1, 0x02,        //   Collection (Logical)
800 0x05, 0x0D,        //     Usage Page (Digitizer)
801 0x09, 0x42,        //     Usage (Tip Switch)
802 0x15, 0x00,        //     Logical Minimum (0)
803 0x25, 0x01,        //     Logical Maximum (1)
804 0x75, 0x01,        //     Report Size (1)
805 0x95, 0x01,        //     Report Count (1)
806 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
807 0x75, 0x01,        //     Report Size (1)
808 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
809 0x75, 0x06,        //     Report Size (6)
810 0x09, 0x51,        //     Usage (0x51)
811 0x25, 0x3F,        //     Logical Maximum (63)
812 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
813 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
814 0x75, 0x08,        //     Report Size (8)
815 0x09, 0x48,        //     Usage (0x48)
816 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
817 0x09, 0x49,        //     Usage (0x49)
818 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
819 0x95, 0x01,        //     Report Count (1)
820 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
821 0xA4,              //     Push
822 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
823 0x75, 0x10,        //       Report Size (16)
824 0x55, 0x0F,        //       Unit Exponent (-1)
825 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
826 0x09, 0x30,        //       Usage (X)
827 0x35, 0x00,        //       Physical Minimum (0)
828 0x46, 0x59, 0x01,  //       Physical Maximum (345)
829 0x95, 0x02,        //       Report Count (2)
830 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
831 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
832 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
833 0x09, 0x31,        //       Usage (Y)
834 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
835 0xB4,              //     Pop
836 0xC0,              //   End Collection
837 0x05, 0x0D,        //   Usage Page (Digitizer)
838 0x09, 0x22,        //   Usage (Finger)
839 0xA1, 0x02,        //   Collection (Logical)
840 0x05, 0x0D,        //     Usage Page (Digitizer)
841 0x09, 0x42,        //     Usage (Tip Switch)
842 0x15, 0x00,        //     Logical Minimum (0)
843 0x25, 0x01,        //     Logical Maximum (1)
844 0x75, 0x01,        //     Report Size (1)
845 0x95, 0x01,        //     Report Count (1)
846 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
847 0x75, 0x01,        //     Report Size (1)
848 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
849 0x75, 0x06,        //     Report Size (6)
850 0x09, 0x51,        //     Usage (0x51)
851 0x25, 0x3F,        //     Logical Maximum (63)
852 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
853 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
854 0x75, 0x08,        //     Report Size (8)
855 0x09, 0x48,        //     Usage (0x48)
856 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
857 0x09, 0x49,        //     Usage (0x49)
858 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
859 0x95, 0x01,        //     Report Count (1)
860 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
861 0xA4,              //     Push
862 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
863 0x75, 0x10,        //       Report Size (16)
864 0x55, 0x0F,        //       Unit Exponent (-1)
865 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
866 0x09, 0x30,        //       Usage (X)
867 0x35, 0x00,        //       Physical Minimum (0)
868 0x46, 0x59, 0x01,  //       Physical Maximum (345)
869 0x95, 0x02,        //       Report Count (2)
870 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
871 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
872 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
873 0x09, 0x31,        //       Usage (Y)
874 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
875 0xB4,              //     Pop
876 0xC0,              //   End Collection
877 0x05, 0x0D,        //   Usage Page (Digitizer)
878 0x09, 0x22,        //   Usage (Finger)
879 0xA1, 0x02,        //   Collection (Logical)
880 0x05, 0x0D,        //     Usage Page (Digitizer)
881 0x09, 0x42,        //     Usage (Tip Switch)
882 0x15, 0x00,        //     Logical Minimum (0)
883 0x25, 0x01,        //     Logical Maximum (1)
884 0x75, 0x01,        //     Report Size (1)
885 0x95, 0x01,        //     Report Count (1)
886 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
887 0x75, 0x01,        //     Report Size (1)
888 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
889 0x75, 0x06,        //     Report Size (6)
890 0x09, 0x51,        //     Usage (0x51)
891 0x25, 0x3F,        //     Logical Maximum (63)
892 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
893 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
894 0x75, 0x08,        //     Report Size (8)
895 0x09, 0x48,        //     Usage (0x48)
896 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
897 0x09, 0x49,        //     Usage (0x49)
898 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
899 0x95, 0x01,        //     Report Count (1)
900 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
901 0xA4,              //     Push
902 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
903 0x75, 0x10,        //       Report Size (16)
904 0x55, 0x0F,        //       Unit Exponent (-1)
905 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
906 0x09, 0x30,        //       Usage (X)
907 0x35, 0x00,        //       Physical Minimum (0)
908 0x46, 0x59, 0x01,  //       Physical Maximum (345)
909 0x95, 0x02,        //       Report Count (2)
910 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
911 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
912 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
913 0x09, 0x31,        //       Usage (Y)
914 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
915 0xB4,              //     Pop
916 0xC0,              //   End Collection
917 0x05, 0x0D,        //   Usage Page (Digitizer)
918 0x09, 0x22,        //   Usage (Finger)
919 0xA1, 0x02,        //   Collection (Logical)
920 0x05, 0x0D,        //     Usage Page (Digitizer)
921 0x09, 0x42,        //     Usage (Tip Switch)
922 0x15, 0x00,        //     Logical Minimum (0)
923 0x25, 0x01,        //     Logical Maximum (1)
924 0x75, 0x01,        //     Report Size (1)
925 0x95, 0x01,        //     Report Count (1)
926 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
927 0x75, 0x01,        //     Report Size (1)
928 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
929 0x75, 0x06,        //     Report Size (6)
930 0x09, 0x51,        //     Usage (0x51)
931 0x25, 0x3F,        //     Logical Maximum (63)
932 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
933 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
934 0x75, 0x08,        //     Report Size (8)
935 0x09, 0x48,        //     Usage (0x48)
936 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
937 0x09, 0x49,        //     Usage (0x49)
938 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
939 0x95, 0x01,        //     Report Count (1)
940 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
941 0xA4,              //     Push
942 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
943 0x75, 0x10,        //       Report Size (16)
944 0x55, 0x0F,        //       Unit Exponent (-1)
945 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
946 0x09, 0x30,        //       Usage (X)
947 0x35, 0x00,        //       Physical Minimum (0)
948 0x46, 0x59, 0x01,  //       Physical Maximum (345)
949 0x95, 0x02,        //       Report Count (2)
950 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
951 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
952 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
953 0x09, 0x31,        //       Usage (Y)
954 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
955 0xB4,              //     Pop
956 0xC0,              //   End Collection
957 0x05, 0x0D,        //   Usage Page (Digitizer)
958 0x09, 0x22,        //   Usage (Finger)
959 0xA1, 0x02,        //   Collection (Logical)
960 0x05, 0x0D,        //     Usage Page (Digitizer)
961 0x09, 0x42,        //     Usage (Tip Switch)
962 0x15, 0x00,        //     Logical Minimum (0)
963 0x25, 0x01,        //     Logical Maximum (1)
964 0x75, 0x01,        //     Report Size (1)
965 0x95, 0x01,        //     Report Count (1)
966 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
967 0x75, 0x01,        //     Report Size (1)
968 0x81, 0x03,        //     Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
969 0x75, 0x06,        //     Report Size (6)
970 0x09, 0x51,        //     Usage (0x51)
971 0x25, 0x3F,        //     Logical Maximum (63)
972 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
973 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
974 0x75, 0x08,        //     Report Size (8)
975 0x09, 0x48,        //     Usage (0x48)
976 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
977 0x09, 0x49,        //     Usage (0x49)
978 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
979 0x95, 0x01,        //     Report Count (1)
980 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
981 0xA4,              //     Push
982 0x26, 0xF0, 0x0C,  //       Logical Maximum (3312)
983 0x75, 0x10,        //       Report Size (16)
984 0x55, 0x0F,        //       Unit Exponent (-1)
985 0x65, 0x11,        //       Unit (System: SI Linear, Length: Centimeter)
986 0x09, 0x30,        //       Usage (X)
987 0x35, 0x00,        //       Physical Minimum (0)
988 0x46, 0x59, 0x01,  //       Physical Maximum (345)
989 0x95, 0x02,        //       Report Count (2)
990 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
991 0x26, 0x50, 0x07,  //       Logical Maximum (1872)
992 0x46, 0xC2, 0x00,  //       Physical Maximum (194)
993 0x09, 0x31,        //       Usage (Y)
994 0x81, 0x02,        //       Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
995 0xB4,              //     Pop
996 0xC0,              //   End Collection
997 0x05, 0x0D,        //   Usage Page (Digitizer)
998 0x09, 0x56,        //   Usage (0x56)
999 0x55, 0x00,        //   Unit Exponent (0)
1000 0x65, 0x00,        //   Unit (None)
1001 0x27, 0xFF, 0xFF, 0xFF, 0x7F,  //   Logical Maximum (2147483646)
1002 0x95, 0x01,        //   Report Count (1)
1003 0x75, 0x20,        //   Report Size (32)
1004 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1005 0x09, 0x54,        //   Usage (0x54)
1006 0x25, 0x7F,        //   Logical Maximum (127)
1007 0x95, 0x01,        //   Report Count (1)
1008 0x75, 0x08,        //   Report Size (8)
1009 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1010 0x85, 0x0A,        //   Report ID (10)
1011 0x09, 0x55,        //   Usage (0x55)
1012 0x25, 0x0A,        //   Logical Maximum (10)
1013 0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
1014 0x85, 0x44,        //   Report ID (68)
1015 0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
1016 0x09, 0xC5,        //   Usage (0xC5)
1017 0x15, 0x00,        //   Logical Minimum (0)
1018 0x26, 0xFF, 0x00,  //   Logical Maximum (255)
1019 0x75, 0x08,        //   Report Size (8)
1020 0x96, 0x00, 0x01,  //   Report Count (256)
1021 0xB1, 0x02,        //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
1022 0xC0,              // End Collection
1023 0x06, 0xFF, 0x01,  // Usage Page (Reserved 0x01FF)
1024 0x09, 0x01,        // Usage (0x01)
1025 0xA1, 0x01,        // Collection (Application)
1026 0x85, 0x02,        //   Report ID (2)
1027 0x15, 0x00,        //   Logical Minimum (0)
1028 0x26, 0xFF, 0x00,  //   Logical Maximum (255)
1029 0x75, 0x08,        //   Report Size (8)
1030 0x95, 0x40,        //   Report Count (64)
1031 0x09, 0x00,        //   Usage (0x00)
1032 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1033 0xC0,              // End Collection
1034 0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
1035 0x09, 0x01,        // Usage (0x01)
1036 0xA1, 0x01,        // Collection (Application)
1037 0x85, 0x03,        //   Report ID (3)
1038 0x75, 0x08,        //   Report Size (8)
1039 0x95, 0x3F,        //   Report Count (63)
1040 0x09, 0x01,        //   Usage (0x01)
1041 0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
1042 0xC0,              // End Collection
1043 0x06, 0x01, 0xFF,  // Usage Page (Vendor Defined 0xFF01)
1044 0x09, 0x01,        // Usage (0x01)
1045 0xA1, 0x01,        // Collection (Application)
1046 0x85, 0x04,        //   Report ID (4)
1047 0x15, 0x00,        //   Logical Minimum (0)
1048 0x26, 0xFF, 0x00,  //   Logical Maximum (255)
1049 0x75, 0x08,        //   Report Size (8)
1050 0x95, 0x13,        //   Report Count (19)
1051 0x09, 0x00,        //   Usage (0x00)
1052 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1053 0xC0,              // End Collection
1054 };
1055 
1056 extern "C" const uint8_t eve_touchpad_v2_r_desc[560] = {
1057 0x05, 0x0D,        // Usage Page (Digitizer)
1058 0x09, 0x05,        // Usage (Touch Pad)
1059 0xA1, 0x01,        // Collection (Application)
1060 0x85, 0x01,        //   Report ID (1)
1061 0x05, 0x09,        //   Usage Page (Button)
1062 0x19, 0x01,        //   Usage Minimum (0x01)
1063 0x29, 0x01,        //   Usage Maximum (0x01)
1064 0x15, 0x00,        //   Logical Minimum (0)
1065 0x25, 0x01,        //   Logical Maximum (1)
1066 0x75, 0x01,        //   Report Size (1)
1067 0x95, 0x01,        //   Report Count (1)
1068 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1069 0x05, 0x0D,        //   Usage Page (Digitizer)
1070 0x09, 0x54,        //   Usage (0x54)
1071 0x75, 0x07,        //   Report Size (7)
1072 0x95, 0x01,        //   Report Count (1)
1073 0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1074 0x05, 0x0D,        //   Usage Page (Digitizer)
1075 0x09, 0x22,        //   Usage (Finger)
1076 0xA1, 0x02,        //   Collection (Logical)
1077 0x09, 0x42,        //     Usage (Tip Switch)
1078 0x15, 0x00,        //     Logical Minimum (0)
1079 0x25, 0x01,        //     Logical Maximum (1)
1080 0x75, 0x01,        //     Report Size (1)
1081 0x95, 0x01,        //     Report Count (1)
1082 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1083 0x09, 0x32,        //     Usage (In Range)
1084 0x75, 0x07,        //     Report Size (7)
1085 0x95, 0x01,        //     Report Count (1)
1086 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1087 0x09, 0x51,        //     Usage (0x51)
1088 0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
1089 0x75, 0x10,        //     Report Size (16)
1090 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1091 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
1092 0x09, 0x30,        //     Usage (X)
1093 0x55, 0x0E,        //     Unit Exponent (-2)
1094 0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
1095 0x35, 0x00,        //     Physical Minimum (0)
1096 0x46, 0x06, 0x04,  //     Physical Maximum (1030)
1097 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1098 0x75, 0x10,        //     Report Size (16)
1099 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1100 0x09, 0x31,        //     Usage (Y)
1101 0x46, 0xA8, 0x02,  //     Physical Maximum (680)
1102 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1103 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1104 0x05, 0x0D,        //     Usage Page (Digitizer)
1105 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1106 0x09, 0x48,        //     Usage (0x48)
1107 0x75, 0x10,        //     Report Size (16)
1108 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1109 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1110 0x09, 0x49,        //     Usage (0x49)
1111 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1112 0x09, 0x30,        //     Usage (Tip Pressure)
1113 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
1114 0x75, 0x08,        //     Report Size (8)
1115 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1116 0x09, 0x3F,        //     Usage (Azimuth)
1117 0x16, 0x00, 0x00,  //     Logical Minimum (0)
1118 0x26, 0x68, 0x01,  //     Logical Maximum (360)
1119 0x75, 0x10,        //     Report Size (16)
1120 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1121 0xC0,              //   End Collection
1122 0x05, 0x0D,        //   Usage Page (Digitizer)
1123 0x09, 0x22,        //   Usage (Finger)
1124 0xA1, 0x02,        //   Collection (Logical)
1125 0x09, 0x42,        //     Usage (Tip Switch)
1126 0x15, 0x00,        //     Logical Minimum (0)
1127 0x25, 0x01,        //     Logical Maximum (1)
1128 0x75, 0x01,        //     Report Size (1)
1129 0x95, 0x01,        //     Report Count (1)
1130 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1131 0x09, 0x32,        //     Usage (In Range)
1132 0x75, 0x07,        //     Report Size (7)
1133 0x95, 0x01,        //     Report Count (1)
1134 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1135 0x09, 0x51,        //     Usage (0x51)
1136 0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
1137 0x75, 0x10,        //     Report Size (16)
1138 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1139 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
1140 0x09, 0x30,        //     Usage (X)
1141 0x55, 0x0E,        //     Unit Exponent (-2)
1142 0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
1143 0x35, 0x00,        //     Physical Minimum (0)
1144 0x46, 0x06, 0x04,  //     Physical Maximum (1030)
1145 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1146 0x75, 0x10,        //     Report Size (16)
1147 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1148 0x09, 0x31,        //     Usage (Y)
1149 0x46, 0xA8, 0x02,  //     Physical Maximum (680)
1150 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1151 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1152 0x05, 0x0D,        //     Usage Page (Digitizer)
1153 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1154 0x09, 0x48,        //     Usage (0x48)
1155 0x75, 0x10,        //     Report Size (16)
1156 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1157 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1158 0x09, 0x49,        //     Usage (0x49)
1159 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1160 0x09, 0x30,        //     Usage (Tip Pressure)
1161 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
1162 0x75, 0x08,        //     Report Size (8)
1163 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1164 0x09, 0x3F,        //     Usage (Azimuth)
1165 0x16, 0x00, 0x00,  //     Logical Minimum (0)
1166 0x26, 0x68, 0x01,  //     Logical Maximum (360)
1167 0x75, 0x10,        //     Report Size (16)
1168 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1169 0xC0,              //   End Collection
1170 0x05, 0x0D,        //   Usage Page (Digitizer)
1171 0x09, 0x22,        //   Usage (Finger)
1172 0xA1, 0x02,        //   Collection (Logical)
1173 0x09, 0x42,        //     Usage (Tip Switch)
1174 0x15, 0x00,        //     Logical Minimum (0)
1175 0x25, 0x01,        //     Logical Maximum (1)
1176 0x75, 0x01,        //     Report Size (1)
1177 0x95, 0x01,        //     Report Count (1)
1178 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1179 0x09, 0x32,        //     Usage (In Range)
1180 0x75, 0x07,        //     Report Size (7)
1181 0x95, 0x01,        //     Report Count (1)
1182 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1183 0x09, 0x51,        //     Usage (0x51)
1184 0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
1185 0x75, 0x10,        //     Report Size (16)
1186 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1187 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
1188 0x09, 0x30,        //     Usage (X)
1189 0x55, 0x0E,        //     Unit Exponent (-2)
1190 0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
1191 0x35, 0x00,        //     Physical Minimum (0)
1192 0x46, 0x06, 0x04,  //     Physical Maximum (1030)
1193 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1194 0x75, 0x10,        //     Report Size (16)
1195 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1196 0x09, 0x31,        //     Usage (Y)
1197 0x46, 0xA8, 0x02,  //     Physical Maximum (680)
1198 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1199 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1200 0x05, 0x0D,        //     Usage Page (Digitizer)
1201 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1202 0x09, 0x48,        //     Usage (0x48)
1203 0x75, 0x10,        //     Report Size (16)
1204 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1205 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1206 0x09, 0x49,        //     Usage (0x49)
1207 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1208 0x09, 0x30,        //     Usage (Tip Pressure)
1209 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
1210 0x75, 0x08,        //     Report Size (8)
1211 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1212 0x09, 0x3F,        //     Usage (Azimuth)
1213 0x16, 0x00, 0x00,  //     Logical Minimum (0)
1214 0x26, 0x68, 0x01,  //     Logical Maximum (360)
1215 0x75, 0x10,        //     Report Size (16)
1216 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1217 0xC0,              //   End Collection
1218 0x05, 0x0D,        //   Usage Page (Digitizer)
1219 0x09, 0x22,        //   Usage (Finger)
1220 0xA1, 0x02,        //   Collection (Logical)
1221 0x09, 0x42,        //     Usage (Tip Switch)
1222 0x15, 0x00,        //     Logical Minimum (0)
1223 0x25, 0x01,        //     Logical Maximum (1)
1224 0x75, 0x01,        //     Report Size (1)
1225 0x95, 0x01,        //     Report Count (1)
1226 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1227 0x09, 0x32,        //     Usage (In Range)
1228 0x75, 0x07,        //     Report Size (7)
1229 0x95, 0x01,        //     Report Count (1)
1230 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1231 0x09, 0x51,        //     Usage (0x51)
1232 0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
1233 0x75, 0x10,        //     Report Size (16)
1234 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1235 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
1236 0x09, 0x30,        //     Usage (X)
1237 0x55, 0x0E,        //     Unit Exponent (-2)
1238 0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
1239 0x35, 0x00,        //     Physical Minimum (0)
1240 0x46, 0x06, 0x04,  //     Physical Maximum (1030)
1241 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1242 0x75, 0x10,        //     Report Size (16)
1243 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1244 0x09, 0x31,        //     Usage (Y)
1245 0x46, 0xA8, 0x02,  //     Physical Maximum (680)
1246 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1247 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1248 0x05, 0x0D,        //     Usage Page (Digitizer)
1249 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1250 0x09, 0x48,        //     Usage (0x48)
1251 0x75, 0x10,        //     Report Size (16)
1252 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1253 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1254 0x09, 0x49,        //     Usage (0x49)
1255 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1256 0x09, 0x30,        //     Usage (Tip Pressure)
1257 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
1258 0x75, 0x08,        //     Report Size (8)
1259 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1260 0x09, 0x3F,        //     Usage (Azimuth)
1261 0x16, 0x00, 0x00,  //     Logical Minimum (0)
1262 0x26, 0x68, 0x01,  //     Logical Maximum (360)
1263 0x75, 0x10,        //     Report Size (16)
1264 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1265 0xC0,              //   End Collection
1266 0x05, 0x0D,        //   Usage Page (Digitizer)
1267 0x09, 0x22,        //   Usage (Finger)
1268 0xA1, 0x02,        //   Collection (Logical)
1269 0x09, 0x42,        //     Usage (Tip Switch)
1270 0x15, 0x00,        //     Logical Minimum (0)
1271 0x25, 0x01,        //     Logical Maximum (1)
1272 0x75, 0x01,        //     Report Size (1)
1273 0x95, 0x01,        //     Report Count (1)
1274 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1275 0x09, 0x32,        //     Usage (In Range)
1276 0x75, 0x07,        //     Report Size (7)
1277 0x95, 0x01,        //     Report Count (1)
1278 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1279 0x09, 0x51,        //     Usage (0x51)
1280 0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)
1281 0x75, 0x10,        //     Report Size (16)
1282 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1283 0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
1284 0x09, 0x30,        //     Usage (X)
1285 0x55, 0x0E,        //     Unit Exponent (-2)
1286 0x65, 0x11,        //     Unit (System: SI Linear, Length: Centimeter)
1287 0x35, 0x00,        //     Physical Minimum (0)
1288 0x46, 0x06, 0x04,  //     Physical Maximum (1030)
1289 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1290 0x75, 0x10,        //     Report Size (16)
1291 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1292 0x09, 0x31,        //     Usage (Y)
1293 0x46, 0xA8, 0x02,  //     Physical Maximum (680)
1294 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1295 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1296 0x05, 0x0D,        //     Usage Page (Digitizer)
1297 0x26, 0x80, 0x33,  //     Logical Maximum (13184)
1298 0x09, 0x48,        //     Usage (0x48)
1299 0x75, 0x10,        //     Report Size (16)
1300 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1301 0x26, 0x00, 0x22,  //     Logical Maximum (8704)
1302 0x09, 0x49,        //     Usage (0x49)
1303 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1304 0x09, 0x30,        //     Usage (Tip Pressure)
1305 0x26, 0xFF, 0x00,  //     Logical Maximum (255)
1306 0x75, 0x08,        //     Report Size (8)
1307 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1308 0x09, 0x3F,        //     Usage (Azimuth)
1309 0x16, 0x00, 0x00,  //     Logical Minimum (0)
1310 0x26, 0x68, 0x01,  //     Logical Maximum (360)
1311 0x75, 0x10,        //     Report Size (16)
1312 0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
1313 0xC0,              //   End Collection
1314 0xC0,              // End Collection
1315 
1316 // 560 bytes
1317 };
1318