summaryrefslogtreecommitdiff
path: root/src/filter.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2015-04-09 16:42:00 +0200
committerPeter Hutterer <peter.hutterer@who-t.net>2015-04-10 15:55:54 +1000
commit76adf39ab39e8a99f3e4901b23b01a8d4b1f93f3 (patch)
treed0d5909e158b6e0dfcaeb02d5a95af6b60da1f60 /src/filter.c
parent2a1a28dd1ddb7c3717e48e508d65a74a4a33f143 (diff)
filter: Make acceleration range wider
The main purpose of this patch is to allow the user to actually slow down pointer movement using libinput_device_config_accel_set_speed, this is achieved by changing the max-accel setting from "2.0 - speed" to "2.0 - speed * 1.5", resulting in a max-accel of 0.5 when the user configures speed at -1.0, the other accel profile parameters are adjusted by the same factor to keep the curve the same. This means that the user can get the exact same behavior as before by multiplying the old setting by 0.6667 (2/3), this also means that this change not only allows the user to select a slower speed, but to keep things balanced the same as before, also a higher speed. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/filter.c')
-rw-r--r--src/filter.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/filter.c b/src/filter.c
index 033201fc..962d74de 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -258,13 +258,15 @@ accelerator_set_speed(struct motion_filter *filter,
assert(speed >= -1.0 && speed <= 1.0);
/* delay when accel kicks in */
- accel_filter->threshold = DEFAULT_THRESHOLD - speed/6.0;
+ accel_filter->threshold = DEFAULT_THRESHOLD - speed / 4.0;
+ if (accel_filter->threshold < 0.2)
+ accel_filter->threshold = 0.2;
/* adjust max accel factor */
- accel_filter->accel = DEFAULT_ACCELERATION + speed;
+ accel_filter->accel = DEFAULT_ACCELERATION + speed * 1.5;
/* higher speed -> faster to reach max */
- accel_filter->incline = DEFAULT_INCLINE + speed/2.0;
+ accel_filter->incline = DEFAULT_INCLINE + speed * 0.75;
filter->speed = speed;
return true;