mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-08 12:28:10 +02:00
Merge branch 'tap-to-end-drag'
Changed the test merged in to use the new ranged litests functionality Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
commit
46171fbef3
5 changed files with 561 additions and 218 deletions
|
|
@ -33,6 +33,10 @@ continue the dragging process, so that multiple touchpad-widths of distance
|
||||||
can be covered easily. If two-fingers are supported by the hardware, a
|
can be covered easily. If two-fingers are supported by the hardware, a
|
||||||
second finger can be used to drag while the first is held in-place.
|
second finger can be used to drag while the first is held in-place.
|
||||||
|
|
||||||
|
An alternative method to end a drag process is to tap immediately after
|
||||||
|
lifting the finger. The full sequence is thus: tap, finger down, drag,
|
||||||
|
finger up, tap.
|
||||||
|
|
||||||
@section tap_constraints Constraints while tapping
|
@section tap_constraints Constraints while tapping
|
||||||
|
|
||||||
A couple of constraints apply to the contact to be converted into a press, the most common ones are:
|
A couple of constraints apply to the contact to be converted into a press, the most common ones are:
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 116 KiB |
|
|
@ -74,6 +74,7 @@ tap_state_to_str(enum tp_tap_state state)
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_WAIT);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_WAIT);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_DOUBLETAP);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_DOUBLETAP);
|
||||||
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_OR_TAP);
|
||||||
CASE_RETURN_STRING(TAP_STATE_DRAGGING_2);
|
CASE_RETURN_STRING(TAP_STATE_DRAGGING_2);
|
||||||
CASE_RETURN_STRING(TAP_STATE_MULTITAP);
|
CASE_RETURN_STRING(TAP_STATE_MULTITAP);
|
||||||
CASE_RETURN_STRING(TAP_STATE_MULTITAP_DOWN);
|
CASE_RETURN_STRING(TAP_STATE_MULTITAP_DOWN);
|
||||||
|
|
@ -409,8 +410,8 @@ tp_tap_dragging_wait_handle_event(struct tp_dispatch *tp,
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case TAP_EVENT_TOUCH:
|
case TAP_EVENT_TOUCH:
|
||||||
tp->tap.state = TAP_STATE_DRAGGING;
|
tp->tap.state = TAP_STATE_DRAGGING_OR_TAP;
|
||||||
tp_tap_clear_timer(tp);
|
tp_tap_set_timer(tp, time);
|
||||||
break;
|
break;
|
||||||
case TAP_EVENT_RELEASE:
|
case TAP_EVENT_RELEASE:
|
||||||
case TAP_EVENT_MOTION:
|
case TAP_EVENT_MOTION:
|
||||||
|
|
@ -426,6 +427,32 @@ tp_tap_dragging_wait_handle_event(struct tp_dispatch *tp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tp_tap_dragging_tap_handle_event(struct tp_dispatch *tp,
|
||||||
|
struct tp_touch *t,
|
||||||
|
enum tap_event event, uint64_t time)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (event) {
|
||||||
|
case TAP_EVENT_TOUCH:
|
||||||
|
tp->tap.state = TAP_STATE_DRAGGING_2;
|
||||||
|
tp_tap_clear_timer(tp);
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_RELEASE:
|
||||||
|
tp->tap.state = TAP_STATE_IDLE;
|
||||||
|
tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_MOTION:
|
||||||
|
case TAP_EVENT_TIMEOUT:
|
||||||
|
tp->tap.state = TAP_STATE_DRAGGING;
|
||||||
|
break;
|
||||||
|
case TAP_EVENT_BUTTON:
|
||||||
|
tp->tap.state = TAP_STATE_DEAD;
|
||||||
|
tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tp_tap_dragging2_handle_event(struct tp_dispatch *tp,
|
tp_tap_dragging2_handle_event(struct tp_dispatch *tp,
|
||||||
struct tp_touch *t,
|
struct tp_touch *t,
|
||||||
|
|
@ -588,6 +615,9 @@ tp_tap_handle_event(struct tp_dispatch *tp,
|
||||||
case TAP_STATE_DRAGGING_WAIT:
|
case TAP_STATE_DRAGGING_WAIT:
|
||||||
tp_tap_dragging_wait_handle_event(tp, t, event, time);
|
tp_tap_dragging_wait_handle_event(tp, t, event, time);
|
||||||
break;
|
break;
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
|
tp_tap_dragging_tap_handle_event(tp, t, event, time);
|
||||||
|
break;
|
||||||
case TAP_STATE_DRAGGING_2:
|
case TAP_STATE_DRAGGING_2:
|
||||||
tp_tap_dragging2_handle_event(tp, t, event, time);
|
tp_tap_dragging2_handle_event(tp, t, event, time);
|
||||||
break;
|
break;
|
||||||
|
|
@ -692,6 +722,7 @@ tp_tap_handle_state(struct tp_dispatch *tp, uint64_t time)
|
||||||
case TAP_STATE_TOUCH:
|
case TAP_STATE_TOUCH:
|
||||||
case TAP_STATE_TAPPED:
|
case TAP_STATE_TAPPED:
|
||||||
case TAP_STATE_DRAGGING_OR_DOUBLETAP:
|
case TAP_STATE_DRAGGING_OR_DOUBLETAP:
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
case TAP_STATE_TOUCH_2:
|
case TAP_STATE_TOUCH_2:
|
||||||
case TAP_STATE_TOUCH_3:
|
case TAP_STATE_TOUCH_3:
|
||||||
case TAP_STATE_MULTITAP_DOWN:
|
case TAP_STATE_MULTITAP_DOWN:
|
||||||
|
|
@ -870,6 +901,7 @@ tp_tap_dragging(struct tp_dispatch *tp)
|
||||||
case TAP_STATE_DRAGGING:
|
case TAP_STATE_DRAGGING:
|
||||||
case TAP_STATE_DRAGGING_2:
|
case TAP_STATE_DRAGGING_2:
|
||||||
case TAP_STATE_DRAGGING_WAIT:
|
case TAP_STATE_DRAGGING_WAIT:
|
||||||
|
case TAP_STATE_DRAGGING_OR_TAP:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ enum tp_tap_state {
|
||||||
TAP_STATE_TOUCH_3,
|
TAP_STATE_TOUCH_3,
|
||||||
TAP_STATE_TOUCH_3_HOLD,
|
TAP_STATE_TOUCH_3_HOLD,
|
||||||
TAP_STATE_DRAGGING_OR_DOUBLETAP,
|
TAP_STATE_DRAGGING_OR_DOUBLETAP,
|
||||||
|
TAP_STATE_DRAGGING_OR_TAP,
|
||||||
TAP_STATE_DRAGGING,
|
TAP_STATE_DRAGGING,
|
||||||
TAP_STATE_DRAGGING_WAIT,
|
TAP_STATE_DRAGGING_WAIT,
|
||||||
TAP_STATE_DRAGGING_2,
|
TAP_STATE_DRAGGING_2,
|
||||||
|
|
|
||||||
259
test/touchpad.c
259
test/touchpad.c
|
|
@ -501,6 +501,166 @@ START_TEST(touchpad_1fg_multitap_n_drag_timeout)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_multitap_n_drag_tap)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
struct libinput_event *event;
|
||||||
|
struct libinput_event_pointer *ptrev;
|
||||||
|
uint32_t oldtime = 0,
|
||||||
|
curtime;
|
||||||
|
int range = _i, /* looped test */
|
||||||
|
ntaps;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= range; ntaps++) {
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
msleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_timeout_tap();
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= range; ntaps++) {
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_ge(curtime, oldtime);
|
||||||
|
oldtime = curtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 70, 50, 10, 4);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li,
|
||||||
|
LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 70, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_multitap_n_drag_tap_click)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
struct libinput_event *event;
|
||||||
|
struct libinput_event_pointer *ptrev;
|
||||||
|
uint32_t oldtime = 0,
|
||||||
|
curtime;
|
||||||
|
int i, ntaps;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
for (i = 3; i < 5; i++) {
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= i; ntaps++) {
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
msleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_timeout_tap();
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
for (ntaps = 0; ntaps <= i; ntaps++) {
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_ge(curtime, oldtime);
|
||||||
|
oldtime = curtime;
|
||||||
|
}
|
||||||
|
|
||||||
|
event = libinput_get_event(li);
|
||||||
|
ptrev = litest_is_button_event(event,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
curtime = libinput_event_pointer_get_time(ptrev);
|
||||||
|
libinput_event_destroy(event);
|
||||||
|
ck_assert_int_gt(curtime, oldtime);
|
||||||
|
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 70, 50, 10, 4);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li,
|
||||||
|
LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 70, 50);
|
||||||
|
litest_button_click(dev, BTN_LEFT, true);
|
||||||
|
litest_button_click(dev, BTN_LEFT, false);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
/* the physical click */
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(touchpad_1fg_tap_n_drag)
|
START_TEST(touchpad_1fg_tap_n_drag)
|
||||||
{
|
{
|
||||||
struct litest_device *dev = litest_current_device();
|
struct litest_device *dev = litest_current_device();
|
||||||
|
|
@ -542,6 +702,101 @@ START_TEST(touchpad_1fg_tap_n_drag)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_tap_n_drag_tap)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
/* lift finger, set down again, should continue dragging */
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(touchpad_1fg_tap_n_drag_tap_click)
|
||||||
|
{
|
||||||
|
struct litest_device *dev = litest_current_device();
|
||||||
|
struct libinput *li = dev->libinput;
|
||||||
|
|
||||||
|
libinput_device_config_tap_set_enabled(dev->libinput_device,
|
||||||
|
LIBINPUT_CONFIG_TAP_ENABLED);
|
||||||
|
|
||||||
|
litest_drain_events(li);
|
||||||
|
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
/* lift finger, set down again, should continue dragging */
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_touch_move_to(dev, 0, 50, 50, 80, 80, 5, 40);
|
||||||
|
|
||||||
|
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_MOTION);
|
||||||
|
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
litest_touch_down(dev, 0, 50, 50);
|
||||||
|
litest_button_click(dev, BTN_LEFT, true);
|
||||||
|
litest_button_click(dev, BTN_LEFT, false);
|
||||||
|
libinput_dispatch(li);
|
||||||
|
|
||||||
|
litest_assert_button_event(li, BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
|
||||||
|
/* the physical click */
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_PRESSED);
|
||||||
|
litest_assert_button_event(li,
|
||||||
|
BTN_LEFT,
|
||||||
|
LIBINPUT_BUTTON_STATE_RELEASED);
|
||||||
|
litest_touch_up(dev, 0);
|
||||||
|
|
||||||
|
litest_assert_empty_queue(li);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(touchpad_1fg_tap_n_drag_timeout)
|
START_TEST(touchpad_1fg_tap_n_drag_timeout)
|
||||||
{
|
{
|
||||||
struct litest_device *dev = litest_current_device();
|
struct litest_device *dev = litest_current_device();
|
||||||
|
|
@ -4283,10 +4538,12 @@ int main(int argc, char **argv)
|
||||||
litest_add("touchpad:tap", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
|
||||||
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
|
litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
|
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
|
||||||
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
|
litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
|
||||||
|
|
@ -4315,6 +4572,8 @@ int main(int argc, char **argv)
|
||||||
pads with buttons */
|
pads with buttons */
|
||||||
litest_add("touchpad:tap", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_multitap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY);
|
||||||
|
|
||||||
litest_add("touchpad:tap", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
|
litest_add("touchpad:tap", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
|
||||||
litest_add("touchpad:tap", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
|
litest_add("touchpad:tap", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue