[PATCH] libinput_device_config_accel_set_speed: Make acceleration range wider

Hans de Goede hdegoede at redhat.com
Thu Apr 9 07:42:00 PDT 2015


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 at redhat.com>
---
 src/filter.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/filter.c b/src/filter.c
index 033201f..962d74d 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;
-- 
2.3.4



More information about the wayland-devel mailing list