[PATCH xf86-input-synaptics] Always count tripletap + click as 3 fingerclick on pads with < 3 touches

Peter Hutterer peter.hutterer at who-t.net
Tue Apr 22 15:48:19 PDT 2014


On Fri, Apr 11, 2014 at 08:41:36PM +0200, Hans de Goede wrote:
> When trying to do a 3 fingerclick on a touchpad which only tracks 2 touches,
> this may register as a 3 or 2 fingerclick depending on the order in which
> the touchpad detects the fingers. If the 2 outer fingers of the 3 get seen
> first, then the 2 touches will be too far apart for the heuristic to see
> them as being close together, and the click gets counted as a 2 finger click.
> 
> A user will likely never do a 2 finger click with a 3th finger resting
> somewhere else on the pad, where-as the above misdetection of the clicks is
> a real issue, so simply always count a click with trippletap set as a
> 3 finger click on pads which track less then 3 touches.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1086218
> 
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>


makes sense, merged and pushed, thanks.

      f183c1c..a6f0f4c  master -> master

Cheers,
  Peter



> ---
>  src/synaptics.c | 25 +++++--------------------
>  1 file changed, 5 insertions(+), 20 deletions(-)
> 
> diff --git a/src/synaptics.c b/src/synaptics.c
> index f4c1d4a..118d1c6 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -2673,26 +2673,11 @@ clickpad_guess_clickfingers(SynapticsPrivate * priv,
>      }
>  
>      /* Some trackpads touchpad only track two touchpoints but announce
> -       BTN_TOOL_TRIPLETAP (which sets hw->numFingers to 3).
> -       This can affect clickfingers, in the following ways:
> -       * one finger down: normal click
> -       * two fingers down, close together: 2 finger click
> -       * two fingers down, apart: normal click
> -       * three fingers down, close together: 3 finger click
> -       * three fingers down, with two grouped next to each other: should be
> -       * 2-finger click but we can't detect this.
> -       * so: if two detected fingers are close together and HW says three
> -       * fingers, make it three fingers.
> -       * if two detected fingers are apart and HW says three fingers, make
> -       * it a two-finger click, guessing that the third finger is somewhere
> -       * close to another finger.
> -       */
> -    if (hw->numFingers >= 3 && nfingers < hw->numFingers) {
> -        if (!nfingers) /* touchpoints too far apart */
> -            nfingers = 2;
> -        else
> -            nfingers++;
> -    }
> +     * BTN_TOOL_TRIPLETAP (which sets hw->numFingers to 3), when this happens
> +     * the user likely intents to do a 3 finger click, so handle it as such.
> +     */
> +    if (hw->numFingers >= 3 && hw->num_mt_mask < 3)
> +        nfingers = 3;
>  
>      return nfingers;
>  }
> -- 
> 1.9.0
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list