[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