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 <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Peter Hutterer 2016-06-03 11:19:23 +10:00
parent b2772abb46
commit 27078b2667
5 changed files with 8 additions and 33 deletions

View file

@ -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;
}

View file

@ -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

View file

@ -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),
};

View file

@ -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\"";

View file

@ -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
##########################################
# Logitech