My finger joints are starting to hurt from all the scrolling I’m doing through Google docs and code, so I’ve looked at solutions that don’t stress my index finger.

It looks like configuring alternate buttons to scroll on a regular mouse is really hard to do on Linux, but I’ve found that trackballs support the ability to click to make the trackball a scroll wheel, like the EX-G PRO Trackball from Elecom.

Click to scroll isn’t turned on by default, but it’s easy enough to turn it on in Linux:

xinput set-prop "pointer:ELECOM TrackBall Mouse EX-G Pro TrackBall" 'libinput Scroll Method Enabled' 0 0 1
xinput set-prop "pointer:ELECOM TrackBall Mouse EX-G Pro TrackBall" 'libinput Button Scrolling Button' 11

But this doesn’t persist when you unplug and plug the device in!

I tried to automate this via udev rules, but unfortunately I never got it to work (dmesg gives me no output at all).

Instead, an xorg config rule and restarting x did the trick:

Section "InputClass"
    Identifier    "Elecom TrackBall"
    MatchVendor    "ELECOM"
    MatchProduct    "EX-G Pro"
    Driver        "libinput"
    Option        "ScrollMethod"        "button"
    Option        "ScrollButton"        "11"