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 invert the approach: leave the hysteresis enabled by default but disable it for those touchpads that don't need it.
Signed-off-by: Peter Hutterer <[email protected]> --- 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 a7b7a68..724de7f 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -2076,27 +2076,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 cfb4a91..0227f51 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1806,7 +1806,7 @@ evdev_read_model_flags(struct evdev_device *device) MODEL(CYBORG_RAT), MODEL(CYAPA), MODEL(LENOVO_T450_TOUCHPAD), - MODEL(WOBBLY_TOUCHPAD), + MODEL(PRECISE_TOUCHPAD), MODEL(TRACKBALL), { NULL, EVDEV_MODEL_DEFAULT }, #undef MODEL diff --git a/src/evdev.h b/src/evdev.h index 4fe2cb9..54d7ce7 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), EVDEV_MODEL_TRACKBALL = (1 << 19), }; diff --git a/test/litest-device-synaptics-x1-carbon-3rd.c b/test/litest-device-synaptics-x1-carbon-3rd.c index 23d9c5b..9d4034d 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 a50fa3d..821bc16 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:* @@ -83,14 +78,6 @@ 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 ########################################## # Logitech -- 2.7.4 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
