libinput/0001-touchpad-make-the-hysteresis-dependent-on-physical-d.patch
Peter Hutterer 5003f6ebc2 Use physical values for the hystersis where possible (#1230462)
- Disable right-edge palm detection when edge scrolling is active
  (fdo#90980)
2015-06-16 17:08:39 +10:00

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