Regression 16.04 LTS to 18.04 LTS: Contour Design RollerMouse double click button no longer results in a double click event
My "Contour Design RollerMouse Free 2" has a specific button for double click. This button should with one physical click result in double click.
Reported also here: https://bugs.launchpad.net/ubuntu/+source/libinput/+bug/1767660
sudo libinput --version
1.10.4
sudo libinput list-devices
# two devices appear (/dev/input/event6 and /dev/input/event7) for one physical devices.
# one for mouse, one for keyboard, probably because copy/paste functionality use ctrl+c / ctrl+v shortcuts)
Device: Contour Design RollerMouse Re:d
Kernel: /dev/input/event6
Group: 5
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: button
Click methods: none
Disable-w-typing: n/a
Accel profiles: flat *adaptive
Rotation: n/a
Device: Contour Design RollerMouse Re:d
Kernel: /dev/input/event7
Group: 5
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a
sudo udevadm info /dev/input/event6
P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:0B33:1000.0001/input/input13/event6
N: input/event6
S: input/by-id/usb-Contour_Design_RollerMouse_Re:d-event-mouse
S: input/by-path/pci-0000:00:14.0-usb-0:2:1.0-event-mouse
E: DEVLINKS=/dev/input/by-id/usb-Contour_Design_RollerMouse_Re:d-event-mouse /dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.0-event-mouse
E: DEVNAME=/dev/input/event6
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:0B33:1000.0001/input/input13/event6
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_MOUSE=1
E: ID_MODEL=RollerMouse_Re:d
E: ID_MODEL_ENC=RollerMouse\x20Re:d
E: ID_MODEL_ID=1000
E: ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
E: ID_REVISION=0000
E: ID_SERIAL=Contour_Design_RollerMouse_Re:d
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030102:030101:030100:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Contour_Design
E: ID_VENDOR_ENC=Contour\x20Design
E: ID_VENDOR_ID=0b33
E: LIBINPUT_DEVICE_GROUP=3/b33/1000:usb-0000:00:14.0-2
E: MAJOR=13
E: MINOR=70
E: SUBSYSTEM=input
E: USEC_INITIALIZED=63347089
sudo udevadm info /dev/input/event7
P: /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:0B33:1000.0002/input/input14/event7
N: input/event7
S: input/by-id/usb-Contour_Design_RollerMouse_Re:d-if01-event-kbd
S: input/by-path/pci-0000:00:14.0-usb-0:2:1.1-event-kbd
E: BACKSPACE=guess
E: DEVLINKS=/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.1-event-kbd /dev/input/by-id/usb-Contour_Design_RollerMouse_Re:d-if01-event-kbd
E: DEVNAME=/dev/input/event7
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.1/0003:0B33:1000.0002/input/input14/event7
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_MODEL=RollerMouse_Re:d
E: ID_MODEL_ENC=RollerMouse\x20Re:d
E: ID_MODEL_ID=1000
E: ID_PATH=pci-0000:00:14.0-usb-0:2:1.1
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_1
E: ID_REVISION=0000
E: ID_SERIAL=Contour_Design_RollerMouse_Re:d
E: ID_TYPE=hid
E: ID_USB_DRIVER=usbhid
E: ID_USB_INTERFACES=:030102:030101:030100:
E: ID_USB_INTERFACE_NUM=01
E: ID_VENDOR=Contour_Design
E: ID_VENDOR_ENC=Contour\x20Design
E: ID_VENDOR_ID=0b33
E: LIBINPUT_DEVICE_GROUP=3/b33/1000:usb-0000:00:14.0-2
E: MAJOR=13
E: MINOR=71
E: SUBSYSTEM=input
E: TAGS=:power-switch:
E: USEC_INITIALIZED=63307104
E: XKBLAYOUT=fr
E: XKBMODEL=pc105
E: XKBVARIANT=latin9
sudo libinput debug-events --verbose
# Button Simple Click:
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_DOWN_WAITING
-event6 POINTER_BUTTON +2.13s BTN_LEFT (272) pressed, seat count: 1
event6 - debounce state: DEBOUNCE_STATE_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event6 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_WAITING
event6 POINTER_BUTTON +2.17s BTN_LEFT (272) released, seat count: 0
event6 - debounce state: DEBOUNCE_STATE_RELEASE_WAITING → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_RELEASED
event6 - debounce state: DEBOUNCE_STATE_RELEASED → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
# manual double click with the Simple Click button:
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_DOWN_WAITING
-event6 POINTER_BUTTON +2.15s BTN_LEFT (272) pressed, seat count: 1
event6 - debounce state: DEBOUNCE_STATE_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_PENDING
event6 - debounce state: DEBOUNCE_STATE_RELEASE_PENDING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event6 POINTER_BUTTON +2.17s BTN_LEFT (272) released, seat count: 0
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_DOWN_WAITING
event6 POINTER_BUTTON +2.35s BTN_LEFT (272) pressed, seat count: 1
event6 - debounce state: DEBOUNCE_STATE_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event6 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_WAITING
event6 POINTER_BUTTON +2.37s BTN_LEFT (272) released, seat count: 0
event6 - debounce state: DEBOUNCE_STATE_RELEASE_WAITING → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_RELEASED
event6 - debounce state: DEBOUNCE_STATE_RELEASED → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_PRESS_PENDING
event6 - debounce state: DEBOUNCE_STATE_PRESS_PENDING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event6 POINTER_BUTTON +2.40s BTN_LEFT (272) pressed, seat count: 1
event6 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_WAITING
event6 POINTER_BUTTON +2.42s BTN_LEFT (272) released, seat count: 0
event6 - debounce state: DEBOUNCE_STATE_RELEASE_WAITING → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_RELEASED
event6 - debounce state: DEBOUNCE_STATE_RELEASED → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
# Button "Double Click": (no double click event was triggered, it's the object of this report issue)
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event6 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_DOWN_WAITING
-event6 POINTER_BUTTON +1.88s BTN_LEFT (272) pressed, seat count: 1
event6 - debounce state: DEBOUNCE_STATE_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_PENDING
event6 - debounce state: DEBOUNCE_STATE_RELEASE_PENDING → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_DOWN_WAITING
event6 - debounce state: DEBOUNCE_STATE_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_RELEASE_PENDING
event6 - debounce state: DEBOUNCE_STATE_RELEASE_PENDING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event6 POINTER_BUTTON +1.89s BTN_LEFT (272) released, seat count: 0