53 lines
1.8 KiB
Diff
53 lines
1.8 KiB
Diff
From f13fbc96e84b2bb78bb61886d79aaaeaf8a9b4a1 Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Thu, 11 Jun 2015 16:31:00 +1000
|
|
Subject: [PATCH libinput] touchpad: make the hysteresis dependent on physical
|
|
distance
|
|
|
|
Some touchpads, e.g. the Cyapa in the Acer c720 have a small axis range
|
|
([0, 870], [0, 470]), so the diagonal/magic value yields a hysteresis margin
|
|
of 1 device unit. On that device, that's one-tenth of a millimeter, causing
|
|
pointer motion just by holding the finger.
|
|
|
|
For touchpads that provide a physical resolution, set the hysteresis axes to
|
|
0.5mm and do away with the magic factor.
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1230441
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
|
---
|
|
src/evdev-mt-touchpad.c | 16 ++++++++++++----
|
|
1 file changed, 12 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
|
|
index 34cc85d..c82d733 100644
|
|
--- a/src/evdev-mt-touchpad.c
|
|
+++ b/src/evdev-mt-touchpad.c
|
|
@@ -1492,10 +1492,18 @@ tp_init(struct tp_dispatch *tp,
|
|
EV_ABS,
|
|
ABS_MT_DISTANCE);
|
|
|
|
- tp->hysteresis_margin.x =
|
|
- diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
|
|
- tp->hysteresis_margin.y =
|
|
- diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
|
|
+ if (device->abs.fake_resolution) {
|
|
+ tp->hysteresis_margin.x =
|
|
+ diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
|
|
+ tp->hysteresis_margin.y =
|
|
+ diagonal / DEFAULT_HYSTERESIS_MARGIN_DENOMINATOR;
|
|
+ } else {
|
|
+ int res_x = tp->device->abs.absinfo_x->resolution,
|
|
+ res_y = tp->device->abs.absinfo_y->resolution;
|
|
+
|
|
+ tp->hysteresis_margin.x = res_x/2;
|
|
+ tp->hysteresis_margin.y = res_y/2;
|
|
+ }
|
|
|
|
if (tp_init_accel(tp, diagonal) != 0)
|
|
return -1;
|
|
--
|
|
2.4.3
|
|
|