summaryrefslogtreecommitdiff
path: root/src/evdev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2022-09-05 11:33:57 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2022-09-08 09:03:15 +1000
commitad71c74885081a0e9d88953d2237f2a26a6f0ffa (patch)
tree3811408138e7ade8e7c648a7761411ee530861c0 /src/evdev.c
parent7ba0af575bee044145bda280ad2f5d7b1e7af479 (diff)
downloadlibinput-ad71c74885081a0e9d88953d2237f2a26a6f0ffa.tar.gz
filter: add a flat trackpoint accel
Previously, trackpoints got assigned the normal flat profile which does not accommodate for the trackpoint magic multiplier *and* had a config range that was too small if you take the multiplire indo account anyway. Fix this by adding a trackpoint-specific flat accel that has a wider configuration range and take sthe magic multiplier into account. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/evdev.c')
-rw-r--r--src/evdev.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/evdev.c b/src/evdev.c
index 31b37e5e..426933d1 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1186,17 +1186,23 @@ static inline bool
evdev_init_accel(struct evdev_device *device,
enum libinput_config_accel_profile which)
{
- struct motion_filter *filter;
+ struct motion_filter *filter = NULL;
- if (which == LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT)
- filter = create_pointer_accelerator_filter_flat(device->dpi);
- else if (device->tags & EVDEV_TAG_TRACKPOINT)
- filter = create_pointer_accelerator_filter_trackpoint(device->trackpoint_multiplier,
- device->use_velocity_averaging);
- else if (device->dpi < DEFAULT_MOUSE_DPI)
- filter = create_pointer_accelerator_filter_linear_low_dpi(device->dpi,
- device->use_velocity_averaging);
- else
+ if (device->tags & EVDEV_TAG_TRACKPOINT) {
+ if (which == LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT)
+ filter = create_pointer_accelerator_filter_trackpoint_flat(device->trackpoint_multiplier);
+ else
+ filter = create_pointer_accelerator_filter_trackpoint(device->trackpoint_multiplier,
+ device->use_velocity_averaging);
+ } else {
+ if (which == LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT)
+ filter = create_pointer_accelerator_filter_flat(device->dpi);
+ else if (device->dpi < DEFAULT_MOUSE_DPI)
+ filter = create_pointer_accelerator_filter_linear_low_dpi(device->dpi,
+ device->use_velocity_averaging);
+ }
+
+ if (!filter)
filter = create_pointer_accelerator_filter_linear(device->dpi,
device->use_velocity_averaging);