Bug 267922

Summary: Contour Rollermouse Red not supported by ums(4)
Product: Base System Reporter: Atte Peltomäki <koston>
Component: usbAssignee: freebsd-usb (Nobody) <usb>
Status: Closed FIXED    
Severity: Affects Some People CC: emaste, hselasky, wulf
Priority: ---    
Version: 13.1-RELEASE   
Hardware: amd64   
OS: Any   
Attachments:
Description Flags
hms_conditionalize_kensington_support.patch
none
hms_conditionalize_kensington_support.patch
none
ums_conditionalize_kensington_support.patch none

Description Atte Peltomäki 2022-11-22 12:43:51 UTC
Mouse is detected by ums(4) driver:

ums0: <Contour Rollermouse Red> on usbus0
ums0: 26 buttons and [XYZ] coordinates ID=1

Output from "xev -input button | grep button" when pressing and releasing buttons:

Left (only one that works correctly):
    state 0x0, button 1, same_screen YES
    state 0x100, button 1, same_screen YES

Right:
    state 0x0, button 1, same_screen YES
    state 0x100, button 3, same_screen YES
    state 0x500, button 1, same_screen YES
    state 0x400, button 3, same_screen YES

Middle:
    state 0x0, button 1, same_screen YES
    state 0x100, button 2, same_screen YES
    state 0x300, button 1, same_screen YES
    state 0x200, button 2, same_screen YES

Double-click, copy and paste buttons all work as Left button.

Pressing the roller bar (should be just Left button):
    state 0x0, button 3, same_screen YES
    state 0x400, button 1, same_screen YES
    state 0x500, button 3, same_screen YES
    state 0x100, button 1, same_screen YES
    state 0x0, button 3, same_screen YES
    state 0x400, button 3, same_screen YES

Results are identical in console using moused(8) debug mode. The mouse has three operating modes (mac/windows/linux) which all produce slightly different but equally erratic results.

ums(4) is assumed to lack support for this mouse. It does work correctly on Linux. An additional feature not supported is that once the roller bar is at either vertical extreme position, cursor should continuously move to that direction.

If someone capable is serious about implementing proper support, contact me and I will send you a Rollermouse Red for development/testing.
Comment 1 Hans Petter Selasky freebsd_committer freebsd_triage 2022-11-22 13:10:43 UTC
Hi,

Maybe if you use the newer /dev/input/evdevX interface it will work?

Also see:

sysctl kern.evdev.rcpt_mask

--HPS
Comment 2 Atte Peltomäki 2022-11-22 14:04:02 UTC
Negative.

kern.evdev.input.9.phys: ums0
kern.evdev.input.9.id: { bustype = 0x0003, vendor = 0x0b33, product = 0x1004, version = 0x0000 }
kern.evdev.input.9.name: Contour Rollermouse Red

[107405.838] (II) config/udev: Adding input device Contour Rollermouse Red (/dev/input/event9)
[107405.838] (**) Contour Rollermouse Red: Applying InputClass "evdev pointer catchall"
[107405.838] (**) Contour Rollermouse Red: Applying InputClass "libinput pointer catchall"
[107405.838] (**) Contour Rollermouse Red: Applying InputClass "Rollermouse"
[107405.838] (II) Using input driver 'evdev' for 'Contour Rollermouse Red'
[107405.838] (**) Contour Rollermouse Red: always reports core events
[107405.838] (**) evdev: Contour Rollermouse Red: Device: "/dev/input/event9"
[107405.838] (--) evdev: Contour Rollermouse Red: Vendor 0xb33 Product 0x1004
[107405.838] (--) evdev: Contour Rollermouse Red: Found 20 mouse buttons
[107405.838] (--) evdev: Contour Rollermouse Red: Found scroll wheel(s)
[107405.838] (--) evdev: Contour Rollermouse Red: Found relative axes
[107405.838] (--) evdev: Contour Rollermouse Red: Found x and y relative axes
[107405.838] (II) evdev: Contour Rollermouse Red: Configuring as mouse
[107405.838] (II) evdev: Contour Rollermouse Red: Adding scrollwheel support
[107405.838] (**) evdev: Contour Rollermouse Red: YAxisMapping: buttons 4 and 5
[107405.838] (**) evdev: Contour Rollermouse Red: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[107405.838] (II) XINPUT: Adding extended input device "Contour Rollermouse Red" (type: MOUSE, id 14)
[107405.838] (II) evdev: Contour Rollermouse Red: initialized for relative axes.
[107405.838] (**) Contour Rollermouse Red: (accel) keeping acceleration scheme 1
[107405.839] (**) Contour Rollermouse Red: (accel) acceleration profile 0
[107405.839] (**) Contour Rollermouse Red: (accel) acceleration factor: 2.000
[107405.839] (**) Contour Rollermouse Red: (accel) acceleration threshold: 4

Behaviour remains the same.

It also remains the same if using sysmouse(4) event input device for Xorg. And, as previously mentioned, in console using moused(8).
Comment 3 Hans Petter Selasky freebsd_committer freebsd_triage 2022-11-22 14:22:58 UTC
Find your device using usbconfig, then use:

usbdump -i X -f Y -s 65536 -vvv

To see what is going on there.

Also you may want to use usbconfig to dump all the usb descriptors for your device.

--HPS
Comment 4 Atte Peltomäki 2022-11-22 15:00:56 UTC
Thanks!

