It would be really useful to have acceleration for the mousewheel scroll, as with the pointer. At the moment there is just a single gain setting "mousewheel scrolls by X lines". However, sometimes I want to scroll just one line at a time (eg move one-line down in an editor), sometimes I want to scroll several lines (while reading a document), and sometimes I want to "fling" the scroll-wheel sharply down to scroll through multiple pages of a 100-page PDF. So, I'd really like to have a 3-line polygon for mousewheel-amplifcation. Reproducible: Always For starters how about the following: count=number_of_wheel_clicks_in_last_200ms. if count <= 3, gain = 1 elif count <= 10, gain = 3 #mousewheel scrolls-by else, gain=20 Thanks very much .
Is this something supported by the X input drivers?
> Is this something supported by the X input drivers? I'm not sure - I couldn't find anything in xinput settings. It's certainly something that Windows and OSX do, and there is Logitech custom mouse-hardware that does it too. This thread is helpful https://bbs.archlinux.org/viewtopic.php?id=135657 In particular, here is an xtest hack that does it. http://ubuntuforums.org/showthread.php?t=1179448&page=2#20
The Ubuntu link you provide is actually about changing the speed of the wheel, not about providing acceleration. Additionally, the last comment in the archlinux forum confirms what I was suspecting: "... each application has to deal with its own implementation, and there is no one place to change this." Wheel acceleration could be added in the Qt library, but then it would only affect Qt applications. In either case, this means the feature has to be implemented downstream.
As I understand it, Xtest lets you generate fake button presses. So we would have a small daemon which reads every real press (the wheel is actually a series of button-4 or 5 clicks), and then injects zero to N more. The application with focus then receives 1 real click, and 0-N dummy clicks for every tick of the wheel. To have acceleration, all we need is for the gain to vary with the click-rate.