diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2015-08-06 14:59:38 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2015-08-20 07:57:14 +1000 |
commit | c8da19b50a30d840484383f41e0218814f1501a0 (patch) | |
tree | cd8ba22984997b918521e97499203c37338bb09b /src/evdev-mt-touchpad.h | |
parent | d8c37a94c0fe9c77e39034e377ab8796ddc0da3f (diff) |
touchpad: use unaccelerated motion data for scrolling
For short and quick scroll gestures, those that should only trigger a few
lines of scroll the pointer acceleration is wildly unpredictable. Since we
average the motion of both fingers it's hard enough to intuitively predict
what the motion will be like. On top of that is the small threshold before we
start scrolling, so some of the initial motion gets swallowed before we
accelerate, making the next motion even more unpredictable.
The end result is that multiple seemingly identical finger motions cause
wildly different scroll motion.
Drop pointer acceleration for two-finger and edge scrolling. This makes short
scroll motions much more predictable and doesn't seem to have much effect on
long scroll motions. Plus, in natural scroll mode it really feels like the
content is stuck to your fingers now. Go wash your hands.
https://bugzilla.redhat.com/show_bug.cgi?id=1249365
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'src/evdev-mt-touchpad.h')
-rw-r--r-- | src/evdev-mt-touchpad.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h index 3bd8425..5f87c3f 100644 --- a/src/evdev-mt-touchpad.h +++ b/src/evdev-mt-touchpad.h @@ -395,6 +395,10 @@ struct normalized_coords tp_filter_motion(struct tp_dispatch *tp, const struct normalized_coords *unaccelerated, uint64_t time); +struct normalized_coords +tp_filter_motion_unaccelerated(struct tp_dispatch *tp, + const struct normalized_coords *unaccelerated, + uint64_t time); int tp_touch_active(struct tp_dispatch *tp, struct tp_touch *t); |