ugen0.6: <Contour Design Contour Rollermouse Red> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (300mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0008 
  idVendor = 0x0b33 
  idProduct = 0x1004 
  bcdDevice = 0x0005 
  iManufacturer = 0x0001  <Contour Design>
  iProduct = 0x0003  <Contour Rollermouse Red>
  iSerialNumber = 0x0080  <>
  bNumConfigurations = 0x0001 

usbdump of two events, first pressing and releasing Left button, then pressing and releasing the roller bar:

16:58:29.330938 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  01 01 00 00 00 00 00 00  41 01 00 00 00 00 00 00  |........A.......|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:29.330950 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:29.398938 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  01 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:29.398950 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
 

16:58:34.626935 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  03 00 00 00 00 00 41 01  00 00 00 00 00 00 00 00  |......A.........|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.626945 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.628933 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  01 01 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.628941 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.818938 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  03 00 00 00 00 00 41 00  00 00 00 00 00 00 00 00  |......A.........|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.818954 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.820934 usbus0.6 DONE-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=16,IVAL=4,ERR=0
 frame[0] READ 16 bytes
 0000  01 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xeb021 <OPEN|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CURR_DMA_SET|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
16:58:34.820948 usbus0.6 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=4
 frame[0] READ 64 bytes
 flags 0xa <SHORT_XFER_OK|PIPE_BOF|0>
 status 0xcb023 <OPEN|TRANSFERRING|STARTED|SHORT_XFER_OK|BDMA_ENABLE|BDMA_SETUP|CAN_CANCEL_IMMED|DOING_CALLBACK|0>
Comment 5 Hans Petter Selasky freebsd_committer freebsd_triage 2022-11-22 17:41:43 UTC
You need to get a USB HID descriptor dump, which is verbose.

I don't recall right here and now how you do that, but that is likely where the culpit is.

Adding wulf@

--HPS
Comment 6 Hans Petter Selasky freebsd_committer freebsd_triage 2022-11-22 17:45:11 UTC
https://www.freshports.org/sysutils/usbhid-dump
Comment 7 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-11-22 23:54:00 UTC
It is quite unusual device. I am even not sure if it is relative or absolute mice.

Additionally to what Hans asked, it would be nice to collect not only USB HID report descriptors, but a report data too.
To do that, add to /boot/loader.conf:

hw.usb.usbhid.enable=1
usbhid_load="YES"
hidraw_load="YES"

Than reboot and run hid-recorder utility from sysutils/hid-tools port against your mice. Both decrypted HID report descriptor (large dump at beginning) and decrypted reaction on mouse movement is interesting.
Comment 8 Atte Peltomäki 2022-11-28 12:55:11 UTC
Sorry for late response, I have been traveling without access to this computer.

Enabling the suggested loader.conf settings changed the mouse behaviour, becoming even more erratic. Most prominent change was repeated button 3 inputs during all movements of the mouse, but button behaviour changed too. Here is some data, hopefully it includes something useful.

dmesg | grep Contour:

ugen0.4: <Contour Design Contour Rollermouse Red> at usbus0
uhid1: <Contour Design Contour Rollermouse Red, class 0/0, rev 2.00/0.05, addr 3> on usbus0
ums0: <Contour Rollermouse Red> on usbus0
ugen0.4: <Contour Design Contour Rollermouse Red> at usbus0
usbhid1: <Contour Rollermouse Red> on usbus0
hidraw1: <Contour Design Contour Rollermouse Red Raw HID Device> on hidbus1
usbhid2: <Contour Design Contour Rollermouse Red, class 0/0, rev 2.00/0.05, addr 3> on usbus0
hidraw2: <Contour Design Contour Rollermouse Red Raw HID Device> on hidbus2
hms0: <Contour Design Contour Rollermouse Red> on hidbus1
hkbd0: <Contour Design Contour Rollermouse Red Keyboard> on hidbus1
hcons0: <Contour Design Contour Rollermouse Red Consumer Control> on hidbus1

grep Contour /var/log/Xorg.0.log:

[   464.597] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red Keyboard (/dev/input/event10)
[   464.597] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "evdev keyboard catchall"
[   464.597] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "Evdev keyboard"
[   464.597] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "libinput keyboard catchall"
[   464.597] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "keyboard-all"
[   464.597] (II) Using input driver 'evdev' for 'Contour Design Contour Rollermouse Red Keyboard'
[   464.597] (**) Contour Design Contour Rollermouse Red Keyboard: always reports core events
[   464.597] (**) evdev: Contour Design Contour Rollermouse Red Keyboard: Device: "/dev/input/event10"
[   464.597] (--) evdev: Contour Design Contour Rollermouse Red Keyboard: Vendor 0xb33 Product 0x1004
[   464.597] (--) evdev: Contour Design Contour Rollermouse Red Keyboard: Found keys
[   464.597] (II) evdev: Contour Design Contour Rollermouse Red Keyboard: Configuring as keyboard
[   464.597] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red Keyboard" (type: KEYBOARD, id 8)
[   464.597] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red Consumer Control (/dev/input/event11)
[   464.597] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "evdev keyboard catchall"
[   464.597] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "Evdev keyboard"
[   464.597] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "libinput keyboard catchall"
[   464.597] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "keyboard-all"
[   464.597] (II) Using input driver 'evdev' for 'Contour Design Contour Rollermouse Red Consumer Control'
[   464.597] (**) Contour Design Contour Rollermouse Red Consumer Control: always reports core events
[   464.597] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: Device: "/dev/input/event11"
[   464.597] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Vendor 0xb33 Product 0x1004
[   464.597] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Found 1 mouse buttons
[   464.597] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Found keys
[   464.597] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Forcing relative x/y axes to exist.
[   464.597] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Configuring as mouse
[   464.597] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Configuring as keyboard
[   464.597] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: YAxisMapping: buttons 4 and 5
[   464.597] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[   464.597] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red Consumer Control" (type: KEYBOARD, id 9)
[   464.598] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: initialized for relative axes.
[   464.598] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) keeping acceleration scheme 1
[   464.598] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration profile 0
[   464.598] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration factor: 2.000
[   464.598] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration threshold: 4
[   464.774] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red (/dev/input/event9)
[   464.774] (**) Contour Design Contour Rollermouse Red: Applying InputClass "evdev pointer catchall"
[   464.774] (**) Contour Design Contour Rollermouse Red: Applying InputClass "libinput pointer catchall"
[   464.774] (II) Using input driver 'libinput' for 'Contour Design Contour Rollermouse Red'
[   464.774] (**) Contour Design Contour Rollermouse Red: always reports core events
[   464.776] (II) event9  - Contour Design Contour Rollermouse Red: is tagged by udev as: Mouse
[   464.777] (II) event9  - Contour Design Contour Rollermouse Red: device is a pointer
[   464.778] (II) event9  - Contour Design Contour Rollermouse Red: device removed
[   464.778] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red" (type: MOUSE, id 16)
[   464.778] (**) Contour Design Contour Rollermouse Red: (accel) selected scheme none/0
[   464.778] (**) Contour Design Contour Rollermouse Red: (accel) acceleration factor: 2.000
[   464.778] (**) Contour Design Contour Rollermouse Red: (accel) acceleration threshold: 4
[   464.780] (II) event9  - Contour Design Contour Rollermouse Red: is tagged by udev as: Mouse
[   464.781] (II) event9  - Contour Design Contour Rollermouse Red: device is a pointer

usbhid-dump -a 0:4

000:004:001:DESCRIPTOR         1669636394.813273
 06 00 FF 0A 00 FF A1 01 15 00 26 FF 00 75 08 95
 20 19 00 2A FF 00 91 02 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 20 81 02 C0

000:004:000:DESCRIPTOR         1669636394.815759
 05 01 09 02 A1 01 09 01 A1 01 85 01 05 09 19 01
 29 08 15 00 25 01 75 01 95 08 81 02 05 01 09 30
 09 31 16 08 80 26 FF 7F 75 10 95 02 81 06 09 38
 15 81 25 7F 75 08 95 01 81 06 05 0C 0A 00 FF 81
 06 06 00 FF 09 01 75 08 95 08 81 02 C0 C0 05 01
 09 06 A1 01 85 02 05 07 19 E0 29 E7 15 00 25 01
 75 01 95 08 81 02 06 00 FF 09 02 75 08 95 01 81
 02 05 07 19 00 29 7F 15 00 25 7F 75 08 95 05 81
 00 C0 05 0C 09 01 A1 01 85 03 05 09 19 09 29 18
 15 00 25 01 75 01 95 10 81 02 05 0C 19 00 2A FF
 03 15 00 26 FF 03 95 01 75 10 81 00 05 01 1A 81
 00 2A 83 00 15 00 25 01 75 01 95 03 81 02 95 05
 81 01 06 00 FF 09 02 75 08 95 0A 81 02 85 04 06
 00 FF 0A 00 FF 75 08 95 0F B1 02 C0

