Lines Matching refs:tap

52  * Look at the state diagram in doc/touchpad-tap-state-machine.svg
115 "%d: invalid tap event %s in state %s\n",
118 tap_state_to_str(tp->tap.state));
134 assert(tp->tap.map < ARRAY_LENGTH(button_map));
139 button = button_map[tp->tap.map][nfingers - 1];
142 tp->tap.buttons_pressed |= bit(nfingers);
144 tp->tap.buttons_pressed &= ~bit(nfingers);
155 libinput_timer_set(&tp->tap.timer, time + DEFAULT_TAP_TIMEOUT_PERIOD);
162 libinput_timer_set(&tp->tap.timer,
171 libinput_timer_set(&tp->tap.timer,
178 libinput_timer_cancel(&tp->tap.timer);
184 tp->tap.state = TAP_STATE_DEAD;
185 t->tap.state = TAP_TOUCH_STATE_DEAD;
196 tp->tap.state = TAP_STATE_TOUCH;
197 tp->tap.saved_press_time = time;
208 tp->tap.state = TAP_STATE_DEAD;
214 tp->tap.state = TAP_STATE_IDLE;
229 tp->tap.state = TAP_STATE_TOUCH_2;
230 tp->tap.saved_press_time = time;
235 tp->tap.saved_press_time,
238 if (tp->tap.drag_enabled) {
239 tp->tap.state = TAP_STATE_1FGTAP_TAPPED;
240 tp->tap.saved_release_time = time;
247 tp->tap.state = TAP_STATE_IDLE;
254 tp->tap.state = TAP_STATE_HOLD;
259 tp->tap.state = TAP_STATE_DEAD;
262 tp->tap.state = TAP_STATE_IDLE;
263 t->tap.is_thumb = true;
264 tp->tap.nfingers_down--;
265 t->tap.state = TAP_TOUCH_STATE_DEAD;
269 tp->tap.state = TAP_STATE_IDLE;
285 tp->tap.state = TAP_STATE_TOUCH_2;
286 tp->tap.saved_press_time = time;
290 tp->tap.state = TAP_STATE_IDLE;
298 tp->tap.state = TAP_STATE_DEAD;
301 tp->tap.state = TAP_STATE_IDLE;
302 t->tap.is_thumb = true;
303 tp->tap.nfingers_down--;
304 t->tap.state = TAP_TOUCH_STATE_DEAD;
307 tp->tap.state = TAP_STATE_IDLE;
332 tp->tap.state = dest[nfingers_tapped - 1];
333 tp->tap.saved_press_time = time;
338 tp->tap.state = TAP_STATE_IDLE;
340 tp->tap.saved_release_time,
345 tp->tap.state = TAP_STATE_DEAD;
347 tp->tap.saved_release_time,
370 tp->tap.state = TAP_STATE_TOUCH_3;
371 tp->tap.saved_press_time = time;
375 tp->tap.state = TAP_STATE_TOUCH_2_RELEASE;
376 tp->tap.saved_release_time = time;
383 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
387 tp->tap.state = TAP_STATE_DEAD;
392 tp->tap.state = TAP_STATE_TOUCH;
407 tp->tap.state = TAP_STATE_TOUCH_3;
408 tp->tap.saved_press_time = time;
412 tp->tap.state = TAP_STATE_HOLD;
418 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
421 tp->tap.state = TAP_STATE_DEAD;
426 tp->tap.state = TAP_STATE_HOLD;
441 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
442 t->tap.state = TAP_TOUCH_STATE_DEAD;
447 tp->tap.saved_press_time,
450 if (tp->tap.drag_enabled) {
451 tp->tap.state = TAP_STATE_2FGTAP_TAPPED;
455 tp->tap.saved_release_time,
458 tp->tap.state = TAP_STATE_IDLE;
465 tp->tap.state = TAP_STATE_HOLD;
468 tp->tap.state = TAP_STATE_DEAD;
480 tp->tap.saved_press_time,
483 if (tp->tap.drag_enabled) {
484 /* For a single-finger tap the timer delay is the same
487 tp->tap.state = TAP_STATE_1FGTAP_TAPPED;
490 tp->tap.saved_release_time,
493 tp->tap.state = TAP_STATE_IDLE;
509 tp->tap.state = TAP_STATE_DEAD;
516 tp->tap.state = TAP_STATE_TOUCH_3_HOLD;
521 tp->tap.state = TAP_STATE_TOUCH_3_RELEASE;
522 tp->tap.saved_release_time = time;
526 tp->tap.state = TAP_STATE_DEAD;
531 tp->tap.state = TAP_STATE_TOUCH_2;
546 tp->tap.state = TAP_STATE_DEAD;
550 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
558 tp->tap.state = TAP_STATE_DEAD;
563 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
579 tp->tap.saved_press_time,
583 tp->tap.saved_release_time,
586 tp->tap.state = TAP_STATE_TOUCH_3;
587 tp->tap.saved_press_time = time;
591 tp->tap.state = TAP_STATE_TOUCH_3_RELEASE_2;
596 tp->tap.saved_press_time,
600 tp->tap.saved_release_time,
607 tp->tap.saved_press_time,
611 tp->tap.saved_release_time,
614 tp->tap.state = TAP_STATE_TOUCH_2_HOLD;
618 tp->tap.saved_press_time,
622 tp->tap.saved_release_time,
625 tp->tap.state = TAP_STATE_DEAD;
630 tp->tap.state = TAP_STATE_TOUCH_2_RELEASE;
646 tp->tap.saved_press_time,
650 tp->tap.saved_release_time,
653 tp->tap.state = TAP_STATE_TOUCH_2;
654 tp->tap.saved_press_time = time;
659 tp->tap.saved_press_time,
662 if (tp->tap.drag_enabled) {
663 tp->tap.state = TAP_STATE_3FGTAP_TAPPED;
667 tp->tap.saved_release_time,
670 tp->tap.state = TAP_STATE_IDLE;
675 tp->tap.saved_press_time,
679 tp->tap.saved_release_time,
686 tp->tap.saved_press_time,
690 tp->tap.saved_release_time,
693 tp->tap.state = TAP_STATE_HOLD;
697 tp->tap.saved_press_time,
701 tp->tap.saved_release_time,
704 tp->tap.state = TAP_STATE_DEAD;
710 tp->tap.saved_press_time,
713 if (tp->tap.drag_enabled) {
715 * for a two-finger tap would be ideal, but the
720 tp->tap.state = TAP_STATE_2FGTAP_TAPPED;
723 tp->tap.saved_release_time,
726 tp->tap.state = TAP_STATE_IDLE;
743 tp->tap.saved_release_time,
746 tp->tap.state = TAP_STATE_TOUCH_2;
747 tp->tap.saved_press_time = time;
752 tp->tap.state = TAP_STATE_1FGTAP_TAPPED;
754 tp->tap.saved_release_time,
758 tp->tap.saved_press_time,
761 tp->tap.saved_release_time = time;
772 tp->tap.state = dest[nfingers_tapped - 1];
776 tp->tap.state = TAP_STATE_DEAD;
778 tp->tap.saved_release_time,
791 tp->tap.state = dest[nfingers_tapped - 1];
814 tp->tap.state = dest[nfingers_tapped - 1];
818 if (tp->tap.drag_lock_enabled) {
825 tp->tap.state = dest[nfingers_tapped - 1];
832 tp->tap.state = TAP_STATE_IDLE;
840 tp->tap.state = TAP_STATE_DEAD;
850 tp->tap.saved_release_time,
853 tp->tap.state = TAP_STATE_IDLE;
875 tp->tap.state = dest[nfingers_tapped - 1];
884 tp->tap.state = TAP_STATE_IDLE;
891 tp->tap.state = TAP_STATE_DEAD;
924 tp->tap.state = TAP_STATE_IDLE;
938 tp->tap.state = dest[nfingers_tapped - 1];
942 tp->tap.state = TAP_STATE_DEAD;
957 tp->tap.state = dest[nfingers_tapped - 1];
980 tp->tap.state = dest[nfingers_tapped - 1];
984 tp->tap.state = TAP_STATE_DEAD;
995 tp->tap.state = TAP_STATE_DEAD;
1010 tp->tap.state = dest[nfingers_tapped - 1];
1027 if (tp->tap.nfingers_down == 0)
1028 tp->tap.state = TAP_STATE_IDLE;
1039 if (tp->tap.nfingers_down == 0)
1040 tp->tap.state = TAP_STATE_IDLE;
1053 current = tp->tap.state;
1055 switch(tp->tap.state) {
1148 if (tp->tap.state == TAP_STATE_IDLE || tp->tap.state == TAP_STATE_DEAD)
1151 if (current != tp->tap.state)
1153 "tap: touch %d (%s), tap state %s → %s → %s\n",
1158 tap_state_to_str(tp->tap.state));
1166 tp_phys_delta(tp, device_delta(t->point, t->tap.initial));
1195 return tp->tap.enabled && !tp->tap.suspended;
1219 t->tap.state = TAP_TOUCH_STATE_DEAD;
1223 if (t->tap.is_thumb)
1226 /* A palm tap needs to be properly released because we might
1230 if (t->tap.is_palm) {
1243 assert(!t->tap.is_palm);
1244 t->tap.is_palm = true;
1245 t->tap.state = TAP_TOUCH_STATE_DEAD;
1248 assert(tp->tap.nfingers_down > 0);
1249 tp->tap.nfingers_down--;
1254 * follow the normal tap state for now */
1256 t->tap.is_thumb = true;
1260 t->tap.state = TAP_TOUCH_STATE_TOUCH;
1261 t->tap.initial = t->point;
1262 tp->tap.nfingers_down++;
1266 assert(tp->tap.nfingers_down >= 1);
1267 tp->tap.nfingers_down--;
1270 t->tap.state = TAP_TOUCH_STATE_IDLE;
1271 } else if (tp->tap.state != TAP_STATE_IDLE &&
1274 } else if (tp->tap.state != TAP_STATE_IDLE &&
1281 if (tmp->tap.state == TAP_TOUCH_STATE_TOUCH)
1282 tmp->tap.state = TAP_TOUCH_STATE_DEAD;
1293 * on a decision if a tap is a tap.
1295 switch (tp->tap.state) {
1316 assert(tp->tap.nfingers_down <= tp->nfingers_down);
1318 assert(tp->tap.nfingers_down == 0);
1326 if (tp->tap.state != TAP_STATE_IDLE)
1329 if (tp->tap.map != tp->tap.want_map)
1330 tp->tap.map = tp->tap.want_map;
1349 t->tap.state == TAP_TOUCH_STATE_IDLE)
1352 t->tap.state = TAP_TOUCH_STATE_DEAD;
1361 tp->tap.suspended = suspended;
1362 tp->tap.enabled = enabled;
1375 t->tap.is_palm = true;
1376 t->tap.state = TAP_TOUCH_STATE_DEAD;
1379 tp->tap.state = TAP_STATE_IDLE;
1380 tp->tap.nfingers_down = 0;
1392 return min(tp->ntouches, 3U); /* we only do up to 3 finger tap */
1402 tp_tap_enabled_update(tp, tp->tap.suspended,
1415 return tp->tap.enabled ? LIBINPUT_CONFIG_TAP_ENABLED :
1456 tp->tap.want_map = map;
1469 return tp->tap.want_map;
1485 tp->tap.drag_enabled = enabled;
1496 return tp->tap.drag_enabled;
1520 tp->tap.drag_lock_enabled = enabled;
1531 return tp->tap.drag_lock_enabled;
1553 tp->tap.config.count = tp_tap_config_count;
1554 tp->tap.config.set_enabled = tp_tap_config_set_enabled;
1555 tp->tap.config.get_enabled = tp_tap_config_is_enabled;
1556 tp->tap.config.get_default = tp_tap_config_get_default;
1557 tp->tap.config.set_map = tp_tap_config_set_map;
1558 tp->tap.config.get_map = tp_tap_config_get_map;
1559 tp->tap.config.get_default_map = tp_tap_config_get_default_map;
1560 tp->tap.config.set_drag_enabled = tp_tap_config_set_drag_enabled;
1561 tp->tap.config.get_drag_enabled = tp_tap_config_get_drag_enabled;
1562 tp->tap.config.get_default_drag_enabled = tp_tap_config_get_default_drag_enabled;
1563 tp->tap.config.set_draglock_enabled = tp_tap_config_set_draglock_enabled;
1564 tp->tap.config.get_draglock_enabled = tp_tap_config_get_draglock_enabled;
1565 tp->tap.config.get_default_draglock_enabled = tp_tap_config_get_default_draglock_enabled;
1566 tp->device->base.config.tap = &tp->tap.config;
1568 tp->tap.state = TAP_STATE_IDLE;
1569 tp->tap.enabled = tp_tap_default(tp->device);
1570 tp->tap.map = LIBINPUT_CONFIG_TAP_MAP_LRM;
1571 tp->tap.want_map = tp->tap.map;
1572 tp->tap.drag_enabled = tp_drag_default(tp->device);
1573 tp->tap.drag_lock_enabled = tp_drag_lock_default(tp->device);
1577 "%s tap",
1579 libinput_timer_init(&tp->tap.timer,
1588 libinput_timer_cancel(&tp->tap.timer);
1598 if (tp->tap.buttons_pressed & bit(i))
1607 if (t->tap.is_palm)
1610 t->tap.is_palm = true;
1611 t->tap.state = TAP_TOUCH_STATE_DEAD;
1614 tp->tap.state = TAP_STATE_IDLE;
1615 tp->tap.nfingers_down = 0;
1621 tp_tap_enabled_update(tp, true, tp->tap.enabled, time);
1627 tp_tap_enabled_update(tp, false, tp->tap.enabled, time);
1633 switch (tp->tap.state) {
1655 switch (tp->tap.state) {