summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-07-02 15:36:59 +0200
committerHans de Goede <hdegoede@redhat.com>2017-07-02 15:36:59 +0200
commitf60e0f390334c5cb03bc89b249ff20dda0574b30 (patch)
treece0e04d2ba33c5973e8f16d190e0a830056dd9ba
parent5264a3c45c890014dc97ed3698b2c4272d9af2ba (diff)
evdev-mt-touchpad: Enable timestamp smoothing support for bluetooth touchpadsHEADmaster
Bluetooth wreaks havoc with the timestamp of the input events coming from the touchpad, enable timestamp smoothing support to counter this. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r--src/evdev-mt-touchpad.c4
-rw-r--r--src/filter.c6
-rw-r--r--src/filter.h4
-rw-r--r--tools/ptraccel-debug.c2
4 files changed, 12 insertions, 4 deletions
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 2d39e18..6af594d 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -2056,8 +2056,10 @@ tp_init_accel(struct tp_dispatch *tp)
if (tp->device->model_flags & EVDEV_MODEL_LENOVO_X230 ||
tp->device->model_flags & EVDEV_MODEL_LENOVO_X220_TOUCHPAD_FW81)
filter = create_pointer_accelerator_filter_lenovo_x230(tp->device->dpi);
+ else if (libevdev_get_id_bustype(device->evdev) == BUS_BLUETOOTH)
+ filter = create_pointer_accelerator_filter_touchpad(device->dpi, ms2us(50), ms2us(10));
else
- filter = create_pointer_accelerator_filter_touchpad(tp->device->dpi);
+ filter = create_pointer_accelerator_filter_touchpad(device->dpi, 0, 0);
if (!filter)
return false;
diff --git a/src/filter.c b/src/filter.c
index 49d324e..faf8d31 100644
--- a/src/filter.c
+++ b/src/filter.c
@@ -1028,7 +1028,9 @@ struct motion_filter_interface accelerator_interface_touchpad = {
};
struct motion_filter *
-create_pointer_accelerator_filter_touchpad(int dpi)
+create_pointer_accelerator_filter_touchpad(int dpi,
+ uint64_t event_delta_smooth_threshold,
+ uint64_t event_delta_smooth_value)
{
struct pointer_accelerator *filter;
@@ -1038,6 +1040,8 @@ create_pointer_accelerator_filter_touchpad(int dpi)
filter->base.interface = &accelerator_interface_touchpad;
filter->profile = touchpad_accel_profile_linear;
+ filter->event_delta_smooth_threshold = event_delta_smooth_threshold;
+ filter->event_delta_smooth_value = event_delta_smooth_value;
return &filter->base;
}
diff --git a/src/filter.h b/src/filter.h
index e24c20d..131f801 100644
--- a/src/filter.h
+++ b/src/filter.h
@@ -114,7 +114,9 @@ struct motion_filter *
create_pointer_accelerator_filter_linear_low_dpi(int dpi);
struct motion_filter *
-create_pointer_accelerator_filter_touchpad(int dpi);
+create_pointer_accelerator_filter_touchpad(int dpi,
+ uint64_t event_delta_smooth_threshold,
+ uint64_t event_delta_smooth_value);
struct motion_filter *
create_pointer_accelerator_filter_lenovo_x230(int dpi);
diff --git a/tools/ptraccel-debug.c b/tools/ptraccel-debug.c
index acb82c6..1fc31de 100644
--- a/tools/ptraccel-debug.c
+++ b/tools/ptraccel-debug.c
@@ -314,7 +314,7 @@ main(int argc, char **argv)
filter = create_pointer_accelerator_filter_linear_low_dpi(dpi);
profile = pointer_accel_profile_linear_low_dpi;
} else if (streq(filter_type, "touchpad")) {
- filter = create_pointer_accelerator_filter_touchpad(dpi);
+ filter = create_pointer_accelerator_filter_touchpad(dpi, 0, 0);
profile = touchpad_accel_profile_linear;
} else if (streq(filter_type, "x230")) {
filter = create_pointer_accelerator_filter_lenovo_x230(dpi);