hid-recorder /dev/hidraw1

# Contour Design Contour Rollermouse Red
# 0x05, 0x01,                    // Usage Page (Generic Desktop)        0
# 0x09, 0x02,                    // Usage (Mouse)                       2
# 0xa1, 0x01,                    // Collection (Application)            4
# 0x09, 0x01,                    //  Usage (Pointer)                    6
# 0xa1, 0x01,                    //  Collection (Application)           8
# 0x85, 0x01,                    //   Report ID (1)                     10
# 0x05, 0x09,                    //   Usage Page (Button)               12
# 0x19, 0x01,                    //   Usage Minimum (1)                 14
# 0x29, 0x08,                    //   Usage Maximum (8)                 16
# 0x15, 0x00,                    //   Logical Minimum (0)               18
# 0x25, 0x01,                    //   Logical Maximum (1)               20
# 0x75, 0x01,                    //   Report Size (1)                   22
# 0x95, 0x08,                    //   Report Count (8)                  24
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              26
# 0x05, 0x01,                    //   Usage Page (Generic Desktop)      28
# 0x09, 0x30,                    //   Usage (X)                         30
# 0x09, 0x31,                    //   Usage (Y)                         32
# 0x16, 0x08, 0x80,              //   Logical Minimum (-32760)          34
# 0x26, 0xff, 0x7f,              //   Logical Maximum (32767)           37
# 0x75, 0x10,                    //   Report Size (16)                  40
# 0x95, 0x02,                    //   Report Count (2)                  42
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              44
# 0x09, 0x38,                    //   Usage (Wheel)                     46
# 0x15, 0x81,                    //   Logical Minimum (-127)            48
# 0x25, 0x7f,                    //   Logical Maximum (127)             50
# 0x75, 0x08,                    //   Report Size (8)                   52
# 0x95, 0x01,                    //   Report Count (1)                  54
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              56
# 0x05, 0x0c,                    //   Usage Page (Consumer Devices)     58
# 0x0a, 0x00, 0xff,              //   Usage (Vendor Usage 0xff00)       60
# 0x81, 0x06,                    //   Input (Data,Var,Rel)              63
# 0x06, 0x00, 0xff,              //   Usage Page (Vendor Defined Page 1) 65
# 0x09, 0x01,                    //   Usage (Vendor Usage 1)            68
# 0x75, 0x08,                    //   Report Size (8)                   70
# 0x95, 0x08,                    //   Report Count (8)                  72
# 0x81, 0x02,                    //   Input (Data,Var,Abs)              74
# 0xc0,                          //  End Collection                     76
# 0xc0,                          // End Collection                      77
# 0x05, 0x01,                    // Usage Page (Generic Desktop)        78
# 0x09, 0x06,                    // Usage (Keyboard)                    80
# 0xa1, 0x01,                    // Collection (Application)            82
# 0x85, 0x02,                    //  Report ID (2)                      84
# 0x05, 0x07,                    //  Usage Page (Keyboard)              86
# 0x19, 0xe0,                    //  Usage Minimum (224)                88
# 0x29, 0xe7,                    //  Usage Maximum (231)                90
# 0x15, 0x00,                    //  Logical Minimum (0)                92
# 0x25, 0x01,                    //  Logical Maximum (1)                94
# 0x75, 0x01,                    //  Report Size (1)                    96
# 0x95, 0x08,                    //  Report Count (8)                   98
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               100
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 102
# 0x09, 0x02,                    //  Usage (Vendor Usage 2)             105
# 0x75, 0x08,                    //  Report Size (8)                    107
# 0x95, 0x01,                    //  Report Count (1)                   109
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               111
# 0x05, 0x07,                    //  Usage Page (Keyboard)              113
# 0x19, 0x00,                    //  Usage Minimum (0)                  115
# 0x29, 0x7f,                    //  Usage Maximum (127)                117
# 0x15, 0x00,                    //  Logical Minimum (0)                119
# 0x25, 0x7f,                    //  Logical Maximum (127)              121
# 0x75, 0x08,                    //  Report Size (8)                    123
# 0x95, 0x05,                    //  Report Count (5)                   125
# 0x81, 0x00,                    //  Input (Data,Arr,Abs)               127
# 0xc0,                          // End Collection                      129
# 0x05, 0x0c,                    // Usage Page (Consumer Devices)       130
# 0x09, 0x01,                    // Usage (Consumer Control)            132
# 0xa1, 0x01,                    // Collection (Application)            134
# 0x85, 0x03,                    //  Report ID (3)                      136
# 0x05, 0x09,                    //  Usage Page (Button)                138
# 0x19, 0x09,                    //  Usage Minimum (9)                  140
# 0x29, 0x18,                    //  Usage Maximum (24)                 142
# 0x15, 0x00,                    //  Logical Minimum (0)                144
# 0x25, 0x01,                    //  Logical Maximum (1)                146
# 0x75, 0x01,                    //  Report Size (1)                    148
# 0x95, 0x10,                    //  Report Count (16)                  150
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               152
# 0x05, 0x0c,                    //  Usage Page (Consumer Devices)      154
# 0x19, 0x00,                    //  Usage Minimum (0)                  156
# 0x2a, 0xff, 0x03,              //  Usage Maximum (1023)               158
# 0x15, 0x00,                    //  Logical Minimum (0)                161
# 0x26, 0xff, 0x03,              //  Logical Maximum (1023)             163
# 0x95, 0x01,                    //  Report Count (1)                   166
# 0x75, 0x10,                    //  Report Size (16)                   168
# 0x81, 0x00,                    //  Input (Data,Arr,Abs)               170
# 0x05, 0x01,                    //  Usage Page (Generic Desktop)       172
# 0x1a, 0x81, 0x00,              //  Usage Minimum (129)                174
# 0x2a, 0x83, 0x00,              //  Usage Maximum (131)                177
# 0x15, 0x00,                    //  Logical Minimum (0)                180
# 0x25, 0x01,                    //  Logical Maximum (1)                182
# 0x75, 0x01,                    //  Report Size (1)                    184
# 0x95, 0x03,                    //  Report Count (3)                   186
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               188
# 0x95, 0x05,                    //  Report Count (5)                   190
# 0x81, 0x01,                    //  Input (Cnst,Arr,Abs)               192
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 194
# 0x09, 0x02,                    //  Usage (Vendor Usage 2)             197
# 0x75, 0x08,                    //  Report Size (8)                    199
# 0x95, 0x0a,                    //  Report Count (10)                  201
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               203
# 0x85, 0x04,                    //  Report ID (4)                      205
# 0x06, 0x00, 0xff,              //  Usage Page (Vendor Defined Page 1) 207
# 0x0a, 0x00, 0xff,              //  Usage (Vendor Usage 0xff00)        210
# 0x75, 0x08,                    //  Report Size (8)                    213
# 0x95, 0x0f,                    //  Report Count (15)                  215
# 0xb1, 0x02,                    //  Feature (Data,Var,Abs)             217
# 0xc0,                          // End Collection                      219
# 
R: 220 05 01 09 02 a1 01 09 01 a1 01 85 01 05 09 19 01 29 08 15 00 25 01 75 01 95 08 81 02 05 01 09 30 09 31 16 08 80 26 ff 7f 75 10 95 02 81 06 09 38 15 81 25 7f 75 08 95 01 81 06 05 0c 0a 00 ff 81 06 06 00 ff 09 01 75 08 95 08 81 02 c0 c0 05 01 09 06 a1 01 85 02 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 06 00 ff 09 02 75 08 95 01 81 02 05 07 19 00 29 7f 15 00 25 7f 75 08 95 05 81 00 c0 05 0c 09 01 a1 01 85 03 05 09 19 09 29 18 15 00 25 01 75 01 95 10 81 02 05 0c 19 00 2a ff 03 15 00 26 ff 03 95 01 75 10 81 00 05 01 1a 81 00 2a 83 00 15 00 25 01 75 01 95 03 81 02 95 05 81 01 06 00 ff 09 02 75 08 95 0a 81 02 85 04 06 00 ff 0a 00 ff 75 08 95 0f b1 02 c0
N: Contour Design Contour Rollermouse Red
I: 3 0b33 1004


hid-record /dev/hidraw2

# Contour Design Contour Rollermouse Red               
# 0x06, 0x00, 0xff,              // Usage Page (Vendor Defined Page 1)  0
# 0x0a, 0x00, 0xff,              // Usage (Vendor Usage 0xff00)         3
# 0xa1, 0x01,                    // Collection (Application)            6
# 0x15, 0x00,                    //  Logical Minimum (0)                8
# 0x26, 0xff, 0x00,              //  Logical Maximum (255)              10
# 0x75, 0x08,                    //  Report Size (8)                    13
# 0x95, 0x20,                    //  Report Count (32)                  15
# 0x19, 0x00,                    //  Usage Minimum (0)                  17
# 0x2a, 0xff, 0x00,              //  Usage Maximum (255)                19
# 0x91, 0x02,                    //  Output (Data,Var,Abs)              22
# 0x19, 0x00,                    //  Usage Minimum (0)                  24
# 0x2a, 0xff, 0x00,              //  Usage Maximum (255)                26
# 0x15, 0x00,                    //  Logical Minimum (0)                29
# 0x26, 0xff, 0x00,              //  Logical Maximum (255)              31
# 0x75, 0x08,                    //  Report Size (8)                    34
# 0x95, 0x20,                    //  Report Count (32)                  36
# 0x81, 0x02,                    //  Input (Data,Var,Abs)               38
# 0xc0,                          // End Collection                      40
# 
R: 41 06 00 ff 0a 00 ff a1 01 15 00 26 ff 00 75 08 95 20 19 00 2a ff 00 91 02 19 00 2a ff 00 15 00 26 ff 00 75 08 95 20 81 02 c0
N: Contour Design Contour Rollermouse Red
I: 3 0b33 1004
#  Undefined:    0 | Vendor Usage 1:    0 | Vendor Usage 2:    0 | 0xff000003:    0 | 0xff000004:    0 | 0xff000005:    0 | 0xff000006:    0 | 0xff000007:    0 | 0xff000008:    0 | 0xff000009:    0 | 0xff00000a:    0 | 0xff00000b:    0 | 0xff00000c:    0 | 0xff00000d:    0 | 0xff00000e:    0 | 0xff00000f:    0 | 0xff000010:    0 | 0xff000011:    0 | 0xff000012:    0 | 0xff000013:    0 | 0xff000014:    0 | 0xff000015:    0 | 0xff000016:    0 | 0xff000017:    0 | 0xff000018:    0 | 0xff000019:    0 | 0xff00001a:    0 | 0xff00001b:    0 | 0xff00001c:    0 | 0xff00001d:    0 | 0xff00001e:    0 | 0xff00001f:    0 
E: 000000.000000 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


/dev/hidraw2 registered no inputs, so following are all recorded from /dev/hidraw1:

Left:

# ReportID: 1 / Button: 1  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.000000 16 01 01 00 00 00 00 00 00 41 01 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.231984 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Right:

# ReportID: 1 / Button: 0  1  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    2 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.000000 16 01 02 00 00 00 00 00 00 41 02 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.436006 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Middle:

# ReportID: 1 / Button: 0  0  1  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    4 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000066.604014 16 01 04 00 00 00 00 00 00 41 04 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000067.280000 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Roll bar:

# ReportID: 3  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 |Consumer Devices ['00'] | System Power Down: 0 | System Sleep: 0 | System Wake Up: 0 | # | Vendor Usage 2:   65 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000067.454002 16 03 00 00 00 00 00 41 01 00 00 00 00 00 00 00 00
# ReportID: 1 / Button: 1  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000067.455986 16 01 01 00 00 00 00 00 00 41 00 00 00 00 00 00 00
# ReportID: 3  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 |Consumer Devices ['00'] | System Power Down: 0 | System Sleep: 0 | System Wake Up: 0 | # | Vendor Usage 2:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000067.985989 16 03 00 00 00 00 00 41 00 00 00 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000067.987968 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Double click:

# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 , -128 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.000000 16 01 00 00 00 00 00 00 00 41 80 00 00 00 00 00 00
# ReportID: 1 / Button: 1  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 , -128 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.001977 16 01 01 00 00 00 00 00 00 41 80 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 , -128 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.003950 16 01 00 00 00 00 00 00 00 41 80 00 00 00 00 00 00
# ReportID: 1 / Button: 1  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 , -128 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.005946 16 01 01 00 00 00 00 00 00 41 80 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 , -128 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.007945 16 01 00 00 00 00 00 00 00 41 80 00 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000000.115963 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Copy:

# ReportID: 2 / LeftControl: 1 | LeftShift: 0 | LeftAlt: 0 | Left GUI: 0 | RightControl: 0 | RightShift: 0 | RightAlt: 0 | Right GUI: 0 | Vendor Usage 2:   65 |Keyboard ['c and C', '00', '00', '00', '00']
E: 000159.344037 8 02 01 41 06 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,   32 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000159.346030 16 01 00 00 00 00 00 00 00 41 20 00 00 00 00 00 00
# ReportID: 2 / LeftControl: 0 | LeftShift: 0 | LeftAlt: 0 | Left GUI: 0 | RightControl: 0 | RightShift: 0 | RightAlt: 0 | Right GUI: 0 | Vendor Usage 2:   65 |Keyboard ['00', '00', '00', '00', '00']
E: 000159.544015 8 02 00 41 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000160.820033 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


Paste:


# ReportID: 2 / LeftControl: 1 | LeftShift: 0 | LeftAlt: 0 | Left GUI: 0 | RightControl: 0 | RightShift: 0 | RightAlt: 0 | Right GUI: 0 | Vendor Usage 2:   65 |Keyboard ['v and V', '00', '00', '00', '00']
E: 000168.598039 8 02 01 41 19 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,   64 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000168.599985 16 01 00 00 00 00 00 00 00 41 40 00 00 00 00 00 00
# ReportID: 2 / LeftControl: 0 | LeftShift: 0 | LeftAlt: 0 | Left GUI: 0 | RightControl: 0 | RightShift: 0 | RightAlt: 0 | Right GUI: 0 | Vendor Usage 2:   65 |Keyboard ['00', '00', '00', '00', '00']
E: 000168.800021 8 02 00 41 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0 ,    0
E: 000169.598007 16 01 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00


