Commit ef222132 authored by Eygene Ryabinkin's avatar Eygene Ryabinkin Committed by Peter Hutterer

PS/2 interface: sense multifinger taps on FingerHigh (#21427)

Previously multifinger taps were sensed on the Z value > 0: this isn't
very correct.  Accorging to the specification, Z values below 30
correspond only to a very light taps or just floating fingers.  I had
run into the situation when I was clicking on the physical left button
and that click was transformed to the right button click via
ClickFinger2, but I wasn't tapping the touchpad at all.  Investigations
showed very small values of Z -- my other fingers were just floating
above touchpad.

This change also makes click (and finger) detection more consistent,
because it uses FingerHigh to detect taps everywhere.

X.Org Bug 21427 <http://bugs.freedesktop.org/show_bug.cgi?id=21427>
Signed-off-by: default avatarEygene Ryabinkin <rea-fbsd@codelabs.ru>
Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
Acked-by: Henrik Rydberg's avatarHenrik Rydberg <rydberg@euromail.se>
parent 4f58454f
......@@ -606,6 +606,8 @@ PS2ReadHwState(LocalDevicePtr local, struct SynapticsHwInfo *synhw,
int newabs = SYN_MODEL_NEWABS(*synhw);
unsigned char *buf = comm->protoBuf;
struct SynapticsHwState *hw = &(comm->hwState);
SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
SynapticsParameters *para = &priv->synpara;
int w, i;
if (!ps2_synaptics_get_packet(local, synhw, proto_ops, comm))
......@@ -704,7 +706,7 @@ PS2ReadHwState(LocalDevicePtr local, struct SynapticsHwInfo *synhw,
hw->y = YMAX_NOMINAL + YMIN_NOMINAL - hw->y;
if (hw->z > 0) {
if (hw->z >= para->finger_high) {
int w_ok = 0;
/*
* Use capability bits to decide if the w value is valid.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment