Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Add touchpad support to the OranePi NEO #119

Closed
pastaq opened this issue Jun 8, 2024 · 2 comments
Closed

Feature: Add touchpad support to the OranePi NEO #119

pastaq opened this issue Jun 8, 2024 · 2 comments
Assignees
Milestone

Comments

@pastaq
Copy link
Contributor

pastaq commented Jun 8, 2024

The OrangePi Neo has two touchpads, one on either side. They have different names

Touchpad 1:

[gamer@opineo ~]$ udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/hidraw1)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/AMDI0010:00/i2c-0/i2c-OPI0001:00/0018:0911:5288.0002/hidraw/hidraw1':
    KERNEL=="hidraw1"
    SUBSYSTEM=="hidraw"
    DRIVER==""
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"

  looking at parent device '/devices/platform/AMDI0010:00/i2c-0/i2c-OPI0001:00/0018:0911:5288.0002':
    KERNELS=="0018:0911:5288.0002"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-multitouch"
    ATTRS{country}=="00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{quirks}=="334864"

  looking at parent device '/devices/platform/AMDI0010:00/i2c-0/i2c-OPI0001:00':
    KERNELS=="i2c-OPI0001:00"
    SUBSYSTEMS=="i2c"
    DRIVERS=="i2c_hid_acpi"
    ATTRS{name}=="OPI0001:00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/wakeup}=="enabled"
    ATTRS{power/wakeup_abort_count}=="0"
    ATTRS{power/wakeup_active}=="0"
    ATTRS{power/wakeup_active_count}=="1605"
    ATTRS{power/wakeup_count}=="0"
    ATTRS{power/wakeup_expire_count}=="0"
    ATTRS{power/wakeup_last_time_ms}=="894344"
    ATTRS{power/wakeup_max_time_ms}=="0"
    ATTRS{power/wakeup_total_time_ms}=="0"

  looking at parent device '/devices/platform/AMDI0010:00/i2c-0':
    KERNELS=="i2c-0"
    SUBSYSTEMS=="i2c"
    DRIVERS==""
    ATTRS{delete_device}=="(not readable)"
    ATTRS{name}=="Synopsys DesignWare I2C adapter"
    ATTRS{new_device}=="(not readable)"
    ATTRS{waiting_for_supplier}=="0"

  looking at parent device '/devices/platform/AMDI0010:00':
    KERNELS=="AMDI0010:00"
    SUBSYSTEMS=="platform"
    DRIVERS=="i2c_designware"
    ATTRS{driver_override}=="(null)"
    ATTRS{power/autosuspend_delay_ms}=="1000"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="29941"
    ATTRS{power/runtime_status}=="suspended"
    ATTRS{power/runtime_suspended_time}=="1000085"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"

Touchpad 2:

[gamer@opineo ~]$ udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/hidraw2)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/AMDI0010:02/i2c-2/i2c-OPI0002:00/0018:0911:5288.0003/hidraw/hidraw2':
    KERNEL=="hidraw2"
    SUBSYSTEM=="hidraw"
    DRIVER==""
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"

  looking at parent device '/devices/platform/AMDI0010:02/i2c-2/i2c-OPI0002:00/0018:0911:5288.0003':
    KERNELS=="0018:0911:5288.0003"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-multitouch"
    ATTRS{country}=="00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{quirks}=="334864"

  looking at parent device '/devices/platform/AMDI0010:02/i2c-2/i2c-OPI0002:00':
    KERNELS=="i2c-OPI0002:00"
    SUBSYSTEMS=="i2c"
    DRIVERS=="i2c_hid_acpi"
    ATTRS{name}=="OPI0002:00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{power/wakeup}=="enabled"
    ATTRS{power/wakeup_abort_count}=="0"
    ATTRS{power/wakeup_active}=="0"
    ATTRS{power/wakeup_active_count}=="1139"
    ATTRS{power/wakeup_count}=="0"
    ATTRS{power/wakeup_expire_count}=="0"
    ATTRS{power/wakeup_last_time_ms}=="763896"
    ATTRS{power/wakeup_max_time_ms}=="0"
    ATTRS{power/wakeup_total_time_ms}=="0"

  looking at parent device '/devices/platform/AMDI0010:02/i2c-2':
    KERNELS=="i2c-2"
    SUBSYSTEMS=="i2c"
    DRIVERS==""
    ATTRS{delete_device}=="(not readable)"
    ATTRS{name}=="Synopsys DesignWare I2C adapter"
    ATTRS{new_device}=="(not readable)"
    ATTRS{waiting_for_supplier}=="0"

  looking at parent device '/devices/platform/AMDI0010:02':
    KERNELS=="AMDI0010:02"
    SUBSYSTEMS=="platform"
    DRIVERS=="i2c_designware"
    ATTRS{driver_override}=="(null)"
    ATTRS{power/autosuspend_delay_ms}=="1000"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="22505"
    ATTRS{power/runtime_status}=="suspended"
    ATTRS{power/runtime_suspended_time}=="976310"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"

They appear to be on the same device node as the touchscreen

[gamer@opineo ~]$ udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/hidraw0)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/AMDI0010:01/i2c-1/i2c-OPI1000:00/0018:2808:8206.0001/hidraw/hidraw0':
    KERNEL=="hidraw0"
    SUBSYSTEM=="hidraw"
    DRIVER==""
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"

  looking at parent device '/devices/platform/AMDI0010:01/i2c-1/i2c-OPI1000:00/0018:2808:8206.0001':
    KERNELS=="0018:2808:8206.0001"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-multitouch"
    ATTRS{country}=="00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{quirks}=="334864"

  looking at parent device '/devices/platform/AMDI0010:01/i2c-1/i2c-OPI1000:00':
    KERNELS=="i2c-OPI1000:00"
    SUBSYSTEMS=="i2c"
    DRIVERS=="i2c_hid_acpi"
    ATTRS{name}=="OPI1000:00"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"

  looking at parent device '/devices/platform/AMDI0010:01/i2c-1':
    KERNELS=="i2c-1"
    SUBSYSTEMS=="i2c"
    DRIVERS==""
    ATTRS{delete_device}=="(not readable)"
    ATTRS{name}=="Synopsys DesignWare I2C adapter"
    ATTRS{new_device}=="(not readable)"
    ATTRS{waiting_for_supplier}=="0"

  looking at parent device '/devices/platform/AMDI0010:01':
    KERNELS=="AMDI0010:01"
    SUBSYSTEMS=="platform"
    DRIVERS=="i2c_designware"
    ATTRS{driver_override}=="(null)"
    ATTRS{power/autosuspend_delay_ms}=="1000"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="1086202"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="3522"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
@pastaq
Copy link
Contributor Author

pastaq commented Jun 8, 2024

List of HIDRAW interfaces

[gamer@opineo ~]$ sudo hid-recorder 
[sudo] password for gamer: 
Available devices:
/dev/hidraw0:   OPI1000:00 2808:8206
/dev/hidraw1:   OPI0001:00 0911:5288
/dev/hidraw2:   OPI0002:00 0911:5288
/dev/hidraw3:   Sony Interactive Entertainment DualSense Wireless Controller
/dev/hidraw4:     OrangePi USB Controller
/dev/hidraw5:   Logitech USB Receiver
/dev/hidraw6:   Logitech USB Receiver
/dev/hidraw7:   Logitech USB Receiver
Select the device event number [0-7]: 1

@pastaq
Copy link
Contributor Author

pastaq commented Jun 8, 2024

The HID rports are identical

left:

# OPI0001:00 0911:5288
# 0x05, 0x01,                    // Usage Page (Generic Desktop)        0
# 0x09, 0x02,                    // Usage (Mouse)                       2
# 0xa1, 0x01,                    // Collection (Application)            4
# 0x85, 0x01,                    //  Report ID (1)                      6
# 0x09, 0x01,                    //  Usage (Pointer)                    8
# 0xa1, 0x00,                    //  Collection (Physical)              10
# 0x05, 0x09,                    //   Usage Page (Button)               12
# 0x19, 0x01,                    //   Usage Minimum (1)                 14
# 0x29, 0x03,                    //   Usage Maximum (3)                 16
# 0x15, 0x00,                    //   Logical Minimum (0)               18
# 0x25, 0x01,                    //   Logical Maximum (1)               20
# 0x95, 0x03,                    //   Report Count (3)                  22
# 0x75, 0x01,                    //   Report Size (1)                   24
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              26
# 0x95, 0x01,                    //   Report Count (1)                  28
# 0x75, 0x05,                    //   Report Size (5)                   30
# 0x81, 0x03,                    //   Input (Cnst,Var,Abs)              32
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      34
# 0x09, 0x30,                    //   Usage (X)                         36
# 0x09, 0x31,                    //   Usage (Y)                         38
# 0x09, 0x38,                    //   Usage (Wheel)                     40
# 0x15, 0x81,                    //   Logical Minimum (-127)            42
# 0x25, 0x7f,                    //   Logical Maximum (127)             44
# 0x75, 0x08,                    //   Report Size (8)                   46
# 0x95, 0x03,                    //   Report Count (3)                  48
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              50
# 0xc0,                          //  End Collection                     52
# 0xc0,                          // End Collection                      53
# 0x05, 0x0d,                    // Usage Page (Digitizers)             54
# 0x09, 0x05,                    // Usage (Touch Pad)                   56
# 0xa1, 0x01,                    // Collection (Application)            58
# 0x85, 0x04,                    //  Report ID (4)                      60
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            62
# 0x09, 0x22,                    //  Usage (Finger)                     64
# 0xa1, 0x02,                    //  Collection (Logical)               66
# 0x15, 0x00,                    //   Logical Minimum (0)               68
# 0x25, 0x01,                    //   Logical Maximum (1)               70
# 0x09, 0x47,                    //   Usage (Confidence)                72
# 0x09, 0x42,                    //   Usage (Tip Switch)                74
# 0x95, 0x02,                    //   Report Count (2)                  76
# 0x75, 0x01,                    //   Report Size (1)                   78
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              80
# 0x95, 0x01,                    //   Report Count (1)                  82
# 0x75, 0x03,                    //   Report Size (3)                   84
# 0x25, 0x05,                    //   Logical Maximum (5)               86
# 0x09, 0x51,                    //   Usage (Contact Id)                88
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              90
# 0x75, 0x01,                    //   Report Size (1)                   92
# 0x95, 0x03,                    //   Report Count (3)                  94
# 0x81, 0x03,                    //   Input (Cnst,Var,Abs)              96
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      98
# 0x15, 0x00,                    //   Logical Minimum (0)               100
# 0x26, 0x00, 0x02,              //   Logical Maximum (512)             102
# 0x75, 0x10,                    //   Report Size (16)                  105
# 0x55, 0x0e,                    //   Unit Exponent (-2)                107
# 0x65, 0x13,                    //   Unit (EnglishLinear: in)          109
# 0x09, 0x30,                    //   Usage (X)                         111
# 0x35, 0x00,                    //   Physical Minimum (0)              113
# 0x46, 0x62, 0x00,              //   Physical Maximum (98)             115
# 0x95, 0x01,                    //   Report Count (1)                  118
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              120
# 0x46, 0x62, 0x00,              //   Physical Maximum (98)             122
# 0x26, 0x00, 0x02,              //   Logical Maximum (512)             125
# 0x09, 0x31,                    //   Usage (Y)                         128
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              130
# 0xc0,                          //  End Collection                     132
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            133
# 0x55, 0x0c,                    //  Unit Exponent (-4)                 135
# 0x66, 0x01, 0x10,              //  Unit (SILinear: s)                 137
# 0x47, 0xff, 0xff, 0x00, 0x00,  //  Physical Maximum (65535)           140
# 0x27, 0xff, 0xff, 0x00, 0x00,  //  Logical Maximum (65535)            145
# 0x75, 0x10,                    //  Report Size (16)                   150
# 0x95, 0x01,                    //  Report Count (1)                   152
# 0x09, 0x56,                    //  Usage (Scan Time)                  154
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               156
# 0x09, 0x54,                    //  Usage (Contact Count)              158
# 0x25, 0x7f,                    //  Logical Maximum (127)              160
# 0x95, 0x01,                    //  Report Count (1)                   162
# 0x75, 0x08,                    //  Report Size (8)                    164
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               166
# 0x05, 0x09,                    //  Usage Page (Button)                168
# 0x09, 0x01,                    //  Usage (Vendor Usage 0x01)          170
# 0x09, 0x02,                    //  Usage (Vendor Usage 0x02)          172
# 0x09, 0x03,                    //  Usage (Vendor Usage 0x03)          174
# 0x25, 0x01,                    //  Logical Maximum (1)                176
# 0x75, 0x01,                    //  Report Size (1)                    178
# 0x95, 0x03,                    //  Report Count (3)                   180
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               182
# 0x95, 0x05,                    //  Report Count (5)                   184
# 0x81, 0x03,                    //  Input (Cnst,Var,Abs)               186
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            188
# 0x85, 0x02,                    //  Report ID (2)                      190
# 0x09, 0x55,                    //  Usage (Contact Max)                192
# 0x09, 0x59,                    //  Usage (Button Type)                194
# 0x75, 0x04,                    //  Report Size (4)                    196
# 0x95, 0x02,                    //  Report Count (2)                   198
# 0x25, 0x0f,                    //  Logical Maximum (15)               200
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             202
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            204
# 0x85, 0x07,                    //  Report ID (7)                      206
# 0x09, 0x60,                    //  Usage (Vendor Usage 0x60)          208
# 0x75, 0x01,                    //  Report Size (1)                    210
# 0x95, 0x01,                    //  Report Count (1)                   212
# 0x15, 0x00,                    //  Logical Minimum (0)                214
# 0x25, 0x01,                    //  Logical Maximum (1)                216
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             218
# 0x95, 0x07,                    //  Report Count (7)                   220
# 0xb1, 0x03,                    //  Feature (Cnst,Var,Abs)             222
# 0x85, 0x06,                    //  Report ID (6)                      224
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 226
# 0x09, 0xc5,                    //  Usage (Vendor Usage 0xc5)          229
# 0x15, 0x00,                    //  Logical Minimum (0)                231
# 0x26, 0xff, 0x00,              //  Logical Maximum (255)              233
# 0x75, 0x08,                    //  Report Size (8)                    236
# 0x96, 0x00, 0x01,              //  Report Count (256)                 238
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             241
# 0xc0,                          // End Collection                      243
# 0x05, 0x0d,                    // Usage Page (Digitizers)             244
# 0x09, 0x0e,                    // Usage (Device Configuration)        246
# 0xa1, 0x01,                    // Collection (Application)            248
# 0x85, 0x03,                    //  Report ID (3)                      250
# 0x09, 0x22,                    //  Usage (Finger)                     252
# 0xa1, 0x02,                    //  Collection (Logical)               254
# 0x09, 0x52,                    //   Usage (Inputmode)                 256
# 0x15, 0x00,                    //   Logical Minimum (0)               258
# 0x25, 0x0a,                    //   Logical Maximum (10)              260
# 0x75, 0x08,                    //   Report Size (8)                   262
# 0x95, 0x01,                    //   Report Count (1)                  264
# 0xb1, 0x02,                    //   Feature (Data,Var,Abs)            266
# 0xc0,                          //  End Collection                     268
# 0x09, 0x22,                    //  Usage (Finger)                     269
# 0xa1, 0x00,                    //  Collection (Physical)              271
# 0x85, 0x05,                    //   Report ID (5)                     273
# 0x09, 0x57,                    //   Usage (Surface Switch)            275
# 0x09, 0x58,                    //   Usage (Button Switch)             277
# 0x75, 0x01,                    //   Report Size (1)                   279
# 0x95, 0x02,                    //   Report Count (2)                  281
# 0x25, 0x01,                    //   Logical Maximum (1)               283
# 0xb1, 0x02,                    //   Feature (Data,Var,Abs)            285
# 0x95, 0x06,                    //   Report Count (6)                  287
# 0xb1, 0x03,                    //   Feature (Cnst,Var,Abs)            289
# 0xc0,                          //  End Collection                     291
# 0xc0,                          // End Collection                      292
# 
R: 293 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 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 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 00 02 75 10 55 0e 65 13 09 30 35 00 46 62 00 95 01 81 02 46 62 00 26 00 02 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 09 02 09 03 25 01 75 01 95 03 81 02 95 05 81 03 05 0d 85 02 09 55 09 59 75 04 95 02 25 0f b1 02 05 0d 85 07 09 60 75 01 95 01 15 00 25 01 b1 02 95 07 b1 03 85 06 06 00 ff 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 c0 05 0d 09 0e a1 01 85 03 09 22 a1 02 09 52 15 00 25 0a 75 08 95 01 b1 02 c0 09 22 a1 00 85 05 09 57 09 58 75 01 95 02 25 01 b1 02 95 06 b1 03 c0 c0
N: OPI0001:00 0911:5288
I: 18 0911 5288
# ReportID: 4 / Confidence: 1 | Tip Switch: 0 | Contact Id:  0 | # | X:      0 | Y:      0 | Scan Time:  40742 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.000000 10 04 01 00 00 00 00 26 9f 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  40829 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.008375 10 04 03 59 00 a4 00 7d 9f 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  40916 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.016782 10 04 03 59 00 a4 00 d4 9f 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  41003 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.025150 10 04 03 59 00 a4 00 2b a0 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  41090 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.033504 10 04 03 59 00 a4 00 82 a0 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  41177 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.041947 10 04 03 59 00 a4 00 d9 a0 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 0 | Contact Id:  0 | # | X:     89 | Y:    164 | Scan Time:  41264 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.050182 10 04 01 59 00 a4 00 30 a1 01 00