And, moving the mouse (very short clip, it was flooding this constantly, only X: and Y: changed depending on the direction cursor was moved to)

# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.331956 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.337936 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      1 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    1 ,    0 ,    0 ,    0 
E: 000005.339934 16 01 00 00 00 01 00 00 00 41 00 00 00 01 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.345925 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      1 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    1 ,    0 ,    0 ,    0 
E: 000005.347946 16 01 00 00 00 01 00 00 00 41 00 00 00 01 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.349935 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.355935 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      0 | Y:      1 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    0 ,    0 ,    1 ,    0 ,    0 ,    0 
E: 000005.357934 16 01 00 00 00 01 00 00 00 41 00 00 00 01 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      0 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    0 ,    0 ,    0 ,    0 
E: 000005.361933 16 01 00 01 00 00 00 00 00 41 00 01 00 00 00 00 00
# ReportID: 1 / Button: 0  0  0  0  0  0  0  0 | X:      1 | Y:      1 | Wheel:    0 | 0xcff00:    0 | Vendor Usage 1:   65 ,    0 ,    1 ,    0 ,    1 ,    0 ,    0 ,    0 
E: 000005.363925 16 01 00 01 00 01 00 00 00 41 00 01 00 01 00 00 00


Notably, when using "xev -input button | grep button", I saw more erratic button behaviour than with hid-recorder. Multiple buttons being pressed simultaneously, and behaviour changed depending if cursor had been moved before pressing a button or not. On hid-recorder, the above results were consistent.
Comment 9 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-11-29 22:59:20 UTC
Transport layer looks good. Reports match report descriptor and actions.

Let's check kernel driver output. Use evemu-record from devel/evemu to check events sent to userworld through /dev/input/event# device nodes. All Rollermouse nodes should be checked even a keyboard one.

And after then libinput should be tested. Run 'libinput debug-events' and see its output.
Comment 10 Atte Peltomäki 2022-11-30 11:46:47 UTC
Yes sir! After capturing all requested data, I realised I had disabled the usbhid/hidraw loader.conf options (since they make the machine quite unusable), so I rebooted and did it all over again. Since the data differ from each other, I'm including both sets. First, without the options.

# EVEMU 1.3
# Kernel: 13.1-RELEASE-p3
# Input device name: "Contour Rollermouse Red"
# Input device ID: bus 0x03 vendor 0xb33 product 0x1004 version 0000
# Supported events:
#   Event type 0 (EV_SYN)
#     Event code 0 (SYN_REPORT)
#     Event code 1 (SYN_CONFIG)
#     Event code 2 (SYN_MT_REPORT)
#     Event code 3 (SYN_DROPPED)
#     Event code 4 ((null))
#     Event code 5 ((null))
#     Event code 6 ((null))
#     Event code 7 ((null))
#     Event code 8 ((null))
#     Event code 9 ((null))
#     Event code 10 ((null))
#     Event code 11 ((null))
#     Event code 12 ((null))
#     Event code 13 ((null))
#     Event code 14 ((null))
#     Event code 15 (SYN_MAX)
#   Event type 1 (EV_KEY)
#     Event code 272 (BTN_LEFT)
#     Event code 273 (BTN_RIGHT)
#     Event code 274 (BTN_MIDDLE)
#     Event code 275 (BTN_SIDE)
#     Event code 276 (BTN_EXTRA)
#     Event code 277 (BTN_FORWARD)
#     Event code 278 (BTN_BACK)
#     Event code 279 (BTN_TASK)
#     Event code 280 ((null))
#     Event code 281 ((null))
#     Event code 282 ((null))
#     Event code 283 ((null))
#     Event code 284 ((null))
#     Event code 285 ((null))
#     Event code 286 ((null))
#     Event code 287 ((null))
#     Event code 288 (BTN_TRIGGER)
#     Event code 289 (BTN_THUMB)
#     Event code 290 (BTN_THUMB2)
#     Event code 291 (BTN_TOP)
#     Event code 292 (BTN_TOP2)
#     Event code 293 (BTN_PINKIE)
#     Event code 294 (BTN_BASE)
#     Event code 295 (BTN_BASE2)
#     Event code 296 (BTN_BASE3)
#     Event code 297 (BTN_BASE4)
#   Event type 2 (EV_REL)
#     Event code 0 (REL_X)
#     Event code 1 (REL_Y)
#     Event code 8 (REL_WHEEL)
# Properties:
#   Property  type 0 (INPUT_PROP_POINTER)
N: Contour Rollermouse Red
I: 0003 0b33 1004 0000
P: 01 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 ff ff ff 03 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 03 01 00 00 00 00 00 00
B: 03 00 00 00 00 00 00 00 00
B: 04 00 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 00 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
################################
#      Waiting for events      #
################################

Left:

E: 22.620007 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 22.620007 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +15342ms
E: 22.739929 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 22.739929 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +119ms

Right:

E: 30.202002 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 30.202002 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 30.202002 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +7463ms
E: 30.418010 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 30.418010 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 30.418010 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +216ms

Middle:

E: 41.836010 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 41.836010 0001 0112 0001	# EV_KEY / BTN_MIDDLE           1
E: 41.836010 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +11418ms
E: 42.228031 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 42.228031 0001 0112 0000	# EV_KEY / BTN_MIDDLE           0
E: 42.228031 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +392ms

Double:

E: 56.732014 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 56.732014 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +14504ms
E: 57.024015 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 57.024015 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +292ms

Copy:

E: 69.289978 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 69.289978 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +12265ms
E: 69.552022 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 69.552022 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +263ms

Paste:

E: 77.800015 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 77.800015 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +8248ms
E: 78.014019 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 78.014019 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +214ms

Scroll bar:

E: 99.148023 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 99.148023 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +21134ms
E: 99.149893 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 99.149893 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 99.149893 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +1ms
E: 99.508024 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 99.508024 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 99.508024 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +359ms
E: 99.509882 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 99.509882 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +1ms

Wheel up and down:

E: 147.820034 0002 0008 0001	# EV_REL / REL_WHEEL            1
E: 147.820034 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +48311ms

E: 153.555873 0002 0008 -001	# EV_REL / REL_WHEEL            -1
E: 153.555873 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +5735ms

Moving mouse:

E: 188.843915 0002 0001 -001	# EV_REL / REL_Y                -1
E: 188.843915 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4ms
E: 188.845902 0002 0000 0001	# EV_REL / REL_X                1
E: 188.845902 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 188.847916 0002 0001 -001	# EV_REL / REL_Y                -1
E: 188.847916 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 188.851846 0002 0000 0001	# EV_REL / REL_X                1
E: 188.851846 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4ms
E: 188.855839 0002 0000 0001	# EV_REL / REL_X                1
E: 188.855839 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4ms
E: 188.859852 0002 0000 0001	# EV_REL / REL_X                1
E: 188.859852 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4ms
E: 188.863837 0002 0000 0001	# EV_REL / REL_X                1
E: 188.863837 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4ms
E: 188.869851 0002 0000 0001	# EV_REL / REL_X                1
E: 188.869851 0002 0001 -001	# EV_REL / REL_Y                -1
E: 188.869851 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +6ms
E: 188.875858 0002 0001 -001	# EV_REL / REL_Y                -1
E: 188.875858 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +6ms
E: 188.879855 0002 0000 0001	# EV_REL / REL_X                1

