Oh boy, I found/invented a tweak that I can't live without anymore. I use an MX Ergo trackball, not sure how it'd fare on a mouse, but here are the magic runes:
xinput set-prop <mouse device id> "libinput Scroll Method Enabled" 0 0 1
xinput set-prop <mouse device id> "libinput Button Scrolling Button" 8
Where you'd change 8 to a chosen mouse button and the mouse device id to its appropriate value from xinput list
.
What this does is make it so that as long as that button is being held, moving the cursors scrolls instead. It's hard to describe how much better of n experience it is vs. using the scroll wheel. It's much faster, much more precise, and less finger-tiring.
Here's a gist of the Python script I use to set it up - https://gist.github.com/pedrovhb/41e9d5b7b7b5c13fe2c94aa4cee1193a
wow that's neat! I use and love the same device and while it feels a bit odd at first it also feels better than using the scroll wheel. btw in case anyone wants to try a different button (8 is "Page back") you can use `xinput test ` to listen to events and see which number each button is. Good news: it seems like the Back button still works when using this. Thanks!
edit:
Putting this in ~/.xsessionrc
seems to work fine for me on Ubuntu:
xinput set-prop "pointer:Logitech MX Ergo" "libinput Button Scrolling Button" 8
xinput set-prop "pointer:Logitech MX Ergo" "libinput Scroll Method Enabled" 0 0 1