From 7cf5e5a4a93476fec6cf80af203cfbbdb5ccd659 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 3 Jun 2016 11:19:23 +1000 Subject: [PATCH] touchpad: restore the hysteresis by default A large part of the bugs seen right now are related to touchpads jittering too much. Fixing them one by one is entertaining, but time consuming. Right now the number of touchpads that require a hysteresis seem to outnumber those that don't, so switch the approach around: leave the hysteresis in place but disable it for those touchpads that don't need it. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede (cherry picked from commit 27078b2667def4ecde1f47b8258d510a576c8bb1) Signed-off-by: Peter Hutterer --- src/evdev-mt-touchpad.c | 16 +++------------- src/evdev.c | 2 +- src/evdev.h | 2 +- test/litest-device-synaptics-x1-carbon-3rd.c | 1 + udev/90-libinput-model-quirks.hwdb | 20 ++------------------ 5 files changed, 8 insertions(+), 33 deletions(-) diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index c5a03592..c3f65a67 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -2071,27 +2071,17 @@ tp_init_hysteresis(struct tp_dispatch *tp) { int res_x, res_y; - if (tp->device->model_flags & EVDEV_MODEL_CYAPA) - goto want_hysteresis; - - if (tp->semi_mt && - (tp->device->model_flags & EVDEV_MODEL_SYNAPTICS_SERIAL_TOUCHPAD)) - goto want_hysteresis; - - if (tp->device->model_flags & EVDEV_MODEL_WOBBLY_TOUCHPAD) - goto want_hysteresis; - tp->hysteresis_margin.x = 0; tp->hysteresis_margin.y = 0; - return; + if (tp->device->model_flags & EVDEV_MODEL_PRECISE_TOUCHPAD) + return; -want_hysteresis: 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; + return; } diff --git a/src/evdev.c b/src/evdev.c index 32fe2f29..198244a8 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1736,7 +1736,7 @@ evdev_read_model_flags(struct evdev_device *device) { "LIBINPUT_MODEL_CYBORG_RAT", EVDEV_MODEL_CYBORG_RAT }, { "LIBINPUT_MODEL_CYAPA", EVDEV_MODEL_CYAPA }, { "LIBINPUT_MODEL_LENOVO_T450_TOUCHPAD", EVDEV_MODEL_LENOVO_T450_TOUCHPAD }, - { "LIBINPUT_MODEL_WOBBLY_TOUCHPAD", EVDEV_MODEL_WOBBLY_TOUCHPAD }, + { "LIBINPUT_MODEL_PRECISE_TOUCHPAD", EVDEV_MODEL_PRECISE_TOUCHPAD }, { NULL, EVDEV_MODEL_DEFAULT }, }; const struct model_map *m = model_map; diff --git a/src/evdev.h b/src/evdev.h index b900be62..6f39548f 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -114,7 +114,7 @@ enum evdev_device_model { EVDEV_MODEL_CYBORG_RAT = (1 << 14), EVDEV_MODEL_CYAPA = (1 << 15), EVDEV_MODEL_LENOVO_T450_TOUCHPAD= (1 << 17), - EVDEV_MODEL_WOBBLY_TOUCHPAD = (1 << 18), + EVDEV_MODEL_PRECISE_TOUCHPAD = (1 << 18), }; struct mt_slot { diff --git a/test/litest-device-synaptics-x1-carbon-3rd.c b/test/litest-device-synaptics-x1-carbon-3rd.c index 23d9c5b4..9d4034db 100644 --- a/test/litest-device-synaptics-x1-carbon-3rd.c +++ b/test/litest-device-synaptics-x1-carbon-3rd.c @@ -121,6 +121,7 @@ static const char udev_rule[] = "\n" "ATTRS{name}==\"litest SynPS/2 Synaptics TouchPad X1C3rd\"," " ENV{LIBINPUT_MODEL_LENOVO_T450_TOUCHPAD}=\"1\"\n" +" ENV{LIBINPUT_MODEL_PRECISE_TOUCHPAD}=\"1\"\n" "\n" "LABEL=\"touchpad_end\""; diff --git a/udev/90-libinput-model-quirks.hwdb b/udev/90-libinput-model-quirks.hwdb index e4ea1da6..002b0ddc 100644 --- a/udev/90-libinput-model-quirks.hwdb +++ b/udev/90-libinput-model-quirks.hwdb @@ -26,18 +26,13 @@ libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:800 libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:800 LIBINPUT_ATTR_SIZE_HINT=100x55 -libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:300 -libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:300 -libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:310 -libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:310 - LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1 - ########################################## # Apple ########################################## libinput:touchpad:input:b0003v05ACp* libinput:touchpad:input:b0005v05ACp* LIBINPUT_MODEL_APPLE_TOUCHPAD=1 + LIBINPUT_MODEL_PRECISE_TOUCHPAD=1 LIBINPUT_ATTR_SIZE_HINT=104x75 libinput:name:*Apple Inc. Apple Internal Keyboard*:dmi:* @@ -82,14 +77,6 @@ libinput:name:Atmel maXTouch Touchpad:dmi:*svn*GOOGLE*:pn*Samus* libinput:name:Cypress APA Trackpad ?cyapa?:dmi:* LIBINPUT_MODEL_CYAPA=1 -########################################## -# HP -########################################## - -# HP 14-ac157tu -libinput:name:*ETPS/2 Elantech Touchpad*:dmi:*svnHP*pvrCNB1:* - LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1 - ########################################## # LENOVO ########################################## @@ -116,10 +103,7 @@ libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPad??50*: libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPad??60*: libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPadX1Carbon3rd:* LIBINPUT_MODEL_LENOVO_T450_TOUCHPAD=1 - -# Lenovo Yoga 2013 -libinput:name:*SynPS/2 Synaptics TouchPad*:dmi:*svnLENOVO*pvrLenovoYoga213:* - LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1 + LIBINPUT_MODEL_PRECISE_TOUCHPAD=1 ########################################## # Synaptics