[PATCH libinput 1/2] touchpad: reduce the initial timeout for tapping after touch

Hans de Goede hdegoede at redhat.com
Mon Dec 12 08:48:00 UTC 2016


Hi,

On 12-12-16 06:53, Peter Hutterer wrote:
> This is the timeout before we decide "this is just a finger down, not a tap".
> Until this timeout is hit a finger's movement is filtered. To allow for a more
> responsive touchpad, we want that timeout as short as possible.
>
> Event analysis from several users showed that 95% of the touches are less than
> 100ms long. Reducing the threshold should have almost no impact on most
> tapping users but improves the reaction time of the pointer for normal
> movements.
>
> For a more details see:
> http://who-t.blogspot.com/2016/12/libinput-touchpad-tap-analysis.html
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Series looks good to me:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

Regards,

Hans



> ---
>  src/evdev-mt-touchpad-tap.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c
> index cb4abf2..b65bac4 100644
> --- a/src/evdev-mt-touchpad-tap.c
> +++ b/src/evdev-mt-touchpad-tap.c
> @@ -33,6 +33,7 @@
>
>  #include "evdev-mt-touchpad.h"
>
> +#define DEFAULT_TAP_INITIAL_TIMEOUT_PERIOD ms2us(100)
>  #define DEFAULT_TAP_TIMEOUT_PERIOD ms2us(180)
>  #define DEFAULT_DRAG_TIMEOUT_PERIOD ms2us(300)
>  #define DEFAULT_TAP_MOVE_THRESHOLD TP_MM_TO_DPI_NORMALIZED(3)
> @@ -127,6 +128,13 @@ tp_tap_notify(struct tp_dispatch *tp,
>  }
>
>  static void
> +tp_tap_set_initial_timer(struct tp_dispatch *tp, uint64_t time)
> +{
> +	libinput_timer_set(&tp->tap.timer,
> +			   time + DEFAULT_TAP_INITIAL_TIMEOUT_PERIOD);
> +}
> +
> +static void
>  tp_tap_set_timer(struct tp_dispatch *tp, uint64_t time)
>  {
>  	libinput_timer_set(&tp->tap.timer, time + DEFAULT_TAP_TIMEOUT_PERIOD);
> @@ -155,7 +163,7 @@ tp_tap_idle_handle_event(struct tp_dispatch *tp,
>  	case TAP_EVENT_TOUCH:
>  		tp->tap.state = TAP_STATE_TOUCH;
>  		tp->tap.first_press_time = time;
> -		tp_tap_set_timer(tp, time);
> +		tp_tap_set_initial_timer(tp, time);
>  		break;
>  	case TAP_EVENT_RELEASE:
>  		break;
>


More information about the wayland-devel mailing list