libinput debug-events: (same buttons pressed in same order as previously)

-event0   DEVICE_ADDED            System mouse                      seat0 default group1  cap:p left scroll-nat scroll-button
-event1   DEVICE_ADDED            System keyboard multiplexer       seat0 default group2  cap:k
-event2   DEVICE_ADDED            Control Method Lid Switch         seat0 default group3  cap:S
-event3   DEVICE_ADDED            Sleep Button                      seat0 default group4  cap:k
-event4   DEVICE_ADDED            AT keyboard                       seat0 default group5  cap:k
-event5   DEVICE_ADDED            SynPS/2 Synaptics TouchPad        seat0 default group6  cap:pg  size 98x54mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event6   DEVICE_ADDED            Generic PS/2 mouse                seat0 default group7  cap:p left scroll-nat scroll-button
-event7   DEVICE_ADDED            keyboard                          seat0 default group8  cap:k
-event8   DEVICE_ADDED            Multi-Media                       seat0 default group9  cap:k
-event9   DEVICE_ADDED            Contour Rollermouse Red           seat0 default group10 cap:p left scroll-nat scroll-button
 event9   POINTER_BUTTON          +0.000s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +0.116s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +2.208s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +2.208s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +2.344s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +2.344s	BTN_RIGHT (273) released, seat count: 0
 event9   POINTER_BUTTON          +9.618s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +9.618s	BTN_MIDDLE (274) pressed, seat count: 1
 event9   POINTER_BUTTON          +9.914s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +9.914s	BTN_MIDDLE (274) released, seat count: 0
 event9   POINTER_BUTTON          +12.368s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +12.576s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +14.498s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +14.676s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +15.674s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +15.844s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +18.056s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +18.058s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +18.058s	BTN_RIGHT (273) released, seat count: 0
 event9   POINTER_BUTTON          +18.252s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +18.252s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +18.254s	BTN_RIGHT (273) released, seat count: 0
 event9   POINTER_SCROLL_WHEEL    +20.818s	vert -15.00/-120.0* horiz 0.00/0.0 (wheel)
 event9   POINTER_SCROLL_WHEEL    +22.164s	vert 15.00/120.0* horiz 0.00/0.0 (wheel)

and cursor movement:

 event9   POINTER_MOTION          +0.346s	  0.00/  0.93 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.368s	  0.00/  0.71 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.380s	  0.00/  0.92 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.386s	  0.00/  1.00 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.396s	  0.00/  1.00 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.420s	  0.00/  0.95 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.424s	  0.00/  0.95 ( +0.00/ +1.00)
 event9   POINTER_MOTION          +0.428s	  1.00/  0.00 ( +1.00/ +0.00)


Then, with the loader.conf options:

# EVEMU 1.3
# Kernel: 13.1-RELEASE-p3
# Input device name: "Contour Design Contour Rollermouse Red"
# Input device ID: bus 0x03 vendor 0xb33 product 0x1004 version 0x05
# Supported events:
#   Event type 0 (EV_SYN)
#     Event code 0 (SYN_REPORT)
#     Event code 1 (SYN_CONFIG)
#     Event code 2 (SYN_MT_REPORT)
#     Event code 3 (SYN_DROPPED)
#     Event code 4 ((null))
#     Event code 5 ((null))
#     Event code 6 ((null))
#     Event code 7 ((null))
#     Event code 8 ((null))
#     Event code 9 ((null))
#     Event code 10 ((null))
#     Event code 11 ((null))
#     Event code 12 ((null))
#     Event code 13 ((null))
#     Event code 14 ((null))
#     Event code 15 (SYN_MAX)
#   Event type 1 (EV_KEY)
#     Event code 272 (BTN_LEFT)
#     Event code 273 (BTN_RIGHT)
#     Event code 274 (BTN_MIDDLE)
#     Event code 275 (BTN_SIDE)
#     Event code 276 (BTN_EXTRA)
#     Event code 277 (BTN_FORWARD)
#     Event code 278 (BTN_BACK)
#     Event code 279 (BTN_TASK)
#   Event type 2 (EV_REL)
#     Event code 0 (REL_X)
#     Event code 1 (REL_Y)
#     Event code 8 (REL_WHEEL)
# Properties:
#   Property  type 0 (INPUT_PROP_POINTER)
N: Contour Design Contour Rollermouse Red
I: 0003 0b33 1004 0005
P: 01 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 ff 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 03 01 00 00 00 00 00 00
B: 03 00 00 00 00 00 00 00 00
B: 04 00 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 00 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
################################
#      Waiting for events      #
################################

Left:

E: 35.682005 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 35.682005 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 35.682005 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +16620ms
E: 35.765893 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 35.765893 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 35.765893 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +83ms

Right:

E: 38.570006 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 38.570006 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2805ms
E: 38.710001 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 38.710001 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +140ms

Middle:

E: 42.319839 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 42.319839 0001 0112 0001	# EV_KEY / BTN_MIDDLE           1
E: 42.319839 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +3609ms
E: 42.652008 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 42.652008 0001 0112 0000	# EV_KEY / BTN_MIDDLE           0
E: 42.652008 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +333ms

Double:

E: 46.699982 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 46.699982 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4047ms
E: 46.701877 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 46.701877 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 46.703835 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 46.703835 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 46.705837 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 46.705837 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 46.707854 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 46.707854 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 46.893969 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 46.893969 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +186ms

Copy:

E: 50.171837 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 50.171837 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +3278ms
E: 50.394014 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 50.394014 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +223ms

Paste:

E: 53.519877 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 53.519877 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +3125ms
E: 53.734008 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 53.734008 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +215ms

Scroll bar:

E: 58.246005 0001 0110 0001	# EV_KEY / BTN_LEFT             1
E: 58.246005 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4512ms
E: 58.514005 0001 0110 0000	# EV_KEY / BTN_LEFT             0
E: 58.514005 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +268ms


Movement:

E: 63.492010 0001 0111 0001	# EV_KEY / BTN_RIGHT            1
E: 63.492010 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4978ms
E: 63.498005 0002 0000 -001	# EV_REL / REL_X                -1
E: 63.498005 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +6ms
E: 63.501964 0002 0001 0001	# EV_REL / REL_Y                1
E: 63.501964 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +3ms
E: 63.503913 0002 0000 -001	# EV_REL / REL_X                -1
E: 63.503913 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 68.072009 0002 0000 -001	# EV_REL / REL_X                -1
E: 68.072009 0002 0001 0001	# EV_REL / REL_Y                1
E: 68.072009 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +4569ms
E: 68.074006 0002 0001 0001	# EV_REL / REL_Y                1
E: 68.074006 0001 0111 0000	# EV_KEY / BTN_RIGHT            0
E: 68.074006 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +2ms
E: 68.178009 0002 0001 0001	# EV_REL / REL_Y                1
E: 68.178009 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +104ms
E: 68.186009 0002 0000 -001	# EV_REL / REL_X                -1
E: 68.186009 0000 0000 0001	# ------------ SYN_REPORT (1) ---------- +8ms
E: 68.192012 0002 0001 0001	# EV_REL / REL_Y                1


