summaryrefslogtreecommitdiff
path: root/src/evdev-mt-touchpad.h
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2015-08-06 14:59:38 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2015-08-20 07:57:14 +1000
commitc8da19b50a30d840484383f41e0218814f1501a0 (patch)
treecd8ba22984997b918521e97499203c37338bb09b /src/evdev-mt-touchpad.h
parentd8c37a94c0fe9c77e39034e377ab8796ddc0da3f (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.h4
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);