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 <jose.exposito89@gmail.com>
#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)
enum gesture_event {
GESTURE_EVENT_RESET,
GESTURE_EVENT_FINGER_DETECTED,
+ GESTURE_EVENT_HOLD_TIMEOUT,
GESTURE_EVENT_POINTER_MOTION,
GESTURE_EVENT_SCROLL,
GESTURE_EVENT_SWIPE,
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);
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);
"%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;
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);
{
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;
}
}
+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;
+ }
+}
+
static void
tp_gesture_pointer_motion_handle_event(struct tp_dispatch *tp,
enum gesture_event event,
{
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:
{
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:
{
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:
{
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:
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;
}
}
+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)
{
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)
{
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);
"%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;
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);
}
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;
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;
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;
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);
}
enum tp_gesture_state {
GESTURE_STATE_NONE,
GESTURE_STATE_UNKNOWN,
+ GESTURE_STATE_HOLD,
GESTURE_STATE_POINTER_MOTION,
GESTURE_STATE_SCROLL,
GESTURE_STATE_PINCH,
double prev_scale;
double angle;
struct device_float_coords center;
+ struct libinput_timer hold_timer;
bool hold_enabled;
} gesture;
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);
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);
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);
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 */
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);
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);
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,
/* 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);
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);
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,
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);
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);
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(
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);
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);
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);
/* 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);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_disable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_disable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
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:
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:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_enable_drag_lock(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
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:
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:
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);
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);
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);
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);
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
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
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
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
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,
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,
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,
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
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:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
uint64_t ptime, rtime;
struct libinput_event *ev;
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);
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);
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);
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:
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:
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:
*/
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);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
for (i = 0; i < 4; i++) {
litest_drain_events(li);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
/* respective number of fingers down */
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
for (i = 0; i < 5; i++) {
litest_drain_events(li);
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);
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
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);
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);
litest_enable_tap(dev->libinput_device);
litest_disable_tap_drag(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_disable_tap_drag(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
litest_enable_tap(dev->libinput_device);
litest_disable_tap_drag(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
/* Finger down is immediately palm */
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 */
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 */
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 */
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
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 */
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
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,
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,
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,
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
switch (nfingers) {
case 1:
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);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
litest_push_event_frame(dev);
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);
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);
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);
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);
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);
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 */
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 */
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
litest_push_event_frame(dev);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
litest_push_event_frame(dev);
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);
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 */
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 */
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 */
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 */
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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++) {
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++) {
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) {
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) {
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) {
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) {
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++) {
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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 */
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 */
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;
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);
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);
litest_disable_tap(dev->libinput_device);
litest_enable_clickfinger(dev);
+ litest_disable_hold_gestures(dev->libinput_device);
if (!has_thumb_detect(dev))
return;
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);
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);
return;
litest_enable_tap(dev->libinput_device);
+ litest_disable_hold_gestures(dev->libinput_device);
litest_drain_events(li);
/* tap but too 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 */
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 */
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
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
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);
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 */
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 */
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 */
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++) {
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++) {
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 */
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++) {