diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2022-09-05 11:33:57 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2022-09-08 09:03:15 +1000 |
commit | ad71c74885081a0e9d88953d2237f2a26a6f0ffa (patch) | |
tree | 3811408138e7ade8e7c648a7761411ee530861c0 /src/evdev.c | |
parent | 7ba0af575bee044145bda280ad2f5d7b1e7af479 (diff) | |
download | libinput-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.c | 26 |
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); |