Cannot convert upwards 1 finger slide into downwards 2 finger scroll
The first thing I noticed when switching to libinput is that it would often "miss" reading my two finger scroll. On further investigation, I identified this is due to an edge case that can cause the scrolling to not trigger due to a really subtle and often unintentional variation in finger motion. I will try to clearly illustrate below using f1
and f2
to denote finger 1 and 2 respectively.
Scroll occurs: (expected)
-
f1
andf2
begin off of the track pad -
f1
touches and slides downwards and pauses -
f2
touches and slides downwards followed shortly byf1
Scroll does not occur: (unexpected)
-
f1
andf2
begin off of the track pad -
f1
touches and slides downwards and pauses -
f2
touches and slides upwards followed shortly byf1
Scroll occurs: (also expected)
-
f1
andf2
begin off of the track pad -
f1
touches and slides downwards and pauses -
f2
touches, thenf1
first slides upwards followed shortly byf2
TL;DR
If both fingers' last directions are flipped (one upwards, the other downwards), scrolling is not recognized, even if these inverse motions are only across 1 pixel in distance and followed immediately by a much larger more prominent sliding in the same direction.
Precedent
I know Synaptics did not have this behavior. I cannot explicitly confirm with any other drivers, but empirically, I've never particularly noticed misinterpreted scrolls like this on Mac or Windows.
Note
I'd be willing to work on a fix for this if it would potentially be accepted. Also, if anyone more knowledgeable with libinput reads this, it'd be super helpful to know what part of the code most relates to this.