Buttons:

-event0   DEVICE_ADDED            System mouse                      seat0 default group1  cap:p left scroll-nat scroll-button
-event1   DEVICE_ADDED            System keyboard multiplexer       seat0 default group2  cap:k
-event10  DEVICE_ADDED            Contour Design Contour Rollermouse Red Keyboard seat0 default group3  cap:k
-event11  DEVICE_ADDED            Contour Design Contour Rollermouse Red Consumer Control seat0 default group4  cap:k
-event2   DEVICE_ADDED            Control Method Lid Switch         seat0 default group5  cap:S
-event3   DEVICE_ADDED            Sleep Button                      seat0 default group6  cap:k
-event4   DEVICE_ADDED            AT keyboard                       seat0 default group7  cap:k
-event5   DEVICE_ADDED            SynPS/2 Synaptics TouchPad        seat0 default group8  cap:pg  size 98x54mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event6   DEVICE_ADDED            TPPS/2 IBM TrackPoint             seat0 default group9  cap:p left scroll-nat scroll-button
-event7   DEVICE_ADDED            keyboard                          seat0 default group10 cap:k
-event8   DEVICE_ADDED            Multi-Media                       seat0 default group11 cap:k
-event9   DEVICE_ADDED            Contour Design Contour Rollermouse Red seat0 default group12 cap:p left scroll-nat scroll-button
 event9   POINTER_BUTTON          +0.000s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +0.132s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +0.480s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +0.592s	BTN_RIGHT (273) released, seat count: 0
 event9   POINTER_BUTTON          +3.276s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +3.276s	BTN_MIDDLE (274) pressed, seat count: 1
 event9   POINTER_BUTTON          +3.568s	BTN_RIGHT (273) released, seat count: 0
 event9   POINTER_BUTTON          +3.568s	BTN_MIDDLE (274) released, seat count: 0
 event9   POINTER_BUTTON          +5.978s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +5.980s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +5.982s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +5.984s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +5.986s	BTN_LEFT (272) released, seat count: 0
 event9   POINTER_BUTTON          +6.086s	BTN_RIGHT (273) released, seat count: 0

Movement:

-event10  KEYBOARD_KEY            +6.662s	*** (-1) pressed
 event10  KEYBOARD_KEY            +6.662s	*** (-1) pressed
-event9   POINTER_BUTTON          +6.664s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +6.842s	BTN_RIGHT (273) released, seat count: 0
-event10  KEYBOARD_KEY            +6.864s	*** (-1) released
 event10  KEYBOARD_KEY            +6.864s	*** (-1) released
 event10  KEYBOARD_KEY            +7.194s	*** (-1) pressed
 event10  KEYBOARD_KEY            +7.194s	*** (-1) pressed
-event9   POINTER_BUTTON          +7.196s	BTN_RIGHT (273) pressed, seat count: 1
 event9   POINTER_BUTTON          +7.346s	BTN_RIGHT (273) released, seat count: 0
-event10  KEYBOARD_KEY            +7.396s	*** (-1) released
 event10  KEYBOARD_KEY            +7.396s	*** (-1) released
-event9   POINTER_BUTTON          +9.136s	BTN_LEFT (272) pressed, seat count: 1
 event9   POINTER_BUTTON          +9.308s	BTN_LEFT (272) released, seat count: 0
Comment 11 Atte Peltomäki 2022-11-30 11:50:51 UTC
I forgot to mention, since providing previous debug data, I have upgraded the OS from 13.1-RELEASE to 13.1-RELEASE-p3. Former was a fresh install, latter a simple binary upgrade.
Comment 12 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-11-30 22:29:06 UTC
Created attachment 238462 [details]
hms_conditionalize_kensington_support.patch

Extraneous right mouse button events most probably come from Kensington Slimblade trackball support. Attached patch conditionally disables it for hms(4) driver. Test it with the loader.conf options added.
Comment 13 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-11-30 22:38:31 UTC
But it is not clear why keyboard events appeared. Your hid-recorder dump did not contain any keyboard reports.

Could you run simultaneously following 3 commands:
# hid-recorder /dev/hidraw1
# evemu-record /dev/input/event9
# evemu-record /dev/input/event10

And than produce these keyboard events (with mouse movement?)

loader.conf options must be enabled at this time.
Comment 14 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-12-01 01:14:12 UTC
Created attachment 238464 [details]
hms_conditionalize_kensington_support.patch
Comment 15 Atte Peltomäki 2022-12-01 01:20:06 UTC
I'm delighted to report that your patch together with the loader.conf options have successfully fixed the mouse, and it is now working 100% as expected. Thank you very much!!

From the working setup Xorg.0.log:

[    14.642] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red Keyboard (/dev/input/event10)
[    14.642] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "evdev keyboard catchall"
[    14.642] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "Evdev keyboard"
[    14.642] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "libinput keyboard catchall"
[    14.642] (**) Contour Design Contour Rollermouse Red Keyboard: Applying InputClass "keyboard-all"
[    14.642] (II) Using input driver 'evdev' for 'Contour Design Contour Rollermouse Red Keyboard'
[    14.642] (**) Contour Design Contour Rollermouse Red Keyboard: always reports core events
[    14.642] (**) evdev: Contour Design Contour Rollermouse Red Keyboard: Device: "/dev/input/event10"
[    14.642] (--) evdev: Contour Design Contour Rollermouse Red Keyboard: Vendor 0xb33 Product 0x1004
[    14.642] (--) evdev: Contour Design Contour Rollermouse Red Keyboard: Found keys
[    14.642] (II) evdev: Contour Design Contour Rollermouse Red Keyboard: Configuring as keyboard
[    14.642] (**) Option "config_info" "udev:/dev/input/event10"
[    14.642] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red Keyboard" (type: KEYBOARD, id 8)
[    14.642] (**) Option "xkb_rules" "evdev"
[    14.642] (**) Option "xkb_layout" "us,fi"
[    14.642] (**) Option "xkb_variant" "hhk"
[    14.642] (**) Option "xkb_options" "grp:rwin_toggle"
[    14.642] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red Consumer Control (/dev/input/event11)
[    14.642] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "evdev keyboard catchall"
[    14.642] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "Evdev keyboard"
[    14.642] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "libinput keyboard catchall"
[    14.642] (**) Contour Design Contour Rollermouse Red Consumer Control: Applying InputClass "keyboard-all"
[    14.642] (II) Using input driver 'evdev' for 'Contour Design Contour Rollermouse Red Consumer Control'
[    14.642] (**) Contour Design Contour Rollermouse Red Consumer Control: always reports core events
[    14.642] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: Device: "/dev/input/event11"
[    14.642] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Vendor 0xb33 Product 0x1004
[    14.642] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Found 1 mouse buttons
[    14.642] (--) evdev: Contour Design Contour Rollermouse Red Consumer Control: Found keys
[    14.642] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Forcing relative x/y axes to exist.
[    14.642] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Configuring as mouse
[    14.642] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: Configuring as keyboard
[    14.642] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: YAxisMapping: buttons 4 and 5
[    14.642] (**) evdev: Contour Design Contour Rollermouse Red Consumer Control: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200
[    14.642] (**) Option "config_info" "udev:/dev/input/event11"
[    14.642] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red Consumer Control" (type: KEYBOARD, id 9)
[    14.642] (**) Option "xkb_rules" "evdev"
[    14.642] (**) Option "xkb_layout" "us,fi"
[    14.642] (**) Option "xkb_variant" "hhk"
[    14.642] (**) Option "xkb_options" "grp:rwin_toggle"
[    14.643] (II) evdev: Contour Design Contour Rollermouse Red Consumer Control: initialized for relative axes.
[    14.643] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) keeping acceleration scheme 1
[    14.643] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration profile 0
[    14.643] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration factor: 2.000
[    14.643] (**) Contour Design Contour Rollermouse Red Consumer Control: (accel) acceleration threshold: 4