right:

# OPI0002:00 0911:5288
# 0x05, 0x01,                    // Usage Page (Generic Desktop)        0
# 0x09, 0x02,                    // Usage (Mouse)                       2
# 0xa1, 0x01,                    // Collection (Application)            4
# 0x85, 0x01,                    //  Report ID (1)                      6
# 0x09, 0x01,                    //  Usage (Pointer)                    8
# 0xa1, 0x00,                    //  Collection (Physical)              10
# 0x05, 0x09,                    //   Usage Page (Button)               12
# 0x19, 0x01,                    //   Usage Minimum (1)                 14
# 0x29, 0x03,                    //   Usage Maximum (3)                 16
# 0x15, 0x00,                    //   Logical Minimum (0)               18
# 0x25, 0x01,                    //   Logical Maximum (1)               20
# 0x95, 0x03,                    //   Report Count (3)                  22
# 0x75, 0x01,                    //   Report Size (1)                   24
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              26
# 0x95, 0x01,                    //   Report Count (1)                  28
# 0x75, 0x05,                    //   Report Size (5)                   30
# 0x81, 0x03,                    //   Input (Cnst,Var,Abs)              32
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      34
# 0x09, 0x30,                    //   Usage (X)                         36
# 0x09, 0x31,                    //   Usage (Y)                         38
# 0x09, 0x38,                    //   Usage (Wheel)                     40
# 0x15, 0x81,                    //   Logical Minimum (-127)            42
# 0x25, 0x7f,                    //   Logical Maximum (127)             44
# 0x75, 0x08,                    //   Report Size (8)                   46
# 0x95, 0x03,                    //   Report Count (3)                  48
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              50
# 0xc0,                          //  End Collection                     52
# 0xc0,                          // End Collection                      53
# 0x05, 0x0d,                    // Usage Page (Digitizers)             54
# 0x09, 0x05,                    // Usage (Touch Pad)                   56
# 0xa1, 0x01,                    // Collection (Application)            58
# 0x85, 0x04,                    //  Report ID (4)                      60
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            62
# 0x09, 0x22,                    //  Usage (Finger)                     64
# 0xa1, 0x02,                    //  Collection (Logical)               66
# 0x15, 0x00,                    //   Logical Minimum (0)               68
# 0x25, 0x01,                    //   Logical Maximum (1)               70
# 0x09, 0x47,                    //   Usage (Confidence)                72
# 0x09, 0x42,                    //   Usage (Tip Switch)                74
# 0x95, 0x02,                    //   Report Count (2)                  76
# 0x75, 0x01,                    //   Report Size (1)                   78
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              80
# 0x95, 0x01,                    //   Report Count (1)                  82
# 0x75, 0x03,                    //   Report Size (3)                   84
# 0x25, 0x05,                    //   Logical Maximum (5)               86
# 0x09, 0x51,                    //   Usage (Contact Id)                88
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              90
# 0x75, 0x01,                    //   Report Size (1)                   92
# 0x95, 0x03,                    //   Report Count (3)                  94
# 0x81, 0x03,                    //   Input (Cnst,Var,Abs)              96
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      98
# 0x15, 0x00,                    //   Logical Minimum (0)               100
# 0x26, 0x00, 0x02,              //   Logical Maximum (512)             102
# 0x75, 0x10,                    //   Report Size (16)                  105
# 0x55, 0x0e,                    //   Unit Exponent (-2)                107
# 0x65, 0x13,                    //   Unit (EnglishLinear: in)          109
# 0x09, 0x30,                    //   Usage (X)                         111
# 0x35, 0x00,                    //   Physical Minimum (0)              113
# 0x46, 0x62, 0x00,              //   Physical Maximum (98)             115
# 0x95, 0x01,                    //   Report Count (1)                  118
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              120
# 0x46, 0x62, 0x00,              //   Physical Maximum (98)             122
# 0x26, 0x00, 0x02,              //   Logical Maximum (512)             125
# 0x09, 0x31,                    //   Usage (Y)                         128
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              130
# 0xc0,                          //  End Collection                     132
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            133
# 0x55, 0x0c,                    //  Unit Exponent (-4)                 135
# 0x66, 0x01, 0x10,              //  Unit (SILinear: s)                 137
# 0x47, 0xff, 0xff, 0x00, 0x00,  //  Physical Maximum (65535)           140
# 0x27, 0xff, 0xff, 0x00, 0x00,  //  Logical Maximum (65535)            145
# 0x75, 0x10,                    //  Report Size (16)                   150
# 0x95, 0x01,                    //  Report Count (1)                   152
# 0x09, 0x56,                    //  Usage (Scan Time)                  154
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               156
# 0x09, 0x54,                    //  Usage (Contact Count)              158
# 0x25, 0x7f,                    //  Logical Maximum (127)              160
# 0x95, 0x01,                    //  Report Count (1)                   162
# 0x75, 0x08,                    //  Report Size (8)                    164
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               166
# 0x05, 0x09,                    //  Usage Page (Button)                168
# 0x09, 0x01,                    //  Usage (Vendor Usage 0x01)          170
# 0x09, 0x02,                    //  Usage (Vendor Usage 0x02)          172
# 0x09, 0x03,                    //  Usage (Vendor Usage 0x03)          174
# 0x25, 0x01,                    //  Logical Maximum (1)                176
# 0x75, 0x01,                    //  Report Size (1)                    178
# 0x95, 0x03,                    //  Report Count (3)                   180
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               182
# 0x95, 0x05,                    //  Report Count (5)                   184
# 0x81, 0x03,                    //  Input (Cnst,Var,Abs)               186
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            188
# 0x85, 0x02,                    //  Report ID (2)                      190
# 0x09, 0x55,                    //  Usage (Contact Max)                192
# 0x09, 0x59,                    //  Usage (Button Type)                194
# 0x75, 0x04,                    //  Report Size (4)                    196
# 0x95, 0x02,                    //  Report Count (2)                   198
# 0x25, 0x0f,                    //  Logical Maximum (15)               200
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             202
# 0x05, 0x0d,                    //  Usage Page (Digitizers)            204
# 0x85, 0x07,                    //  Report ID (7)                      206
# 0x09, 0x60,                    //  Usage (Vendor Usage 0x60)          208
# 0x75, 0x01,                    //  Report Size (1)                    210
# 0x95, 0x01,                    //  Report Count (1)                   212
# 0x15, 0x00,                    //  Logical Minimum (0)                214
# 0x25, 0x01,                    //  Logical Maximum (1)                216
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             218
# 0x95, 0x07,                    //  Report Count (7)                   220
# 0xb1, 0x03,                    //  Feature (Cnst,Var,Abs)             222
# 0x85, 0x06,                    //  Report ID (6)                      224
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 226
# 0x09, 0xc5,                    //  Usage (Vendor Usage 0xc5)          229
# 0x15, 0x00,                    //  Logical Minimum (0)                231
# 0x26, 0xff, 0x00,              //  Logical Maximum (255)              233
# 0x75, 0x08,                    //  Report Size (8)                    236
# 0x96, 0x00, 0x01,              //  Report Count (256)                 238
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             241
# 0xc0,                          // End Collection                      243
# 0x05, 0x0d,                    // Usage Page (Digitizers)             244
# 0x09, 0x0e,                    // Usage (Device Configuration)        246
# 0xa1, 0x01,                    // Collection (Application)            248
# 0x85, 0x03,                    //  Report ID (3)                      250
# 0x09, 0x22,                    //  Usage (Finger)                     252
# 0xa1, 0x02,                    //  Collection (Logical)               254
# 0x09, 0x52,                    //   Usage (Inputmode)                 256
# 0x15, 0x00,                    //   Logical Minimum (0)               258
# 0x25, 0x0a,                    //   Logical Maximum (10)              260
# 0x75, 0x08,                    //   Report Size (8)                   262
# 0x95, 0x01,                    //   Report Count (1)                  264
# 0xb1, 0x02,                    //   Feature (Data,Var,Abs)            266
# 0xc0,                          //  End Collection                     268
# 0x09, 0x22,                    //  Usage (Finger)                     269
# 0xa1, 0x00,                    //  Collection (Physical)              271
# 0x85, 0x05,                    //   Report ID (5)                     273
# 0x09, 0x57,                    //   Usage (Surface Switch)            275
# 0x09, 0x58,                    //   Usage (Button Switch)             277
# 0x75, 0x01,                    //   Report Size (1)                   279
# 0x95, 0x02,                    //   Report Count (2)                  281
# 0x25, 0x01,                    //   Logical Maximum (1)               283
# 0xb1, 0x02,                    //   Feature (Data,Var,Abs)            285
# 0x95, 0x06,                    //   Report Count (6)                  287
# 0xb1, 0x03,                    //   Feature (Cnst,Var,Abs)            289
# 0xc0,                          //  End Collection                     291
# 0xc0,                          // End Collection                      292
# 
R: 293 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 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 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 00 02 75 10 55 0e 65 13 09 30 35 00 46 62 00 95 01 81 02 46 62 00 26 00 02 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 09 02 09 03 25 01 75 01 95 03 81 02 95 05 81 03 05 0d 85 02 09 55 09 59 75 04 95 02 25 0f b1 02 05 0d 85 07 09 60 75 01 95 01 15 00 25 01 b1 02 95 07 b1 03 85 06 06 00 ff 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 c0 05 0d 09 0e a1 01 85 03 09 22 a1 02 09 52 15 00 25 0a 75 08 95 01 b1 02 c0 09 22 a1 00 85 05 09 57 09 58 75 01 95 02 25 01 b1 02 95 06 b1 03 c0 c0
N: OPI0002:00 0911:5288
I: 18 0911 5288
# ReportID: 4 / Confidence: 1 | Tip Switch: 0 | Contact Id:  0 | # | X:      0 | Y:      0 | Scan Time:  37983 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.000000 10 04 01 00 00 00 00 5f 94 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 1 | Contact Id:  0 | # | X:    237 | Y:    392 | Scan Time:  38070 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.008266 10 04 03 ed 00 88 01 b6 94 01 00
# ReportID: 4 / Confidence: 1 | Tip Switch: 0 | Contact Id:  0 | # | X:    237 | Y:    392 | Scan Time:  38157 | Contact Count:    1 | Button: 0  0  0 | # 
E: 000000.016496 10 04 01 ed 00 88 01 0d 95 01 00

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant