Lines Matching +full:15 +full:- +full:input
1 // SPDX-License-Identifier: GPL-2.0-only
19 /* Filled in by udev-hid-bpf */
34 * To switch the tablet use e.g. https://github.com/whot/huion-switcher
37 * This BPF works for both modes. The huion-switcher tool sets the
38 * HUION_FIRMWARE_ID udev property - if that is set then we disable the firmware
54 * # 0x81, 0x02, // Input (Data,Var,Abs) 15
59 * https://github.com/whot/huion-switcher
81 * # 0x81, 0x02, // Input (Data,Var,Abs) 28
85 * # 0x81, 0x02, // Input (Data,Var,Abs) 36
86 * # 0x81, 0x03, // Input (Cnst,Var,Abs) 38
90 * # 0x55, 0x0d, // Unit Exponent (-3) 46
97 * # 0x81, 0x02, // Input (Data,Var,Abs) 62
103 * # 0x81, 0x02, // Input (Data,Var,Abs) 75
106 * # 0x15, 0x81, // Logical Minimum (-127) 81
110 * # 0x81, 0x02, // Input (Data,Var,Abs) 89
113 …15 00 25 01 75 01 95 06 81 02 09 32 75 01 95 01 81 02 81 03 05 01 09 30 09 31 55 0d 65 33 26 ff 7f…
121 * # 0x09, 0x0e, // Usage (System Multi-Axis Controller) 2
134 * # 0x81, 0x02, // Input (Data,Var,Abs) 28
137 * # 0x81, 0x02, // Input (Data,Var,Abs) 34
139 * # 0x81, 0x03, // Input (Cnst,Var,Abs) 38
143 * # 0x16, 0x00, 0x80, // Logical Minimum (-32768) 46
147 * # 0x81, 0x06, // Input (Data,Var,Rel) 56
158 * # 0x81, 0x01, // Input (Cnst,Arr,Abs) 79
161 * # 0x81, 0x01, // Input (Cnst,Arr,Abs) 85
164 * # 0x81, 0x01, // Input (Cnst,Arr,Abs) 91
167 * # 0x81, 0x01, // Input (Cnst,Arr,Abs) 97
170 * # 0x81, 0x01, // Input (Cnst,Arr,Abs) 103
185 * # 0x81, 0x02, // Input (Data,Var,Abs) 130
192 * # 0x81, 0x00, // Input (Data,Arr,Abs) 145
194 …15 00 25 01 75 01 95 01 a1 00 05 09 09 01 81 02 05 0d 09 33 81 02 95 06 81 03 a1 02 05 01 09 37 16…
215 // -- Byte 0 in report
221 // Byte 1 in report - just exists so we get to be a tablet pad
225 Input(Var|Abs)
227 Input(Const)
228 // Bytes 2/3 in report - just exists so we get to be a tablet pad
234 Input(Var|Abs)
237 LogicalRange_i8(-1, 1)
240 Input(Var|Rel)
247 Input(Var|Abs)
249 Input(Const)
260 // -- Byte 0 in report
264 // -- Byte 1 in report
271 Input(Var|Abs)
273 Input(Const)
276 Input(Var|Abs)
282 UnitExponent(-1)
286 Input(Var|Abs) // Bytes 2+3
290 Input(Var|Abs) // Bytes 4+5
295 Input(Var|Abs) // Byte 6+7
298 LogicalRange_i8(-60, 60)
301 Input(Var|Abs) // Byte 8+9
322 Input(Var|Abs)
324 Input(Const)
327 Input(Var|Abs)
333 UnitExponent(-1)
340 Input(Var|Abs)
345 Input(Var|Abs)
350 Input(Var|Abs)
353 Input(Const)
354 LogicalRange_i8(-60, 60)
361 Input(Var|Abs)
377 Input(Var|Abs)
379 Input(Const)
380 // Bytes 2/3 - x/y just exist so we get to be a tablet pad
386 Input(Var|Abs)
393 Input(Var|Abs)
397 LogicalRange_i8(-1, 1)
400 Input(Var|Rel)
404 Input(Var|Rel)
423 __s32 rdesc_size = hctx->size; in SEC()
435 sizeof(EXPECTED_FIRMWARE_ID) - 1) == 0; in SEC()
455 * the udev property (e.g. huion-switcher run manually) in SEC()
479 * Button 1: 03 00 05 00 00 00 00 00 -> b in SEC()
480 * Button 2: 03 00 08 00 00 00 00 00 -> e in SEC()
481 * Button 3: 03 00 0c 00 00 00 00 00 -> i in SEC()
482 * Button 4: 03 00 e0 16 00 00 00 00 -> Ctrl S in SEC()
483 * Button 5: 03 00 2c 00 00 00 00 00 -> space in SEC()
484 * Button 6: 03 00 e0 e2 1d 00 00 00 -> Ctrl Alt Z in SEC()
522 * Dial down: 11 00 ff ff 00 00 00 00 00 -> Dial -1 in SEC()
523 * Dial up: 11 00 01 00 00 00 00 00 00 -> Dial 1 in SEC()
576 pad_report->report_id = PAD_REPORT_ID; in SEC()
577 pad_report->btn_stylus = 0; in SEC()
578 pad_report->x = 0; in SEC()
579 pad_report->y = 0; in SEC()
580 pad_report->buttons = last_button_state; in SEC()
581 pad_report->dial_1 = dial_1; in SEC()
582 pad_report->dial_2 = dial_2; in SEC()
601 switch (ctx->rdesc_size) { in probe()
605 ctx->retval = 0; in probe()
608 ctx->retval = -EINVAL; in probe()