[....]

[    14.813] (II) config/udev: Adding input device Contour Design Contour Rollermouse Red (/dev/input/event9)
[    14.813] (**) Contour Design Contour Rollermouse Red: Applying InputClass "evdev pointer catchall"
[    14.813] (**) Contour Design Contour Rollermouse Red: Applying InputClass "libinput pointer catchall"
[    14.813] (II) Using input driver 'libinput' for 'Contour Design Contour Rollermouse Red'
[    14.813] (**) Contour Design Contour Rollermouse Red: always reports core events
[    14.813] (**) Option "Device" "/dev/input/event9"
[    14.813] (**) Option "_source" "server/udev"
[    14.815] (II) event9  - Contour Design Contour Rollermouse Red: is tagged by udev as: Mouse
[    14.815] (II) event9  - Contour Design Contour Rollermouse Red: device is a pointer
[    14.817] (II) event9  - Contour Design Contour Rollermouse Red: device removed
[    14.817] (**) Option "config_info" "udev:/dev/input/event9"
[    14.817] (II) XINPUT: Adding extended input device "Contour Design Contour Rollermouse Red" (type: MOUSE, id 16)
[    14.817] (**) Option "AccelerationScheme" "none"
[    14.817] (**) Contour Design Contour Rollermouse Red: (accel) selected scheme none/0
[    14.817] (**) Contour Design Contour Rollermouse Red: (accel) acceleration factor: 2.000
[    14.817] (**) Contour Design Contour Rollermouse Red: (accel) acceleration threshold: 4
[    14.818] (II) event9  - Contour Design Contour Rollermouse Red: is tagged by udev as: Mouse
[    14.819] (II) event9  - Contour Design Contour Rollermouse Red: device is a pointer

input/event9 is registering all mouse functionality- pointer movement and mouse buttons.

input/event10 registers the copy and paste buttons, which depending on the mode the device is in, either produce Ctrl-C/Ctrl-V (PC mode) or Meta-C/Meta-V (Mac mode) key combinations, or nothing (HID mode).

input/event11 registers nothing at all.

If system is booted without the loader.conf options, operation degenerates back to the first reported erratic behaviour. I did not capture exhaustive debug data from it, though.

Let me know if there's anything else you need. FYI, I'm traveling again tomorrow and will likely be gone until end of next week, then I can get back to this.
Comment 16 Atte Peltomäki 2022-12-01 02:50:53 UTC
(In reply to Vladimir Kondratyev from comment #14)

This patch also fixes the issue, no observable functional change from the previous. Tested against 13.1-RELEASE-p5.
Comment 17 Vladimir Kondratyev freebsd_committer freebsd_triage 2022-12-01 09:54:22 UTC
Created attachment 238469 [details]
ums_conditionalize_kensington_support.patch

ums(4) patch (no /boot/loader.conf changes). Requires previous patch.

Test this one too.
Comment 18 Atte Peltomäki 2022-12-01 11:43:26 UTC
(In reply to Vladimir Kondratyev from comment #17)

Tested. This fixes mouse operation when usbhid(4) is not loaded, the copy/paste buttons just do nothing. Restoring the loader.conf options restores copy/paste button operation.

Everything appears to be working as it should. I also have a Happy Hacking keyboard, which according to dmesg is now handled by usbhid(4) instead of ugen(4) and it's also working correctly.

Thank you so much for fixing this!
Comment 19 commit-hook freebsd_committer freebsd_triage 2022-12-24 09:03:06 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=ab4f740bc59e3ba2948bcc4e03bd6125b1dae36f

commit ab4f740bc59e3ba2948bcc4e03bd6125b1dae36f
Author:     Vladimir Kondratyev <wulf@FreeBSD.org>
AuthorDate: 2022-12-24 09:01:20 +0000
Commit:     Vladimir Kondratyev <wulf@FreeBSD.org>
CommitDate: 2022-12-24 09:01:20 +0000

    ums(4): Disable vendor usage page button support

    for all devices except Kensington Slimblade Trackball as it brokes
    some other devices like Contour Rollermouse Red

    Add a quirk for it as well.

    Reported by:    Atte Peltomäki <koston_AT_iki_DOT_fi>
    PR:             267922
    MFC after:      2 weeks

 share/man/man4/usb_quirk.4    |  2 ++
 sys/dev/usb/input/ums.c       | 18 ++++++++++++------
 sys/dev/usb/quirk/usb_quirk.c |  3 +++
 sys/dev/usb/quirk/usb_quirk.h |  1 +
 sys/dev/usb/usbdevs           |  1 +
 5 files changed, 19 insertions(+), 6 deletions(-)
Comment 20 commit-hook freebsd_committer freebsd_triage 2022-12-24 09:03:07 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=0661cf74e6e5dbd585c4a5a3e621d915bb6787d3

commit 0661cf74e6e5dbd585c4a5a3e621d915bb6787d3
Author:     Vladimir Kondratyev <wulf@FreeBSD.org>
AuthorDate: 2022-12-24 09:01:20 +0000
Commit:     Vladimir Kondratyev <wulf@FreeBSD.org>
CommitDate: 2022-12-24 09:01:20 +0000

    hms(4): Disable vendor usage page button support

    for all devices except Kensington Slimblade Trackball as it brokes
    some other devices like Contour Rollermouse Red

    Add a quirk for it as well.

    Reported by:    Atte Peltomäki <koston_AT_iki_DOT_fi>
    PR:             267922
    MFC after:      2 weeks

 share/man/man4/hidquirk.4 |  2 ++
 sys/dev/hid/hidquirk.c    |  2 ++
 sys/dev/hid/hidquirk.h    |  1 +
 sys/dev/hid/hms.c         | 12 ++++++++----
 4 files changed, 13 insertions(+), 4 deletions(-)
Comment 21 Atte Peltomäki 2023-07-01 12:05:47 UTC
This issue is fixed in 13.2-REL -> changing status to FIXED.

Thanks again!