Ubuntu – Synaptics touchpad keeps scrolling after letting go of the touchpad in Ubuntu

driversscrollingsynaptics-touchpadUbuntu

Since switching from Fedora to Ubuntu, I have a pretty annoying problem with my Synaptics Touchpad which is built into my Thinkpad X220. When I use the two-finger scrolling functionality, it's as though the scroll events are "queued up" and keep happening even after I've completely removed my fingers from the touchpad. It's especially bad when browsing, since when I switch tabs with Ctrl+Tab, the pressing Ctrl—together with the scroll events which keep going—regularly zooms all the way in or out of webpages.

I haven't had this problem in Fedora, so I'm unsure what the difference is, since it should be the same driver for all I know. I've looked into some settings the driver has and which can be set via Xorg, but all that man synaptics tells me is:

The MinSpeed, MaxSpeed and AccelFactor parameters don't have any effect on scrolling speed. Scrolling speed is determined solely from the VertScrollDelta and HorizScrollDelta parameters.

Which is odd, since the behaviour I described seems just like there's some acceleration for the scrolling happening. So I'm out of ideas on how to go about this.

Best Answer

I actually found out the answer to this after searching through a lot more questions and answers on StackExchange sites and forums. It's a feature referred to as "Coasting", which I didn't find out about before because I was specifically just searching for "scrolling" (and not "scroll" as well).

Here's the relevant bits from man synaptics:

Option "CoastingSpeed" "float"

Your finger needs to produce this many scrolls per second in order to start coasting. The default is 20 which should prevent you from starting coasting unintentionally. 0 disables coasting. Property: "Synaptics Coasting Speed"

Option "CoastingFriction" "float"

Number of scrolls/second² to decrease the coasting speed. Default is 50. Property: "Synaptics Coasting Speed"

So for me personally I just set CoastingSpeed to 0 and that fixes the problem.

Related Question