From 8a180b52d63087646236e69b12446cab5962285a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Thu, 27 May 2021 19:20:03 +0200 Subject: [PATCH] gestures: add hold gesture implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hold gestures are notifications about fingers on the touchpad. There is no coordinate attached to a hold gesture, merely the number of fingers. A hold gesture starts when the user places a finger on the touchpad and ends when all fingers are lifted. It is cancelled when the finger(s) move past applicable thresholds and trigger some other interaction like pointer movement or scrolling. Signed-off-by: José Expósito --- src/evdev-mt-touchpad-gestures.c | 156 ++++++++++++++++++++++++++++++- src/evdev-mt-touchpad-tap.c | 3 + src/evdev-mt-touchpad.c | 1 + src/evdev-mt-touchpad.h | 5 + test/test-switch.c | 13 +++ test/test-tablet.c | 19 +++- test/test-touchpad-tap.c | 97 ++++++++++++++++--- test/test-touchpad.c | 94 +++++++++++++++---- test/test-trackpoint.c | 10 ++ 9 files changed, 365 insertions(+), 33 deletions(-) diff --git a/src/evdev-mt-touchpad-gestures.c b/src/evdev-mt-touchpad-gestures.c index b4fc7edb..0d5fcedd 100644 --- a/src/evdev-mt-touchpad-gestures.c +++ b/src/evdev-mt-touchpad-gestures.c @@ -28,6 +28,7 @@ #include "evdev-mt-touchpad.h" +#define DEFAULT_GESTURE_HOLD_TIMEOUT ms2us(180) #define DEFAULT_GESTURE_SWITCH_TIMEOUT ms2us(100) #define DEFAULT_GESTURE_SWIPE_TIMEOUT ms2us(150) #define DEFAULT_GESTURE_PINCH_TIMEOUT ms2us(300) @@ -37,6 +38,7 @@ enum gesture_event { GESTURE_EVENT_RESET, GESTURE_EVENT_FINGER_DETECTED, + GESTURE_EVENT_HOLD_TIMEOUT, GESTURE_EVENT_POINTER_MOTION, GESTURE_EVENT_SCROLL, GESTURE_EVENT_SWIPE, @@ -49,6 +51,7 @@ gesture_state_to_str(enum tp_gesture_state state) switch (state) { CASE_RETURN_STRING(GESTURE_STATE_NONE); CASE_RETURN_STRING(GESTURE_STATE_UNKNOWN); + CASE_RETURN_STRING(GESTURE_STATE_HOLD); CASE_RETURN_STRING(GESTURE_STATE_POINTER_MOTION); CASE_RETURN_STRING(GESTURE_STATE_SCROLL); CASE_RETURN_STRING(GESTURE_STATE_PINCH); @@ -63,6 +66,7 @@ gesture_event_to_str(enum gesture_event event) switch(event) { CASE_RETURN_STRING(GESTURE_EVENT_RESET); CASE_RETURN_STRING(GESTURE_EVENT_FINGER_DETECTED); + CASE_RETURN_STRING(GESTURE_EVENT_HOLD_TIMEOUT); CASE_RETURN_STRING(GESTURE_EVENT_POINTER_MOTION); CASE_RETURN_STRING(GESTURE_EVENT_SCROLL); CASE_RETURN_STRING(GESTURE_EVENT_SWIPE); @@ -144,6 +148,10 @@ tp_gesture_start(struct tp_dispatch *tp, uint64_t time) "%s in unknown gesture mode\n", __func__); break; + case GESTURE_STATE_HOLD: + gesture_notify_hold(&tp->device->base, time, + tp->gesture.finger_count); + break; case GESTURE_STATE_SCROLL: tp_gesture_init_scroll(tp); break; @@ -468,22 +476,70 @@ log_gesture_bug(struct tp_dispatch *tp, enum gesture_event event) gesture_state_to_str(tp->gesture.state)); } +static bool +tp_gesture_use_hold_timer(struct tp_dispatch *tp) +{ + /* When tap is not enabled, always use the timer */ + if (!tp->tap.enabled) + return true; + + /* If the number of fingers on the touchpad exceeds the number of + * allowed fingers to tap, use the timer. + */ + if (tp->gesture.finger_count > 3) + return true; + + /* If the tap state machine is already in a hold status, for example + * when holding with 3 fingers and then holding with 2, use the timer. + */ + if (tp->tap.state == TAP_STATE_HOLD || + tp->tap.state == TAP_STATE_TOUCH_2_HOLD || + tp->tap.state == TAP_STATE_TOUCH_3_HOLD) + return true; + + /* If the tap state machine is in dead status, use the timer. This + * happens when the user holds after cancelling a gesture/scroll. + */ + if (tp->tap.state == TAP_STATE_DEAD) + return true; + + /* Otherwise, sync the hold notification with the tap state machine */ + return false; +} + +static void +tp_gesture_set_hold_timer(struct tp_dispatch *tp, uint64_t time) +{ + if (!tp->gesture.hold_enabled) + return; + + if (tp_gesture_use_hold_timer(tp)) { + libinput_timer_set(&tp->gesture.hold_timer, + time + DEFAULT_GESTURE_HOLD_TIMEOUT); + } +} + static void tp_gesture_none_handle_event(struct tp_dispatch *tp, enum gesture_event event, uint64_t time) { switch(event) { + case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); + break; case GESTURE_EVENT_FINGER_DETECTED: + tp_gesture_set_hold_timer(tp, time); tp->gesture.state = GESTURE_STATE_UNKNOWN; break; + case GESTURE_EVENT_HOLD_TIMEOUT: + break; case GESTURE_EVENT_POINTER_MOTION: tp->gesture.state = GESTURE_STATE_POINTER_MOTION; break; case GESTURE_EVENT_SCROLL: tp->gesture.state = GESTURE_STATE_SCROLL; break; - case GESTURE_EVENT_RESET: case GESTURE_EVENT_SWIPE: case GESTURE_EVENT_PINCH: log_gesture_bug(tp, event); @@ -498,22 +554,66 @@ tp_gesture_unknown_handle_event(struct tp_dispatch *tp, { switch(event) { case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_NONE; break; + case GESTURE_EVENT_HOLD_TIMEOUT: + tp->gesture.state = GESTURE_STATE_HOLD; + tp_gesture_start(tp, time); + break; case GESTURE_EVENT_POINTER_MOTION: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_POINTER_MOTION; break; case GESTURE_EVENT_SCROLL: + libinput_timer_cancel(&tp->gesture.hold_timer); tp_gesture_set_scroll_buildup(tp); tp->gesture.state = GESTURE_STATE_SCROLL; break; case GESTURE_EVENT_SWIPE: + libinput_timer_cancel(&tp->gesture.hold_timer); + tp->gesture.state = GESTURE_STATE_SWIPE; + break; + case GESTURE_EVENT_PINCH: + libinput_timer_cancel(&tp->gesture.hold_timer); + tp_gesture_init_pinch(tp); + tp->gesture.state = GESTURE_STATE_PINCH; + break; + case GESTURE_EVENT_FINGER_DETECTED: + log_gesture_bug(tp, event); + break; + } +} + +static void +tp_gesture_hold_handle_event(struct tp_dispatch *tp, + enum gesture_event event, + uint64_t time) +{ + switch(event) { + case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); + tp->gesture.state = GESTURE_STATE_NONE; + break; + case GESTURE_EVENT_POINTER_MOTION: + tp_gesture_cancel(tp, time); + tp->gesture.state = GESTURE_STATE_POINTER_MOTION; + break; + case GESTURE_EVENT_SCROLL: + tp_gesture_set_scroll_buildup(tp); + tp_gesture_cancel(tp, time); + tp->gesture.state = GESTURE_STATE_SCROLL; + break; + case GESTURE_EVENT_SWIPE: + tp_gesture_cancel(tp, time); tp->gesture.state = GESTURE_STATE_SWIPE; break; case GESTURE_EVENT_PINCH: tp_gesture_init_pinch(tp); + tp_gesture_cancel(tp, time); tp->gesture.state = GESTURE_STATE_PINCH; break; + case GESTURE_EVENT_HOLD_TIMEOUT: case GESTURE_EVENT_FINGER_DETECTED: log_gesture_bug(tp, event); break; @@ -527,9 +627,11 @@ tp_gesture_pointer_motion_handle_event(struct tp_dispatch *tp, { switch(event) { case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_NONE; break; case GESTURE_EVENT_FINGER_DETECTED: + case GESTURE_EVENT_HOLD_TIMEOUT: case GESTURE_EVENT_POINTER_MOTION: case GESTURE_EVENT_SCROLL: case GESTURE_EVENT_SWIPE: @@ -546,9 +648,11 @@ tp_gesture_scroll_handle_event(struct tp_dispatch *tp, { switch(event) { case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_NONE; break; case GESTURE_EVENT_FINGER_DETECTED: + case GESTURE_EVENT_HOLD_TIMEOUT: case GESTURE_EVENT_POINTER_MOTION: case GESTURE_EVENT_SCROLL: case GESTURE_EVENT_SWIPE: @@ -565,9 +669,11 @@ tp_gesture_pinch_handle_event(struct tp_dispatch *tp, { switch(event) { case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_NONE; break; case GESTURE_EVENT_FINGER_DETECTED: + case GESTURE_EVENT_HOLD_TIMEOUT: case GESTURE_EVENT_POINTER_MOTION: case GESTURE_EVENT_SCROLL: case GESTURE_EVENT_SWIPE: @@ -584,9 +690,11 @@ tp_gesture_swipe_handle_event(struct tp_dispatch *tp, { switch(event) { case GESTURE_EVENT_RESET: + libinput_timer_cancel(&tp->gesture.hold_timer); tp->gesture.state = GESTURE_STATE_NONE; break; case GESTURE_EVENT_FINGER_DETECTED: + case GESTURE_EVENT_HOLD_TIMEOUT: case GESTURE_EVENT_POINTER_MOTION: case GESTURE_EVENT_SCROLL: case GESTURE_EVENT_SWIPE: @@ -612,6 +720,9 @@ tp_gesture_handle_event(struct tp_dispatch *tp, case GESTURE_STATE_UNKNOWN: tp_gesture_unknown_handle_event(tp, event, time); break; + case GESTURE_STATE_HOLD: + tp_gesture_hold_handle_event(tp, event, time); + break; case GESTURE_STATE_POINTER_MOTION: tp_gesture_pointer_motion_handle_event(tp, event, time); break; @@ -635,6 +746,22 @@ tp_gesture_handle_event(struct tp_dispatch *tp, } } +static void +tp_gesture_hold_timeout(uint64_t now, void *data) +{ + struct tp_dispatch *tp = data; + tp_gesture_handle_event(tp, GESTURE_EVENT_HOLD_TIMEOUT, now); +} + +void +tp_gesture_tap_timeout(struct tp_dispatch *tp, uint64_t time) +{ + if (!tp->gesture.hold_enabled) + return; + + tp_gesture_handle_event(tp, GESTURE_EVENT_HOLD_TIMEOUT, time); +} + static void tp_gesture_detect_motion_gestures(struct tp_dispatch *tp, uint64_t time) { @@ -886,6 +1013,16 @@ tp_gesture_handle_state_unknown(struct tp_dispatch *tp, uint64_t time, tp_gesture_detect_motion_gestures(tp, time); } +static void +tp_gesture_handle_state_hold(struct tp_dispatch *tp, uint64_t time, + bool ignore_motion) +{ + tp_gesture_start(tp, time); + + if (!ignore_motion) + tp_gesture_detect_motion_gestures(tp, time); +} + static void tp_gesture_handle_state_pointer_motion(struct tp_dispatch *tp, uint64_t time) { @@ -994,6 +1131,9 @@ tp_gesture_post_gesture(struct tp_dispatch *tp, uint64_t time, if (tp->gesture.state == GESTURE_STATE_UNKNOWN) tp_gesture_handle_state_unknown(tp, time, ignore_motion); + if (tp->gesture.state == GESTURE_STATE_HOLD) + tp_gesture_handle_state_hold(tp, time, ignore_motion); + if (tp->gesture.state == GESTURE_STATE_POINTER_MOTION) tp_gesture_handle_state_pointer_motion(tp, time); @@ -1090,6 +1230,10 @@ tp_gesture_end(struct tp_dispatch *tp, uint64_t time, bool cancelled) "%s in unknown gesture mode\n", __func__); break; + case GESTURE_STATE_HOLD: + gesture_notify_hold_end(&tp->device->base, time, + tp->gesture.finger_count, cancelled); + break; case GESTURE_STATE_SCROLL: tp_gesture_stop_twofinger_scroll(tp, time); break; @@ -1247,10 +1391,20 @@ tp_init_gesture(struct tp_dispatch *tp) tp_libinput_context(tp), timer_name, tp_gesture_finger_count_switch_timeout, tp); + + snprintf(timer_name, + sizeof(timer_name), + "%s hold", + evdev_device_get_sysname(tp->device)); + libinput_timer_init(&tp->gesture.hold_timer, + tp_libinput_context(tp), + timer_name, + tp_gesture_hold_timeout, tp); } void tp_remove_gesture(struct tp_dispatch *tp) { libinput_timer_cancel(&tp->gesture.finger_count_switch_timer); + libinput_timer_cancel(&tp->gesture.hold_timer); } diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c index fb8ca219..cbd51036 100644 --- a/src/evdev-mt-touchpad-tap.c +++ b/src/evdev-mt-touchpad-tap.c @@ -253,6 +253,7 @@ tp_tap_touch_handle_event(struct tp_dispatch *tp, case TAP_EVENT_TIMEOUT: tp->tap.state = TAP_STATE_HOLD; tp_tap_clear_timer(tp); + tp_gesture_tap_timeout(tp, time); break; case TAP_EVENT_BUTTON: tp->tap.state = TAP_STATE_DEAD; @@ -380,6 +381,7 @@ tp_tap_touch2_handle_event(struct tp_dispatch *tp, break; case TAP_EVENT_TIMEOUT: tp->tap.state = TAP_STATE_TOUCH_2_HOLD; + tp_gesture_tap_timeout(tp, time); break; case TAP_EVENT_BUTTON: tp->tap.state = TAP_STATE_DEAD; @@ -513,6 +515,7 @@ tp_tap_touch3_handle_event(struct tp_dispatch *tp, case TAP_EVENT_TIMEOUT: tp->tap.state = TAP_STATE_TOUCH_3_HOLD; tp_tap_clear_timer(tp); + tp_gesture_tap_timeout(tp, time); break; case TAP_EVENT_RELEASE: tp->tap.state = TAP_STATE_TOUCH_3_RELEASE; diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index 40e4b71f..dbb8fd95 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -2019,6 +2019,7 @@ tp_interface_destroy(struct evdev_dispatch *dispatch) libinput_timer_destroy(&tp->dwt.keyboard_timer); libinput_timer_destroy(&tp->tap.timer); libinput_timer_destroy(&tp->gesture.finger_count_switch_timer); + libinput_timer_destroy(&tp->gesture.hold_timer); free(tp->touches); free(tp); } diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h index 2e849706..8286085f 100644 --- a/src/evdev-mt-touchpad.h +++ b/src/evdev-mt-touchpad.h @@ -157,6 +157,7 @@ enum tp_edge_scroll_touch_state { enum tp_gesture_state { GESTURE_STATE_NONE, GESTURE_STATE_UNKNOWN, + GESTURE_STATE_HOLD, GESTURE_STATE_POINTER_MOTION, GESTURE_STATE_SCROLL, GESTURE_STATE_PINCH, @@ -359,6 +360,7 @@ struct tp_dispatch { double prev_scale; double angle; struct device_float_coords center; + struct libinput_timer hold_timer; bool hold_enabled; } gesture; @@ -711,6 +713,9 @@ tp_gesture_post_events(struct tp_dispatch *tp, uint64_t time, void tp_gesture_stop_twofinger_scroll(struct tp_dispatch *tp, uint64_t time); +void +tp_gesture_tap_timeout(struct tp_dispatch *tp, uint64_t time); + bool tp_palm_tap_is_palm(const struct tp_dispatch *tp, const struct tp_touch *t); diff --git a/test/test-switch.c b/test/test-switch.c index 54e01e00..8d6f56b3 100644 --- a/test/test-switch.c +++ b/test/test-switch.c @@ -286,6 +286,7 @@ START_TEST(switch_disable_touchpad) touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_grab_device(sw); @@ -325,6 +326,7 @@ START_TEST(switch_disable_touchpad_during_touch) touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_touch_down(touchpad, 0, 50, 50); @@ -438,6 +440,7 @@ START_TEST(switch_disable_touchpad_already_open) touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); /* default: switch is off - motion events */ @@ -471,6 +474,7 @@ START_TEST(switch_dont_resume_disabled_touchpad) touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); libinput_device_config_send_events_set_mode(touchpad->libinput_device, LIBINPUT_CONFIG_SEND_EVENTS_DISABLED); litest_drain_events(li); @@ -512,6 +516,7 @@ START_TEST(switch_dont_resume_disabled_touchpad_external_mouse) touchpad = switch_init_paired_touchpad(li); mouse = litest_add_device(li, LITEST_MOUSE); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); libinput_device_config_send_events_set_mode(touchpad->libinput_device, LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE); litest_drain_events(li); @@ -602,6 +607,8 @@ START_TEST(lid_open_on_key_touchpad_enabled) keyboard = litest_add_device(li, LITEST_KEYBOARD); touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C); + litest_disable_hold_gestures(touchpad->libinput_device); + litest_grab_device(sw); litest_switch_action(sw, LIBINPUT_SWITCH_LID, @@ -928,6 +935,7 @@ START_TEST(tablet_mode_disable_touchpad_on_init) /* touchpad comes with switch already on - no events */ touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_touch_down(touchpad, 0, 50, 50); @@ -963,6 +971,7 @@ START_TEST(tablet_mode_disable_touchpad_on_resume) touchpad = switch_init_paired_touchpad(li); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); libinput_suspend(li); @@ -1050,6 +1059,10 @@ START_TEST(tablet_mode_enable_touchpad_on_resume) litest_touch_down(touchpad, 0, 50, 50); litest_touch_move_to(touchpad, 0, 50, 50, 70, 50, 10); litest_touch_up(touchpad, 0); + litest_drain_events_of_type(li, + LIBINPUT_EVENT_GESTURE_HOLD_BEGIN, + LIBINPUT_EVENT_GESTURE_HOLD_END, + -1); litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION); litest_switch_action(sw, diff --git a/test/test-tablet.c b/test/test-tablet.c index b4efb699..d2b461a3 100644 --- a/test/test-tablet.c +++ b/test/test-tablet.c @@ -4810,6 +4810,9 @@ START_TEST(touch_arbitration) is_touchpad = !libevdev_has_property(finger->evdev, INPUT_PROP_DIRECT); + if (is_touchpad) + litest_disable_hold_gestures(finger->libinput_device); + litest_tablet_proximity_in(dev, 10, 10, axes); litest_tablet_motion(dev, 10, 10, axes); litest_tablet_motion(dev, 20, 40, axes); @@ -4999,6 +5002,9 @@ START_TEST(touch_arbitration_stop_touch) is_touchpad = !libevdev_has_property(finger->evdev, INPUT_PROP_DIRECT); + if (is_touchpad) + litest_disable_hold_gestures(finger->libinput_device); + /* disable prox-out timer quirk */ litest_tablet_proximity_in(dev, 30, 30, axes); litest_tablet_proximity_out(dev); @@ -5084,6 +5090,9 @@ START_TEST(touch_arbitration_suspend_touch_device) is_touchpad = !libevdev_has_property(dev->evdev, INPUT_PROP_DIRECT); + if (is_touchpad) + litest_disable_hold_gestures(dev->libinput_device); + /* we can't force a device suspend, but we can at least make sure the device doesn't send events */ status = libinput_device_config_send_events_set_mode( @@ -5197,6 +5206,9 @@ START_TEST(touch_arbitration_remove_tablet) is_touchpad = !libevdev_has_property(dev->evdev, INPUT_PROP_DIRECT); + if (is_touchpad) + litest_disable_hold_gestures(dev->libinput_device); + libinput_dispatch(li); litest_tablet_proximity_in(tablet, 10, 10, axes); litest_tablet_motion(tablet, 10, 10, axes); @@ -5290,8 +5302,11 @@ START_TEST(touch_arbitration_late_touch_lift) finger = litest_add_device(li, other); is_touchpad = !libevdev_has_property(finger->evdev, INPUT_PROP_DIRECT); - if (is_touchpad) + if (is_touchpad) { litest_enable_tap(finger->libinput_device); + litest_disable_hold_gestures(finger->libinput_device); + } + litest_tablet_proximity_in(tablet, 10, 10, axes); litest_tablet_motion(tablet, 10, 10, axes); litest_tablet_motion(tablet, 20, 40, axes); @@ -5739,6 +5754,7 @@ START_TEST(tablet_rotation_left_handed_add_touchpad) libinput_device_config_left_handed_set(finger->libinput_device, touch_from); + litest_disable_hold_gestures(finger->libinput_device); verify_left_handed_touch_sequence(finger, li, enabled_from); verify_left_handed_tablet_sequence(tablet, li, enabled_from); @@ -5786,6 +5802,7 @@ START_TEST(tablet_rotation_left_handed_add_tablet) /* change left-handed before tablet appears */ libinput_device_config_left_handed_set(finger->libinput_device, touch_from); + litest_disable_hold_gestures(finger->libinput_device); tablet = litest_add_device(li, other); litest_drain_events(li); diff --git a/test/test-touchpad-tap.c b/test/test-touchpad-tap.c index 8f76983d..64be3b36 100644 --- a/test/test-touchpad-tap.c +++ b/test/test-touchpad-tap.c @@ -38,7 +38,7 @@ START_TEST(touchpad_1fg_tap) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -74,6 +74,7 @@ START_TEST(touchpad_doubletap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -213,6 +214,7 @@ START_TEST(touchpad_multitap) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -302,6 +304,7 @@ START_TEST(touchpad_multitap_n_drag_move) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -413,6 +416,7 @@ START_TEST(touchpad_multitap_n_drag_2fg) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -526,6 +530,7 @@ START_TEST(touchpad_multitap_n_drag_click) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -626,6 +631,7 @@ START_TEST(touchpad_multitap_timeout) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -715,6 +721,7 @@ START_TEST(touchpad_multitap_n_drag_timeout) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -825,6 +832,7 @@ START_TEST(touchpad_multitap_n_drag_high_delay) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -920,6 +928,7 @@ START_TEST(touchpad_multitap_n_drag_tap) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1034,6 +1043,7 @@ START_TEST(touchpad_multitap_n_drag_tap_click) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1155,6 +1165,7 @@ START_TEST(touchpad_tap_n_drag) litest_enable_tap(dev->libinput_device); litest_disable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1236,6 +1247,7 @@ START_TEST(touchpad_tap_n_drag_draglock) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1320,6 +1332,7 @@ START_TEST(touchpad_tap_n_drag_draglock_tap) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1422,6 +1435,7 @@ START_TEST(touchpad_tap_n_drag_draglock_tap_click) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1506,6 +1520,7 @@ START_TEST(touchpad_tap_n_drag_draglock_timeout) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1584,6 +1599,7 @@ START_TEST(touchpad_tap_n_drag_2fg) litest_enable_tap(dev->libinput_device); litest_disable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1662,6 +1678,7 @@ START_TEST(touchpad_tap_n_drag_2fg_scroll) litest_enable_2fg_scroll(dev); litest_enable_tap(dev->libinput_device); litest_disable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1741,6 +1758,7 @@ START_TEST(touchpad_tap_n_drag_draglock_2fg_scroll) litest_enable_2fg_scroll(dev); litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1824,6 +1842,7 @@ START_TEST(touchpad_tap_n_drag_3fg_btntool) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -1921,6 +1940,7 @@ START_TEST(touchpad_tap_n_drag_3fg) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -2006,6 +2026,7 @@ START_TEST(touchpad_tap_n_drag_3fg_swipe) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -2097,6 +2118,7 @@ START_TEST(touchpad_tap_n_drag_draglock_3fg_swipe) litest_enable_tap(dev->libinput_device); litest_enable_drag_lock(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -2192,6 +2214,7 @@ START_TEST(touchpad_2fg_tap) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -2246,6 +2269,7 @@ START_TEST(touchpad_2fg_tap_inverted) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -2294,6 +2318,7 @@ START_TEST(touchpad_2fg_tap_move_on_release) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); litest_touch_down(dev, 0, 50, 50); @@ -2325,7 +2350,7 @@ START_TEST(touchpad_2fg_tap_n_hold_first) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); litest_touch_down(dev, 0, 50, 50); @@ -2347,7 +2372,7 @@ START_TEST(touchpad_2fg_tap_n_hold_second) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); litest_touch_down(dev, 0, 50, 50); @@ -2369,7 +2394,7 @@ START_TEST(touchpad_2fg_tap_quickrelease) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); litest_touch_down(dev, 0, 50, 50); @@ -2400,7 +2425,7 @@ START_TEST(touchpad_1fg_tap_click) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* Finger down, finger up -> tap button press @@ -2432,7 +2457,7 @@ START_TEST(touchpad_2fg_tap_click) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* two fingers down, left button click, fingers up @@ -2467,7 +2492,7 @@ START_TEST(clickpad_2fg_tap_click) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* two fingers down, button click, fingers up @@ -2498,7 +2523,7 @@ START_TEST(touchpad_2fg_tap_click_apple) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* two fingers down, button click, fingers up @@ -2530,6 +2555,7 @@ START_TEST(touchpad_no_2fg_tap_after_move) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* one finger down, move past threshold, @@ -2553,6 +2579,7 @@ START_TEST(touchpad_no_2fg_tap_after_timeout) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* one finger down, wait past tap timeout, @@ -2579,7 +2606,7 @@ START_TEST(touchpad_no_first_fg_tap_after_move) struct libinput_event *event; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* one finger down, second finger down, @@ -2615,6 +2642,7 @@ START_TEST(touchpad_double_tap_click) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -2690,6 +2718,7 @@ START_TEST(touchpad_tap_n_drag_click) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -2773,6 +2802,7 @@ START_TEST(touchpad_3fg_tap) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -2836,6 +2866,7 @@ START_TEST(touchpad_3fg_tap_tap_again) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); uint64_t ptime, rtime; struct libinput_event *ev; @@ -2889,7 +2920,7 @@ START_TEST(touchpad_3fg_tap_quickrelease) return; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -2936,7 +2967,7 @@ START_TEST(touchpad_3fg_tap_pressure_btntool) litest_enable_tap(dev->libinput_device); litest_enable_edge_scroll(dev); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -3001,7 +3032,7 @@ START_TEST(touchpad_3fg_tap_hover_btntool) litest_enable_tap(dev->libinput_device); litest_enable_edge_scroll(dev); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -3044,6 +3075,7 @@ START_TEST(touchpad_3fg_tap_btntool) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -3094,6 +3126,7 @@ START_TEST(touchpad_3fg_tap_btntool_inverted) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -3144,6 +3177,7 @@ START_TEST(touchpad_3fg_tap_btntool_pointerjump) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, map); + litest_disable_hold_gestures(dev->libinput_device); switch (map) { case LIBINPUT_CONFIG_TAP_MAP_LRM: @@ -3195,6 +3229,7 @@ START_TEST(touchpad_3fg_tap_slot_release_btntool) */ litest_drain_events(li); litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); /* touch 1 down */ litest_event(dev, EV_ABS, ABS_MT_SLOT, 0); @@ -3286,6 +3321,7 @@ START_TEST(touchpad_3fg_tap_after_scroll) litest_enable_2fg_scroll(dev); litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_touch_down(dev, 0, 40, 20); litest_touch_down(dev, 1, 50, 20); @@ -3321,6 +3357,7 @@ START_TEST(touchpad_4fg_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); for (i = 0; i < 4; i++) { litest_drain_events(li); @@ -3352,7 +3389,7 @@ START_TEST(touchpad_4fg_tap_quickrelease) return; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -3389,6 +3426,7 @@ START_TEST(touchpad_move_after_touch) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* respective number of fingers down */ @@ -3459,6 +3497,7 @@ START_TEST(touchpad_5fg_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); for (i = 0; i < 5; i++) { litest_drain_events(li); @@ -3492,7 +3531,7 @@ START_TEST(touchpad_5fg_tap_quickrelease) return; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 20, 50); @@ -3528,7 +3567,7 @@ START_TEST(clickpad_1fg_tap_click) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); /* finger down, button click, finger up @@ -3724,6 +3763,7 @@ START_TEST(touchpad_tap_map_delayed) litest_enable_tap(dev->libinput_device); litest_set_tap_map(dev->libinput_device, LIBINPUT_CONFIG_TAP_MAP_LRM); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(dev->libinput); litest_touch_down(dev, 0, 50, 50); @@ -3811,6 +3851,8 @@ START_TEST(touchpad_drag_config_enabledisable) struct litest_device *dev = litest_current_device(); enum libinput_config_drag_state state; + litest_disable_hold_gestures(dev->libinput_device); + litest_enable_tap(dev->libinput_device); litest_disable_tap_drag(dev->libinput_device); @@ -3846,6 +3888,7 @@ START_TEST(touchpad_drag_disabled) litest_enable_tap(dev->libinput_device); litest_disable_tap_drag(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -3920,6 +3963,7 @@ START_TEST(touchpad_drag_disabled_immediate) litest_enable_tap(dev->libinput_device); litest_disable_tap_drag(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -3999,6 +4043,7 @@ START_TEST(touchpad_drag_disabled_multitap_no_drag) litest_enable_tap(dev->libinput_device); litest_disable_tap_drag(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4156,6 +4201,7 @@ START_TEST(touchpad_tap_palm_on_idle) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Finger down is immediately palm */ @@ -4182,6 +4228,7 @@ START_TEST(touchpad_tap_palm_on_touch) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Finger down is palm after touch begin */ @@ -4209,6 +4256,7 @@ START_TEST(touchpad_tap_palm_on_touch_hold_timeout) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Finger down is palm after tap timeout */ @@ -4239,6 +4287,7 @@ START_TEST(touchpad_tap_palm_on_touch_hold_move) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Finger down is palm after tap move threshold */ @@ -4274,6 +4323,7 @@ START_TEST(touchpad_tap_palm_on_tapped) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4355,6 +4405,7 @@ START_TEST(touchpad_tap_palm_on_tapped_palm_down) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4441,6 +4492,7 @@ START_TEST(touchpad_tap_palm_on_tapped_doubletap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4566,6 +4618,7 @@ START_TEST(touchpad_tap_palm_on_drag) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4650,6 +4703,7 @@ START_TEST(touchpad_tap_palm_on_drag_2fg) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -4737,6 +4791,7 @@ START_TEST(touchpad_tap_palm_on_touch_2) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* 2fg tap with one finger detected as palm */ @@ -4777,6 +4832,7 @@ START_TEST(touchpad_tap_palm_on_touch_2_retouch) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* 2fg tap with one finger detected as palm, that finger is lifted @@ -4823,6 +4879,7 @@ START_TEST(touchpad_tap_palm_on_touch_3) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* 3fg tap with one finger detected as palm, that finger is lifted, @@ -4869,6 +4926,7 @@ START_TEST(touchpad_tap_palm_on_touch_3_retouch) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* 3fg tap with one finger detected as palm, that finger is lifted, @@ -4920,6 +4978,7 @@ START_TEST(touchpad_tap_palm_on_touch_4) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* 3fg tap with one finger detected as palm, that finger is lifted, @@ -4959,6 +5018,7 @@ START_TEST(touchpad_tap_palm_after_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -5039,6 +5099,7 @@ START_TEST(touchpad_tap_palm_multitap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -5124,6 +5185,7 @@ START_TEST(touchpad_tap_palm_multitap_timeout) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -5208,6 +5270,7 @@ START_TEST(touchpad_tap_palm_multitap_down_again) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -5323,6 +5386,7 @@ START_TEST(touchpad_tap_palm_multitap_click) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); switch (nfingers) { case 1: @@ -5411,6 +5475,7 @@ START_TEST(touchpad_tap_palm_click_then_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 50, axes); @@ -5463,6 +5528,7 @@ START_TEST(touchpad_tap_palm_dwt_tap) keyboard = litest_add_device(li, LITEST_KEYBOARD); litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -5501,6 +5567,7 @@ START_TEST(touchpad_tap_palm_3fg_start) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_push_event_frame(dev); diff --git a/test/test-touchpad.c b/test/test-touchpad.c index 7afd8882..4043199b 100644 --- a/test/test-touchpad.c +++ b/test/test-touchpad.c @@ -60,7 +60,7 @@ START_TEST(touchpad_1fg_motion) struct libinput_event *event; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -145,6 +145,7 @@ START_TEST(touchpad_2fg_scroll) return; litest_enable_2fg_scroll(dev); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); test_2fg_scroll(dev, 0.1, 40, false); @@ -390,6 +391,7 @@ START_TEST(touchpad_2fg_scroll_slow_distance) y_move = 100.0/height * 7; litest_enable_2fg_scroll(dev); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 49, 50); @@ -1178,7 +1180,7 @@ START_TEST(touchpad_palm_detect_at_edge) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 99, 50); @@ -1204,7 +1206,7 @@ START_TEST(touchpad_palm_detect_at_top) return; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 20, 1); @@ -1247,6 +1249,7 @@ START_TEST(touchpad_palm_detect_at_bottom_corners) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); /* Run for non-clickpads only: make sure the bottom corners trigger palm detection too */ @@ -1276,6 +1279,7 @@ START_TEST(touchpad_palm_detect_at_top_corners) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); /* Run for non-clickpads only: make sure the bottom corners trigger palm detection too */ @@ -1307,7 +1311,7 @@ START_TEST(touchpad_palm_detect_palm_stays_palm) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 99, 20); @@ -1326,7 +1330,7 @@ START_TEST(touchpad_palm_detect_top_palm_stays_palm) return; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 20, 1); @@ -1349,7 +1353,7 @@ START_TEST(touchpad_palm_detect_palm_becomes_pointer) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 99, 50); @@ -1373,7 +1377,7 @@ START_TEST(touchpad_palm_detect_top_palm_becomes_pointer) return; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 1); @@ -1397,6 +1401,7 @@ START_TEST(touchpad_palm_detect_no_palm_moving_into_edges) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); /* moving non-palm into the edge does not label it as palm */ litest_drain_events(li); @@ -1426,6 +1431,7 @@ START_TEST(touchpad_palm_detect_no_palm_moving_into_top) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); /* moving non-palm into the edge does not label it as palm */ litest_drain_events(li); @@ -1455,7 +1461,7 @@ START_TEST(touchpad_palm_detect_no_tap_top_edge) return; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 1); @@ -1476,7 +1482,7 @@ START_TEST(touchpad_palm_detect_tap_hardbuttons) return; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 95, 5); @@ -1519,7 +1525,7 @@ START_TEST(touchpad_palm_detect_tap_softbuttons) litest_enable_tap(dev->libinput_device); litest_enable_buttonareas(dev); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 99, 99); @@ -1574,7 +1580,7 @@ START_TEST(touchpad_palm_detect_tap_clickfinger) litest_enable_tap(dev->libinput_device); litest_enable_clickfinger(dev); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 95, 5); @@ -1727,6 +1733,7 @@ START_TEST(touchpad_palm_detect_tool_palm_tap_after) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_push_event_frame(dev); @@ -1769,6 +1776,7 @@ START_TEST(touchpad_palm_detect_tool_palm_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_push_event_frame(dev); @@ -1814,6 +1822,7 @@ START_TEST(touchpad_palm_detect_pressure) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 99, axes); @@ -1838,6 +1847,7 @@ START_TEST(touchpad_palm_detect_pressure_late_tap) litest_enable_tap(dev->libinput_device); litest_enable_clickfinger(dev); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* event after touch down is palm */ @@ -1871,6 +1881,7 @@ START_TEST(touchpad_palm_detect_pressure_tap_hold) litest_enable_tap(dev->libinput_device); litest_enable_clickfinger(dev); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* event in state HOLD is thumb */ @@ -1905,6 +1916,7 @@ START_TEST(touchpad_palm_detect_pressure_tap_hold_2ndfg) litest_enable_tap(dev->libinput_device); litest_enable_clickfinger(dev); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* event in state HOLD is thumb */ @@ -1952,6 +1964,7 @@ START_TEST(touchpad_palm_detect_move_and_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* trigger thumb detection by pressure after a slight movement */ @@ -1991,6 +2004,7 @@ START_TEST(touchpad_palm_detect_pressure_late) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -2017,6 +2031,7 @@ START_TEST(touchpad_palm_detect_pressure_keep_palm) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 80, 90); @@ -2044,6 +2059,7 @@ START_TEST(touchpad_palm_detect_pressure_after_edge) litest_enable_2fg_scroll(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 99, 50); @@ -2070,6 +2086,7 @@ START_TEST(touchpad_palm_detect_pressure_after_dwt) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -2109,6 +2126,7 @@ START_TEST(touchpad_palm_clickfinger_pressure) litest_enable_clickfinger(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 95, axes); @@ -2142,6 +2160,7 @@ START_TEST(touchpad_palm_clickfinger_pressure_2fg) litest_enable_clickfinger(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 95, axes); @@ -2191,6 +2210,7 @@ START_TEST(touchpad_palm_clickfinger_size) litest_enable_clickfinger(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 95, axes); @@ -2226,6 +2246,7 @@ START_TEST(touchpad_palm_clickfinger_size_2fg) litest_enable_clickfinger(dev); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 95, axes); @@ -2415,6 +2436,7 @@ START_TEST(touchpad_left_handed_tapping) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); status = libinput_device_config_left_handed_set(d, 1); ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); @@ -2449,6 +2471,7 @@ START_TEST(touchpad_left_handed_tapping_2fg) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); status = libinput_device_config_left_handed_set(d, 1); ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS); @@ -3207,7 +3230,7 @@ START_TEST(touchpad_hover_1fg_tap) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_hover_start(dev, 0, 50, 50); @@ -3504,6 +3527,7 @@ START_TEST(touchpad_initial_state) libinput1 = dev->libinput; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_touch_down(dev, 0, x, y); litest_touch_up(dev, 0); @@ -3634,6 +3658,7 @@ START_TEST(touchpad_state_after_syn_dropped_2fg_change) litest_drain_events(li); litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_touch_down(dev, 0, 10, 10); libinput_dispatch(li); @@ -3681,6 +3706,7 @@ START_TEST(touchpad_dwt) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3716,6 +3742,7 @@ START_TEST(touchpad_dwt_ext_and_int_keyboard) return; litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); /* Yubikey is initialized first */ yubikey = litest_add_device(li, LITEST_YUBIKEY); @@ -3759,6 +3786,7 @@ START_TEST(touchpad_dwt_enable_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3797,6 +3825,7 @@ START_TEST(touchpad_dwt_touch_hold) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3834,6 +3863,7 @@ START_TEST(touchpad_dwt_key_hold) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3861,6 +3891,7 @@ START_TEST(touchpad_dwt_key_hold_timeout) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3910,6 +3941,7 @@ START_TEST(touchpad_dwt_key_hold_timeout_existing_touch_cornercase) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -3960,6 +3992,7 @@ START_TEST(touchpad_dwt_key_hold_timeout_existing_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4001,6 +4034,7 @@ START_TEST(touchpad_dwt_type) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (i = 0; i < 5; i++) { @@ -4039,6 +4073,7 @@ START_TEST(touchpad_dwt_type_short_timeout) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (i = 0; i < 5; i++) { @@ -4091,6 +4126,7 @@ START_TEST(touchpad_dwt_modifier_no_dwt) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); ARRAY_FOR_EACH(modifiers, key) { @@ -4136,6 +4172,7 @@ START_TEST(touchpad_dwt_modifier_combo_no_dwt) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); ARRAY_FOR_EACH(modifiers, key) { @@ -4185,6 +4222,7 @@ START_TEST(touchpad_dwt_modifier_combo_dwt_after) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); ARRAY_FOR_EACH(modifiers, key) { @@ -4238,6 +4276,7 @@ START_TEST(touchpad_dwt_modifier_combo_dwt_remains) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); ARRAY_FOR_EACH(modifiers, key) { @@ -4285,6 +4324,7 @@ START_TEST(touchpad_dwt_fkeys_no_dwt) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (key = KEY_F1; key < KEY_CNT; key++) { @@ -4319,6 +4359,7 @@ START_TEST(touchpad_dwt_tap) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_enable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4349,6 +4390,7 @@ START_TEST(touchpad_dwt_tap_drag) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_enable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4383,6 +4425,7 @@ START_TEST(touchpad_dwt_click) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4587,6 +4630,7 @@ START_TEST(touchpad_dwt_disabled) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4616,6 +4660,7 @@ START_TEST(touchpad_dwt_disable_during_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4658,6 +4703,7 @@ START_TEST(touchpad_dwt_disable_before_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4689,6 +4735,7 @@ START_TEST(touchpad_dwt_disable_during_key_release) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4723,6 +4770,7 @@ START_TEST(touchpad_dwt_disable_during_key_hold) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4755,6 +4803,7 @@ START_TEST(touchpad_dwt_enable_during_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4789,6 +4838,7 @@ START_TEST(touchpad_dwt_enable_before_touch) keyboard = dwt_init_paired_keyboard(li, touchpad); litest_disable_tap(touchpad->libinput_device); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); litest_keyboard_key(keyboard, KEY_A, true); @@ -4817,6 +4867,7 @@ START_TEST(touchpad_dwt_enable_during_tap) litest_enable_tap(touchpad->libinput_device); disable_dwt(touchpad); + litest_disable_hold_gestures(touchpad->libinput_device); keyboard = dwt_init_paired_keyboard(li, touchpad); litest_drain_events(li); @@ -4855,6 +4906,7 @@ START_TEST(touchpad_dwt_remove_kbd_while_active) litest_enable_tap(touchpad->libinput_device); enable_dwt(touchpad); + litest_disable_hold_gestures(touchpad->libinput_device); keyboard = dwt_init_paired_keyboard(li, touchpad); litest_drain_events(li); @@ -5115,7 +5167,7 @@ START_TEST(touchpad_thumb_lower_area_movement) return; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Thumb below lower line - slow movement - no events */ @@ -5140,7 +5192,7 @@ START_TEST(touchpad_thumb_lower_area_movement_rethumb) return; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Thumb below lower line - fast movement - events */ @@ -5163,6 +5215,7 @@ START_TEST(touchpad_thumb_speed_empty_slots) litest_disable_tap(dev->libinput_device); litest_enable_2fg_scroll(dev); + litest_disable_hold_gestures(dev->libinput_device); if (libevdev_get_num_slots(dev->evdev) < 3) return; @@ -5205,6 +5258,7 @@ START_TEST(touchpad_thumb_area_clickfinger) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); libinput_device_config_click_set_method(dev->libinput_device, LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER); @@ -5259,6 +5313,7 @@ START_TEST(touchpad_thumb_area_btnarea) return; litest_disable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); libinput_device_config_click_set_method(dev->libinput_device, LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS); @@ -5289,6 +5344,7 @@ START_TEST(touchpad_thumb_no_doublethumb) litest_disable_tap(dev->libinput_device); litest_enable_clickfinger(dev); + litest_disable_hold_gestures(dev->libinput_device); if (!has_thumb_detect(dev)) return; @@ -5630,7 +5686,7 @@ START_TEST(touchpad_time_usec) struct libinput_event *event; litest_disable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); @@ -6046,6 +6102,7 @@ START_TEST(touchpad_pressure_tap) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down_extended(dev, 0, 50, 50, axes); @@ -6069,6 +6126,7 @@ START_TEST(touchpad_pressure_tap_2fg) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* tap but too light */ @@ -6096,6 +6154,7 @@ START_TEST(touchpad_pressure_tap_2fg_1fg_light) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* double-tap with one finger too light */ @@ -6142,6 +6201,7 @@ START_TEST(touchpad_pressure_btntool) return; litest_enable_tap(dev->libinput_device); + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); /* Two light touches down, doesn't count */ @@ -6664,6 +6724,7 @@ START_TEST(touchpad_suspend_abba) litest_grab_device(tabletmode); litest_disable_tap(tp->libinput_device); + litest_disable_hold_gestures(tp->libinput_device); /* ABBA test for touchpad internal suspend: * reason A on @@ -6802,6 +6863,7 @@ START_TEST(touchpad_suspend_abab) litest_grab_device(tabletmode); litest_disable_tap(tp->libinput_device); + litest_disable_hold_gestures(tp->libinput_device); /* ABAB test for touchpad internal suspend: * reason A on @@ -6945,7 +7007,7 @@ START_TEST(touchpad_end_start_touch) struct libinput *li = dev->libinput; litest_enable_tap(dev->libinput_device); - + litest_disable_hold_gestures(dev->libinput_device); litest_drain_events(li); litest_touch_down(dev, 0, 50, 50); diff --git a/test/test-trackpoint.c b/test/test-trackpoint.c index 87984dfa..46484b4c 100644 --- a/test/test-trackpoint.c +++ b/test/test-trackpoint.c @@ -164,6 +164,8 @@ START_TEST(trackpoint_topsoftbuttons_left_handed_trackpoint) struct libinput_event *event; struct libinput_device *device; + litest_disable_hold_gestures(touchpad->libinput_device); + trackpoint = litest_add_device(li, LITEST_TRACKPOINT); litest_drain_events(li); /* touchpad right-handed, trackpoint left-handed */ @@ -207,6 +209,8 @@ START_TEST(trackpoint_topsoftbuttons_left_handed_touchpad) struct libinput_event *event; struct libinput_device *device; + litest_disable_hold_gestures(touchpad->libinput_device); + trackpoint = litest_add_device(li, LITEST_TRACKPOINT); litest_drain_events(li); /* touchpad left-handed, trackpoint right-handed */ @@ -248,6 +252,8 @@ START_TEST(trackpoint_topsoftbuttons_left_handed_both) struct libinput_event *event; struct libinput_device *device; + litest_disable_hold_gestures(touchpad->libinput_device); + trackpoint = litest_add_device(li, LITEST_TRACKPOINT); litest_drain_events(li); /* touchpad left-handed, trackpoint left-handed */ @@ -293,6 +299,7 @@ START_TEST(trackpoint_palmdetect) int i; touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (i = 0; i < 10; i++) { @@ -328,6 +335,7 @@ START_TEST(trackpoint_palmdetect_resume_touch) int i; touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (i = 0; i < 10; i++) { @@ -361,6 +369,7 @@ START_TEST(trackpoint_palmdetect_require_min_events) struct libinput *li = trackpoint->libinput; touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); /* A single event does not trigger palm detection */ @@ -386,6 +395,7 @@ START_TEST(trackpoint_palmdetect_require_min_events_timeout) struct libinput *li = trackpoint->libinput; touchpad = litest_add_device(li, LITEST_SYNAPTICS_I2C); + litest_disable_hold_gestures(touchpad->libinput_device); litest_drain_events(li); for (int i = 0; i < 10; i++) {