2

I'm using Ubuntu 22.04.2 on an x86_64 system, with Xorg and libinput.

I have a Logitech MX Master mouse (the first model), and I've noticed some unusual behaviour with scrolling. The mouse has a free-wheeling scroll wheel which can be set to "notched" mode, allowing distinct tactile feedback for each scroll event.

The problem is that sometimes a scroll event is missed. E.g. scrolling through Firefox, or an IDE window, sometimes moving the wheel a single notch has no visual effect, but subsequent notches work OK.

Narrowing it down, it seems that the first notch in the alternate direction is always dropped. I.e. if I scroll down three notches, the visual response corresponds to three scroll events, then if I scroll up one notch, there is no response. The second up event does cause a visual response.

I used xev -event button and it clearly shows no ButtonPress or ButtonRelease events if I move the scroll wheel up/down a single notch. I have to reverse direction and move it two notches to see any new events.

I used evtest and libinput debug-events and the device itself is definitely generating correct low-level messages for scroll wheel movements - so the low level and hardware are working properly.

From this question, I think this suggests the issue is somewhere above libinput - what would be the next component in the stack to look at?

EDIT: Given that xev shows the problem, and libinput debug-events does not, I'm thinking that the obvious first place to look is xf86-input-libinput, so I've built my own version and will start debugging it shortly...

EDIT2: after putting in debug for xf86-input-libinput I have confirmed that the data coming into this layer from libinput is intact, and seemingly correct, but the conversion to X11 input events seems to drop some of the data. Unfortunately, having live debug output in the log causes the problem to disappear, so I'm wondering if this is some kind of timing related situation, perhaps with regards to scroll wheel position estimation? I'll dig deeper when I have time.

2
  • How do you set that "notched" mode? Some kind of hardware switch, button, etc? One thing I'd try looking at is all the supporter libinput properties for this mouse: xinput and xinput list-props ID_OF_THE_MOUSE Also, this thread could give some extra insights on the debugging process: gitlab.freedesktop.org/libinput/libinput/-/issues/681
    – Kamiccolo
    Commented Apr 28, 2023 at 12:58
  • @Kamiccolo Yes, there's a hardware button on the mouse that switches between notched and "smooth". Thanks for the link, should be useful.
    – davidA
    Commented Apr 30, 2023 at 23:24

1 Answer 1

1

I am facing the same issue on Pop!_OS 22.04 x86_64 with Xorg and libinput, with a Logitech G502 Lightspeed mouse. The first scroll notch is missed every time after reversing the scroll direction. Trying your xev -event button test, I saw the same results.

I would prefer to post this as a comment since it doesn't really answer the question, but I don't have enough reputation for that yet. At least this might add some extra information and a confirmation that this issue exists. It might be Logitech-related?

Edit: For me, the first scroll notch is detected correctly in some windows, e.g. the system settings and the byobu terminal window. In Firefox and some games I played through Steam, the first notch is missed after reversing direction.

Edit 2: It turns out Firefox, by default, uses Xinput 1(?). There is an environment variable MOZ_USE_XINPUT2 that can be set to 1 before launching Firefox that seems to fix the issue for me. This bugzilla thread has some conversation regarding the use of Xinput2 and scrolling / touchscreen inputs. Setting the environment variable also allows me to scroll smoothly when the scroll wheel is unlocked (i.e. not in notched / tactile mode), instead of always moving a predefined amount. This suggests the issue might be related to the implementation of notched / tactile scrolling using the smooth scrolling scroll wheel (in Xinput 1).

1
  • Thank you for this answer - MOZ_USE_XINPUT2 does seem to resolve the issue for me, at least for now. I don't know yet what other problems it might introduce, but I'll use it for now.
    – davidA
    Commented Apr 30, 2023 at 23:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .