refactor(hold-tap): split hold state into interrupt and timer
This commit is contained in:
parent
200c6cabea
commit
abc60fc7cb
23 changed files with 40 additions and 33 deletions
|
@ -39,7 +39,8 @@ enum flavor {
|
|||
enum status {
|
||||
STATUS_UNDECIDED,
|
||||
STATUS_TAP,
|
||||
STATUS_HOLD,
|
||||
STATUS_HOLD_INTERRUPT,
|
||||
STATUS_HOLD_TIMER,
|
||||
};
|
||||
|
||||
struct behavior_hold_tap_config {
|
||||
|
@ -221,8 +222,10 @@ static void decide_balanced(struct active_hold_tap *hold_tap, enum decision_mome
|
|||
hold_tap->status = STATUS_TAP;
|
||||
return;
|
||||
case HT_OTHER_KEY_UP:
|
||||
hold_tap->status = STATUS_HOLD_INTERRUPT;
|
||||
return;
|
||||
case HT_TIMER_EVENT:
|
||||
hold_tap->status = STATUS_HOLD;
|
||||
hold_tap->status = STATUS_HOLD_TIMER;
|
||||
return;
|
||||
case HT_QUICK_TAP:
|
||||
hold_tap->status = STATUS_TAP;
|
||||
|
@ -238,7 +241,7 @@ static void decide_tap_preferred(struct active_hold_tap *hold_tap, enum decision
|
|||
hold_tap->status = STATUS_TAP;
|
||||
return;
|
||||
case HT_TIMER_EVENT:
|
||||
hold_tap->status = STATUS_HOLD;
|
||||
hold_tap->status = STATUS_HOLD_TIMER;
|
||||
return;
|
||||
case HT_QUICK_TAP:
|
||||
hold_tap->status = STATUS_TAP;
|
||||
|
@ -254,8 +257,10 @@ static void decide_hold_preferred(struct active_hold_tap *hold_tap, enum decisio
|
|||
hold_tap->status = STATUS_TAP;
|
||||
return;
|
||||
case HT_OTHER_KEY_DOWN:
|
||||
hold_tap->status = STATUS_HOLD_INTERRUPT;
|
||||
return;
|
||||
case HT_TIMER_EVENT:
|
||||
hold_tap->status = STATUS_HOLD;
|
||||
hold_tap->status = STATUS_HOLD_TIMER;
|
||||
return;
|
||||
case HT_QUICK_TAP:
|
||||
hold_tap->status = STATUS_TAP;
|
||||
|
@ -281,8 +286,10 @@ static inline const char *status_str(enum status status) {
|
|||
switch (status) {
|
||||
case STATUS_UNDECIDED:
|
||||
return "undecided";
|
||||
case STATUS_HOLD:
|
||||
return "hold";
|
||||
case STATUS_HOLD_TIMER:
|
||||
return "hold-timer";
|
||||
case STATUS_HOLD_INTERRUPT:
|
||||
return "hold-interrupt";
|
||||
case STATUS_TAP:
|
||||
return "tap";
|
||||
}
|
||||
|
@ -322,7 +329,7 @@ static void decide_hold_tap(struct active_hold_tap *hold_tap, enum decision_mome
|
|||
};
|
||||
|
||||
struct zmk_behavior_binding binding;
|
||||
if (hold_tap->status == STATUS_HOLD) {
|
||||
if (hold_tap->status & STATUS_HOLD) {
|
||||
binding.behavior_dev = hold_tap->config->hold_behavior_dev;
|
||||
binding.param1 = hold_tap->param_hold;
|
||||
binding.param2 = 0;
|
||||
|
@ -397,7 +404,7 @@ static int on_hold_tap_binding_released(struct zmk_behavior_binding *binding,
|
|||
};
|
||||
|
||||
struct zmk_behavior_binding sub_behavior_binding;
|
||||
if (hold_tap->status == STATUS_HOLD) {
|
||||
if (hold_tap->status & STATUS_HOLD) {
|
||||
sub_behavior_binding.behavior_dev = hold_tap->config->hold_behavior_dev;
|
||||
sub_behavior_binding.param1 = hold_tap->param_hold;
|
||||
sub_behavior_binding.param2 = 0;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 1 new undecided hold_tap
|
||||
ht_decide: 1 decided tap (balanced event 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 2)
|
||||
ht_decide: 0 decided hold-interrupt (balanced event 2)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 2)
|
||||
ht_decide: 0 decided hold-interrupt (balanced event 2)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (balanced event 3)
|
||||
ht_decide: 0 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 1 new undecided hold_tap
|
||||
ht_decide: 1 decided hold (balanced event 3)
|
||||
ht_decide: 1 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe0 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 2 new undecided hold_tap
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
ht_decide: 2 decided hold (balanced event 3)
|
||||
ht_decide: 2 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe3 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 3 new undecided hold_tap
|
||||
ht_binding_released: 1 cleaning up hold-tap
|
||||
ht_decide: 3 decided hold (balanced event 3)
|
||||
ht_decide: 3 decided hold-timer (balanced event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe2 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe0 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (hold-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (hold-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_decide: 0 decided hold (hold-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (hold-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 1)
|
||||
ht_decide: 0 decided hold-interrupt (hold-preferred event 1)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 1 new undecided hold_tap
|
||||
ht_decide: 1 decided tap (hold-preferred event 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 1)
|
||||
ht_decide: 0 decided hold-interrupt (hold-preferred event 1)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 1)
|
||||
ht_decide: 0 decided hold-interrupt (hold-preferred event 1)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 1)
|
||||
ht_decide: 0 decided hold-interrupt (hold-preferred event 1)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (hold-preferred event 1)
|
||||
ht_decide: 0 decided hold-interrupt (hold-preferred event 1)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe4 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_released: 0 cleaning up hold-tap
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
ht_binding_pressed: 1 new undecided hold_tap
|
||||
ht_decide: 1 decided tap (tap-preferred event 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
ht_binding_pressed: 0 new undecided hold_tap
|
||||
ht_decide: 0 decided hold (tap-preferred event 3)
|
||||
ht_decide: 0 decided hold-timer (tap-preferred event 3)
|
||||
kp_pressed: usage_page 0x07 keycode 0xe1 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_pressed: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
kp_released: usage_page 0x07 keycode 0x07 implicit_mods 0x00 explicit_mods 0x00
|
||||
|
|
Loading…
Reference in a new issue