Scrolling reliability on Chrome / Linux

I have this issue where UHK won’t reliably scroll Chrome on Linux. It works first time but then after scrolling, say, down a page of search results and then back up, no more scrolling occurs. I’ve ruled out Chrome Extensions.

Chrome/Windows is fine.
Firefox/Linux is fine.

I think this squarely points the blame at Chrome on Linux having an issue but since the mouse works fine and it’s just UHK which is affected (both the touchpad and minitrackball) I’m curious how UHK sends scroll events and how that differs from a mouse?

Are there any parameters I can tweak to work around this?

Has anyone else experienced this?

Thanks!

I have had similar issues with the small trackball on the key cluster on Linux. I don’t use Chrome, but I see it in Firefox periodically.

I’m not sure what triggers the problem, not what triggers the fix. I go to use it, and it’s not working. I use it again a while later (after forgetting that it’s not working) and it’s working again.

It’s not often - maybe once a week. Perhaps more often. But not enough to warrant tracking down the problem.

1 Like

After no more scrolling occurs, do you guys have to restart Chrome/Firefox to make it work again?

I have a similar issue in Telegram on Linux. On a daily/weekly basis, scrolling via the UHK stops working, and only restarting Telegram helps. Strangely, scrolling always works with my Logitech G502 mouse, regardless.

No. In my case at least, I need only stop scrolling for it to recover. It feels like there’s a cool down period of a couple of seconds. I will try and capture a video.

The weird thing is that it’s solid in e.g. my terminal with zero issues. For me, only Chrome is affected on Linux.

Do you use horizontal scrolling? If not, it may be worth disabling it in your UHK configuration, as it may interfere with vertical scrolling.

That’s a good idea. I tried altering a couple of settings but the problem persists.

set module.touchpad.scrollAxisLock true
set module.touchpad.axisLockSkew 0  # I also tried setting this to 100

I tried variants of the above to settings but I was not able to detect a difference in behaviour.

You should try:

set module.touchpad.scrollAxisLock 0

@mlac afaik we don’t have a setting for disabling horizontal scrolling.

Just tried that too. No dice.

I have recorded a video to demonstrate the issue though. https://photos.app.goo.gl/3Jen2ijfu4UbrKxF6.

I’m satisfied it’s a Chrome issue and not a UHK one but I’m curious to know what UHK does differently…

The UHK sends the same scroll events to the host as other USB devices, so it shouldn’t behave any differently.

What does the xev utility output to the console when scrolling in its window? Maybe it’ll help with debugging this issue.

For my issue in Firefox: no, I don’t have to restart. It eventually works again. I haven’t tried restarting though. The scrolling through other means works (external mouse, UHK mouse scrolling) - it’s just the small trackball that stops working.

If I encounter it again, I will run some further tests (see if the issue occurs in other programs, xev, restarting Firefox, etc).

After seeing the video from Greg though, my issue is very different. It stops completely and doesn’t start again for a while. Looks like an unrelated issue.

@simk Your issue seems hardware-related, and we’ll provide a replacement mini trackball if you contact us.

@mlac thanks. I’ll see if it occurs again. Since I wrote this it hasn’t happened again. And I can’t say that it has happened since the last time I upgraded the firmware.

If I experience it again, I’ll get in contact (not being in Europe, the postage sending out something unnecessary might be excessive…).

The logs are pretty noisy as you might expect but the obvious difference is that UHK produces a load of additional events, possibly related to supporting two axes? Both of the UHK logs show lots of additional notify events inc. Create/DestroyNotify, Enter/LeaveNotify, Map/UnmapNotify. I don’t see those in the logs generated by the mousewheel.

I don’t see a way to attach text files in the forum so pasting a sample here.

Sample mousewheel events:

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648438, (87,165), root:(124,689),
    state 0x5000, button 5, same_screen YES

ButtonPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648524, (87,165), root:(124,689),
    state 0x4000, button 5, same_screen YES

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648524, (87,165), root:(124,689),
    state 0x5000, button 5, same_screen YES

ButtonPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648726, (87,165), root:(124,689),
    state 0x4000, button 4, same_screen YES

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648726, (87,165), root:(124,689),
    state 0x4800, button 4, same_screen YES

ButtonPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648742, (87,165), root:(124,689),
    state 0x4000, button 4, same_screen YES

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648742, (87,165), root:(124,689),
    state 0x4800, button 4, same_screen YES

ButtonPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648758, (87,165), root:(124,689),
    state 0x4000, button 4, same_screen YES

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126648758, (87,165), root:(124,689),
    state 0x4800, button 4, same_screen YES

UHK touchpad:

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x213dbf, time 1126598766, (80,135), root:(117,659),
    state 0x5000, button 5, same_screen YES

LeaveNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598766, (80,135), root:(117,659),
    mode NotifyUngrab, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

UnmapNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dbf, from_configure NO

EnterNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598767, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  68  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

DestroyNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dbf

CreateNotify event, serial 38, synthetic NO, window 0x5200001,
    parent 0x5200001, window 0x213dc0, (80,135), width 1, height 1
border_width 0, override YES

MapNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dc0, override YES

LeaveNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598767, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

EnterNotify event, serial 38, synthetic YES, window 0x5200001,
    root 0x244, subw 0x0, time 0, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus YES, state 16384

ButtonPress event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x213dc0, time 1126598789, (80,135), root:(117,659),
    state 0x4000, button 5, same_screen YES

EnterNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598789, (80,135), root:(117,659),
    mode NotifyGrab, detail NotifyInferior, same_screen YES,
    focus YES, state 20480

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  68  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

ButtonRelease event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x213dc0, time 1126598789, (80,135), root:(117,659),
    state 0x5000, button 5, same_screen YES

LeaveNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598789, (80,135), root:(117,659),
    mode NotifyUngrab, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

UnmapNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dc0, from_configure NO

EnterNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598790, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  68  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

DestroyNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dc0

CreateNotify event, serial 38, synthetic NO, window 0x5200001,
    parent 0x5200001, window 0x213dc1, (80,135), width 1, height 1
border_width 0, override YES

MapNotify event, serial 38, synthetic NO, window 0x5200001,
    event 0x5200001, window 0x213dc1, override YES

LeaveNotify event, serial 38, synthetic NO, window 0x5200001,
    root 0x244, subw 0x0, time 1126598790, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyInferior, same_screen YES,
    focus YES, state 16384

EnterNotify event, serial 38, synthetic YES, window 0x5200001,
    root 0x244, subw 0x0, time 0, (80,135), root:(117,659),
    mode NotifyNormal, detail NotifyAncestor, same_screen YES,
    focus YES, state 16384```

Trackball logs look very similar to touchpad.

@kareltucek Any insights based on the xev output?

Nope. (I don’t know enough about x events to read it.)

I’d like to understand what the additional Notify events are and if there’s a way to suppress them. I’ll go do some reading.

2 Likes

Unclear which change made the difference but this no longer repros. Chrome / Linux certainly had some updates, but I also switching WM. Plus UHK firmware.

Whatever it was, I’m pleased to report that this seems to have been fixed after more than a year.

Woo!

1 Like