Hi,
Fedora 38 with wayland session.
I’m currently looking into smooth scrolling and HID++ events under wayland and i’m confused.
I’ve connected a Logitech MX Master 3 mouse via bluetooth.
solaar or other utilities are not running.
I added a file 71-mouse-local.hwdb
to /etc/udev/hwdb.d
with the following content:
# Logitech MX Master 3 (via Bluetooth)
# Horiz wheel has 14 stops, angle is rounded up
mouse:*:name:*MX * 3*:
MOUSE_DPI=1000@2000
MOUSE_WHEEL_CLICK_ANGLE=15
MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL=26
MOUSE_WHEEL_CLICK_COUNT=24
MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL=14
when using libinput debug-events
i get:
event21 POINTER_SCROLL_WHEEL +1.767s vert 11.00/88.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +1.774s vert 2.00/16.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +1.796s vert 3.00/24.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +3.536s vert -9.00/-72.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +3.558s vert -2.00/-16.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +3.574s vert -2.00/-16.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +4.241s vert 11.00/88.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +4.256s vert 2.00/16.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +4.961s vert 10.00/80.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +4.968s vert 2.00/16.0* horiz 0.00/0.0 (wheel)
event21 POINTER_SCROLL_WHEEL +4.984s vert 3.00/24.0* horiz 0.00/0.0 (wheel)
when scrolling up or down. that looks ok for me.
When using wev
, which can dump input events from wayland i get:
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_discrete: axis: 0 (vertical), discrete: -1
[13: wl_pointer] axis: time: 11103535; axis: 0 (vertical), value: -10.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_discrete: axis: 0 (vertical), discrete: 1
[13: wl_pointer] axis: time: 11104105; axis: 0 (vertical), value: 10.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_discrete: axis: 0 (vertical), discrete: -1
[13: wl_pointer] axis: time: 11104668; axis: 0 (vertical), value: -10.000000
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] frame
[13: wl_pointer] axis_source: 0 (wheel)
[13: wl_pointer] axis_discrete: axis: 0 (vertical), discrete: 1
[13: wl_pointer] axis: time: 11105245; axis: 0 (vertical), value: 10.000000
when scrolling up or down one ratched (detent) click.
with free spinning wheel it looks exactly the same.
Looks like, sonewhere on the way from libinput to wev (and all other wayland programs?) the HID++ events get lost. Or am i misinterpreting things here?