litest_assert_int_eq(status, expected);
}
+static inline bool
+litest_has_2fg_scroll(struct litest_device *dev)
+{
+ struct libinput_device *device = dev->libinput_device;
+
+ return !!(libinput_device_config_scroll_get_methods(device) &
+ LIBINPUT_CONFIG_SCROLL_2FG);
+}
+
+static inline void
+litest_enable_2fg_scroll(struct litest_device *dev)
+{
+ enum libinput_config_status status, expected;
+ struct libinput_device *device = dev->libinput_device;
+
+ status = libinput_device_config_scroll_set_method(device,
+ LIBINPUT_CONFIG_SCROLL_2FG);
+
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ litest_assert_int_eq(status, expected);
+}
+
+static inline void
+litest_enable_edge_scroll(struct litest_device *dev)
+{
+ enum libinput_config_status status, expected;
+ struct libinput_device *device = dev->libinput_device;
+
+ status = libinput_device_config_scroll_set_method(device,
+ LIBINPUT_CONFIG_SCROLL_EDGE);
+
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ litest_assert_int_eq(status, expected);
+}
+
+static inline void
+litest_enable_clickfinger(struct litest_device *dev)
+{
+ enum libinput_config_status status, expected;
+ struct libinput_device *device = dev->libinput_device;
+
+ status = libinput_device_config_click_set_method(device,
+ LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ litest_assert_int_eq(status, expected);
+}
+
+static inline void
+litest_enable_buttonareas(struct litest_device *dev)
+{
+ enum libinput_config_status status, expected;
+ struct libinput_device *device = dev->libinput_device;
+
+ status = libinput_device_config_click_set_method(device,
+ LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ litest_assert_int_eq(status, expected);
+}
+
+static inline int
+litest_is_synaptics_semi_mt(struct litest_device *dev)
+{
+ struct libevdev *evdev = dev->evdev;
+
+ return libevdev_has_property(evdev, INPUT_PROP_SEMI_MT) &&
+ libevdev_get_id_vendor(evdev) == 0x2 &&
+ libevdev_get_id_product(evdev) == 0x7;
+}
+
+static inline void
+litest_enable_drag_lock(struct libinput_device *device)
+{
+ enum libinput_config_status status, expected;
+
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ status = libinput_device_config_tap_set_drag_lock_enabled(device,
+ LIBINPUT_CONFIG_DRAG_LOCK_ENABLED);
+
+ litest_assert_int_eq(status, expected);
+}
+
+static inline void
+litest_disable_drag_lock(struct libinput_device *device)
+{
+ enum libinput_config_status status, expected;
+
+ expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
+ status = libinput_device_config_tap_set_drag_lock_enabled(device,
+ LIBINPUT_CONFIG_DRAG_LOCK_DISABLED);
+
+ litest_assert_int_eq(status, expected);
+}
+
#define CK_DOUBLE_EQ_EPSILON 1E-3
#define ck_assert_double_eq(X,Y) \
do { \
#include "libinput-util.h"
#include "litest.h"
-static void
-enable_clickfinger(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_click_set_method(device,
- LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
-static void
-enable_buttonareas(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_click_set_method(device,
- LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
START_TEST(touchpad_click_defaults_clickfinger)
{
struct litest_device *dev = litest_current_device();
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
if (libevdev_get_num_slots(dev->evdev) < 3)
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
!libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP))
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
if (libevdev_get_num_slots(dev->evdev) < 4)
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
!libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_QUADTAP))
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
!libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP))
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
h < 50.0)
small_touchpad = true;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
if (libevdev_get_num_slots(dev->evdev) < 3)
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
if (libevdev_get_num_slots(dev->evdev) > 2)
return;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_drain_events(li);
- enable_buttonareas(dev);
+ litest_enable_buttonareas(dev);
litest_touch_down(dev, 0, 95, 95);
litest_event(dev, EV_KEY, BTN_LEFT, 1);
litest_assert_button_event(li, BTN_RIGHT,
LIBINPUT_BUTTON_STATE_RELEASED);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_drain_events(li);
- enable_buttonareas(dev);
+ litest_enable_buttonareas(dev);
litest_touch_down(dev, 0, 95, 95);
litest_event(dev, EV_KEY, BTN_LEFT, 1);
litest_assert_button_event(li, BTN_RIGHT,
LIBINPUT_BUTTON_STATE_PRESSED);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_event(dev, EV_KEY, BTN_LEFT, 0);
litest_event(dev, EV_SYN, SYN_REPORT, 0);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_assert_button_event(li, BTN_LEFT,
LIBINPUT_BUTTON_STATE_RELEASED);
- enable_buttonareas(dev);
+ litest_enable_buttonareas(dev);
litest_touch_down(dev, 0, 95, 95);
litest_event(dev, EV_KEY, BTN_LEFT, 1);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_assert_button_event(li, BTN_LEFT,
LIBINPUT_BUTTON_STATE_PRESSED);
- enable_buttonareas(dev);
+ litest_enable_buttonareas(dev);
litest_event(dev, EV_KEY, BTN_LEFT, 0);
litest_event(dev, EV_SYN, SYN_REPORT, 0);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
/* one in thumb area, one in normal area + TRIPLETAP. spread is wide
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 5, 99);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_buttonareas(dev);
+ litest_enable_buttonareas(dev);
litest_drain_events(li);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
libinput_device_config_send_events_set_mode(dev->libinput_device,
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 90, 5);
#include "libinput-util.h"
#include "litest.h"
-static bool
-has_2fg_scroll(struct litest_device *dev)
-{
- struct libinput_device *device = dev->libinput_device;
-
- return !!(libinput_device_config_scroll_get_methods(device) &
- LIBINPUT_CONFIG_SCROLL_2FG);
-}
-
-static void
-enable_2fg_scroll(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_scroll_set_method(device,
- LIBINPUT_CONFIG_SCROLL_2FG);
-
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
-static void
-enable_edge_scroll(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_scroll_set_method(device,
- LIBINPUT_CONFIG_SCROLL_EDGE);
-
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
-static void
-enable_clickfinger(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_click_set_method(device,
- LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER);
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
-static void
-enable_buttonareas(struct litest_device *dev)
-{
- enum libinput_config_status status, expected;
- struct libinput_device *device = dev->libinput_device;
-
- status = libinput_device_config_click_set_method(device,
- LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS);
- expected = LIBINPUT_CONFIG_STATUS_SUCCESS;
- litest_assert_int_eq(status, expected);
-}
-
-static inline int
-is_synaptics_semi_mt(struct litest_device *dev)
-{
- struct libevdev *evdev = dev->evdev;
-
- return libevdev_has_property(evdev, INPUT_PROP_SEMI_MT) &&
- libevdev_get_id_vendor(evdev) == 0x2 &&
- libevdev_get_id_product(evdev) == 0x7;
-}
-
START_TEST(touchpad_1fg_motion)
{
struct litest_device *dev = litest_current_device();
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
test_2fg_scroll(dev, 0.1, 40, 0);
const struct input_absinfo *y;
double y_move;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
/* We want to move > 5 mm. */
y_move = 20.0;
}
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 49, 50);
struct libinput_event *event;
struct libinput_event_pointer *ptrev;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
test_2fg_scroll(dev, 0, 30, 0);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 20, 20);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
/* start with motion */
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- if (!has_2fg_scroll(dev))
+ if (!litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_drain_events(li);
libinput_device_config_scroll_set_natural_scroll_enabled(dev->libinput_device, 1);
struct libinput *li = dev->libinput;
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_touch_down(dev, 0, 99, 20);
litest_touch_move_to(dev, 0, 99, 20, 99, 80, 10, 0);
method = libinput_device_config_scroll_get_methods(device);
ck_assert(method & LIBINPUT_CONFIG_SCROLL_EDGE);
if (libevdev_get_num_slots(evdev) > 1 &&
- !is_synaptics_semi_mt(dev))
+ !litest_is_synaptics_semi_mt(dev))
ck_assert(method & LIBINPUT_CONFIG_SCROLL_2FG);
else
ck_assert((method & LIBINPUT_CONFIG_SCROLL_2FG) == 0);
if (libevdev_get_num_slots(evdev) > 1 &&
- !is_synaptics_semi_mt(dev))
+ !litest_is_synaptics_semi_mt(dev))
expected = LIBINPUT_CONFIG_SCROLL_2FG;
else
expected = LIBINPUT_CONFIG_SCROLL_EDGE;
LIBINPUT_CONFIG_SCROLL_2FG);
if (libevdev_get_num_slots(evdev) > 1 &&
- !is_synaptics_semi_mt(dev))
+ !litest_is_synaptics_semi_mt(dev))
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
else
ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_UNSUPPORTED);
}
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_touch_down(dev, 0, 99, 20);
libinput_dispatch(li);
struct libinput *li = dev->libinput;
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_touch_down(dev, 0, 99, 10);
litest_touch_move_to(dev, 0, 99, 10, 99, 70, 10, 0);
struct libinput *li = dev->libinput;
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
/* moving into the edge zone must not trigger scroll events */
litest_touch_down(dev, 0, 20, 20);
struct libinput_event_pointer *ptrev;
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_touch_down(dev, 0, 99, 20);
litest_touch_move_to(dev, 0, 99, 20, 99, 80, 10, 0);
struct libinput *li = dev->libinput;
litest_drain_events(li);
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_touch_down(dev, 0, 49, 50);
litest_touch_down(dev, 1, 51, 50);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_buttonareas(dev);
- enable_edge_scroll(dev);
+ litest_enable_buttonareas(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 99, 40);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_buttonareas(dev);
- enable_edge_scroll(dev);
+ litest_enable_buttonareas(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 20, 99);
struct libinput_event_pointer *ptrev;
double val;
- enable_buttonareas(dev);
- enable_edge_scroll(dev);
+ litest_enable_buttonareas(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 20, 95);
struct libinput_event_pointer *ptrev;
double val;
- enable_clickfinger(dev);
- enable_edge_scroll(dev);
+ litest_enable_clickfinger(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
litest_touch_down(dev, 0, 20, 95);
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
/* move into area, move vertically, move back to edge */
struct libinput *li = dev->libinput;
if (!touchpad_has_palm_detect_size(dev) ||
- !has_2fg_scroll(dev))
+ !litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_disable_tap(dev->libinput_device);
if (!touchpad_has_palm_detect_size(dev))
return;
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_drain_events(li);
struct libinput *li = dev->libinput;
if (!touchpad_has_palm_detect_size(dev) ||
- !has_2fg_scroll(dev))
+ !litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_disable_tap(dev->libinput_device);
struct libinput *li = dev->libinput;
if (!touchpad_has_palm_detect_size(dev) ||
- !has_2fg_scroll(dev))
+ !litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_disable_tap(dev->libinput_device);
struct libinput *li = dev->libinput;
if (!touchpad_has_palm_detect_size(dev) ||
- !has_2fg_scroll(dev))
+ !litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_disable_tap(dev->libinput_device);
struct libinput *li = dev->libinput;
if (!touchpad_has_palm_detect_size(dev) ||
- !has_2fg_scroll(dev))
+ !litest_has_2fg_scroll(dev))
return;
- enable_2fg_scroll(dev);
+ litest_enable_2fg_scroll(dev);
litest_disable_tap(dev->libinput_device);
if (!has_disable_while_typing(touchpad))
return;
- enable_edge_scroll(touchpad);
+ litest_enable_edge_scroll(touchpad);
keyboard = litest_add_device(li, LITEST_KEYBOARD);
litest_drain_events(li);
if (!has_disable_while_typing(touchpad))
return;
- enable_edge_scroll(touchpad);
+ litest_enable_edge_scroll(touchpad);
keyboard = litest_add_device(li, LITEST_KEYBOARD);
litest_drain_events(li);
};
litest_disable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
if (!has_thumb_detect(dev))
return;
};
litest_disable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
if (!has_thumb_detect(dev))
return;
if (!has_thumb_detect(dev))
return;
- enable_edge_scroll(dev);
+ litest_enable_edge_scroll(dev);
litest_disable_tap(dev->libinput_device);
litest_drain_events(li);
return;
litest_enable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
/* touch down is a thumb */
return;
litest_enable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
/* event after touch down is thumb */
return;
litest_enable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
/* event in state HOLD is thumb */
return;
litest_enable_tap(dev->libinput_device);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
litest_drain_events(li);
/* event in state HOLD is thumb */
* https://bugs.freedesktop.org/show_bug.cgi?id=91352
*/
litest_drain_events(li);
- enable_clickfinger(dev);
+ litest_enable_clickfinger(dev);
/* touch 1 down */
litest_event(dev, EV_ABS, ABS_MT_SLOT, 0);