touchpad: split off dragging from the tapping state machine

No user-visible changes.

Signed-off-by: satrmb <10471-satrmb@users.noreply.gitlab.freedesktop.org>
This commit is contained in:
satrmb 2020-08-01 18:52:04 +02:00
parent 7ee481af16
commit 2a9d250fc6
3 changed files with 528 additions and 449 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 176 KiB

File diff suppressed because it is too large Load diff

View file

@ -106,9 +106,6 @@ enum tp_tap_state {
TAP_STATE_IDLE = 4, TAP_STATE_IDLE = 4,
TAP_STATE_TOUCH, TAP_STATE_TOUCH,
TAP_STATE_HOLD, TAP_STATE_HOLD,
TAP_STATE_1FGTAP_TAPPED,
TAP_STATE_2FGTAP_TAPPED,
TAP_STATE_3FGTAP_TAPPED,
TAP_STATE_TOUCH_2, TAP_STATE_TOUCH_2,
TAP_STATE_TOUCH_2_HOLD, TAP_STATE_TOUCH_2_HOLD,
TAP_STATE_TOUCH_2_RELEASE, TAP_STATE_TOUCH_2_RELEASE,
@ -116,24 +113,29 @@ enum tp_tap_state {
TAP_STATE_TOUCH_3_HOLD, TAP_STATE_TOUCH_3_HOLD,
TAP_STATE_TOUCH_3_RELEASE, TAP_STATE_TOUCH_3_RELEASE,
TAP_STATE_TOUCH_3_RELEASE_2, TAP_STATE_TOUCH_3_RELEASE_2,
TAP_STATE_1FGTAP_DRAGGING_OR_DOUBLETAP,
TAP_STATE_2FGTAP_DRAGGING_OR_DOUBLETAP,
TAP_STATE_3FGTAP_DRAGGING_OR_DOUBLETAP,
TAP_STATE_1FGTAP_DRAGLOCK_CONTINUE,
TAP_STATE_2FGTAP_DRAGLOCK_CONTINUE,
TAP_STATE_3FGTAP_DRAGLOCK_CONTINUE,
TAP_STATE_1FGTAP_DRAGGING,
TAP_STATE_2FGTAP_DRAGGING,
TAP_STATE_3FGTAP_DRAGGING,
TAP_STATE_1FGTAP_DRAGLOCK_WAIT,
TAP_STATE_2FGTAP_DRAGLOCK_WAIT,
TAP_STATE_3FGTAP_DRAGLOCK_WAIT,
TAP_STATE_1FGTAP_DRAGGING_2,
TAP_STATE_2FGTAP_DRAGGING_2,
TAP_STATE_3FGTAP_DRAGGING_2,
TAP_STATE_DEAD, /**< finger count exceeded */ TAP_STATE_DEAD, /**< finger count exceeded */
}; };
enum tp_drag_state {
DRAG_STATE_IDLE,
DRAG_STATE_1FGTAP_TAPPED,
DRAG_STATE_2FGTAP_TAPPED,
DRAG_STATE_3FGTAP_TAPPED,
DRAG_STATE_1FGTAP_DRAGGING_OR_DOUBLETAP,
DRAG_STATE_2FGTAP_DRAGGING_OR_DOUBLETAP,
DRAG_STATE_3FGTAP_DRAGGING_OR_DOUBLETAP,
DRAG_STATE_1FGTAP_DRAGGING,
DRAG_STATE_2FGTAP_DRAGGING,
DRAG_STATE_3FGTAP_DRAGGING,
DRAG_STATE_1FGTAP_DRAGLOCK_WAIT,
DRAG_STATE_2FGTAP_DRAGLOCK_WAIT,
DRAG_STATE_3FGTAP_DRAGLOCK_WAIT,
DRAG_STATE_1FGTAP_DRAGLOCK_CONTINUE,
DRAG_STATE_2FGTAP_DRAGLOCK_CONTINUE,
DRAG_STATE_3FGTAP_DRAGLOCK_CONTINUE,
DRAG_STATE_BUTTON, /**< clickpad button pressed */
};
enum tp_tap_touch_state { enum tp_tap_touch_state {
TAP_TOUCH_STATE_IDLE = 16, /**< not in touch */ TAP_TOUCH_STATE_IDLE = 16, /**< not in touch */
TAP_TOUCH_STATE_TOUCH, /**< touching, may tap */ TAP_TOUCH_STATE_TOUCH, /**< touching, may tap */
@ -429,9 +431,11 @@ struct tp_dispatch {
bool suspended; bool suspended;
struct libinput_timer timer; struct libinput_timer timer;
enum tp_tap_state state; enum tp_tap_state state;
enum tp_drag_state drag_state;
uint32_t buttons_pressed; uint32_t buttons_pressed;
uint64_t saved_press_time, uint64_t saved_press_time,
saved_release_time; saved_release_time,
saved_multitap_release_time;
enum libinput_config_tap_button_map map; enum libinput_config_tap_button_map map;
enum libinput_config_tap_button_map want_map; enum libinput_config_tap_button_map want_map;