53 lines
1.6 KiB
Diff
53 lines
1.6 KiB
Diff
|
From f6313a9d010f03a66fd1f68e0bbd5e073101f342 Mon Sep 17 00:00:00 2001
|
||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
Date: Thu, 4 Jun 2015 11:40:15 +1000
|
||
|
Subject: [PATCH libinput] filter: require minimum acceleration factor of 0.3
|
||
|
|
||
|
For really slow motions, the previous acceleration factor would go down to
|
||
|
effectively zero. So the slower the mouse motion was, the more it would be
|
||
|
slowed down which made the mouse at low speeds almost unusable.
|
||
|
|
||
|
Cap the minimum acceleration at 0.3 which provides a predictable slow motion
|
||
|
for the cursor when high precision is required.
|
||
|
|
||
|
New/old acceleration functions comparison:
|
||
|
|
||
|
^
|
||
|
| /
|
||
|
| /
|
||
|
ty| _________/
|
||
|
| / /
|
||
|
| / /
|
||
|
| / /
|
||
|
|/ / <----- new minimum accel factor
|
||
|
| /
|
||
|
|/___________________>
|
||
|
tx
|
||
|
|
||
|
i.e. the general shape is maintained, but it doesn't go to zero anymore. The
|
||
|
functions aren't parallel, the new shape is slightly flatter than the previous
|
||
|
one and they meet at the point where the functions flatten for the threshold
|
||
|
(tx/ty). ascii art has its limits...
|
||
|
|
||
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||
|
---
|
||
|
src/filter.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/filter.c b/src/filter.c
|
||
|
index c54d866..ed5a184 100644
|
||
|
--- a/src/filter.c
|
||
|
+++ b/src/filter.c
|
||
|
@@ -354,7 +354,7 @@ pointer_accel_profile_linear(struct motion_filter *filter,
|
||
|
const double threshold = accel_filter->threshold; /* units/ms */
|
||
|
const double incline = accel_filter->incline;
|
||
|
|
||
|
- s1 = min(1, speed_in * 5);
|
||
|
+ s1 = min(1, 0.3 + speed_in * 4);
|
||
|
s2 = 1 + (speed_in - threshold) * incline;
|
||
|
|
||
|
return min(max_accel, s2 > 1 ? s2 : s1);
|
||
|
--
|
||
|
2.4.1
|
||
|
|