diff --git a/app/src/leader.c b/app/src/leader.c index 9f90ebf1..ed7e5493 100644 --- a/app/src/leader.c +++ b/app/src/leader.c @@ -324,7 +324,7 @@ static int position_state_changed_listener(const zmk_event_t *ev) { zmk_leader_deactivate(); } } - if (!timerless) { + if (!timerless || num_comp_candidates < num_candidates) { reset_timer(data->timestamp); } } diff --git a/app/tests/leader/behavior_keymap_overlap_timerless.dtsi b/app/tests/leader/behavior_keymap_overlap_timerless.dtsi new file mode 100644 index 00000000..c4c66fa5 --- /dev/null +++ b/app/tests/leader/behavior_keymap_overlap_timerless.dtsi @@ -0,0 +1,37 @@ +#include +#include +#include + +&leader { + timeout-ms = <200>; + timerless; +}; + +/ { + leader-sequences { + compatible = "zmk,leader-sequences"; + + leader_seq_one { + key-positions = <0>; + bindings = <&kp A>; + }; + + leader_seq_two { + key-positions = <0 0>; + bindings = <&kp B>; + }; + + }; + + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &kp N1 &kp N2 + &kp N3 &leader + >; + }; + }; +}; diff --git a/app/tests/leader/overlapping-timerless/events.patterns b/app/tests/leader/overlapping-timerless/events.patterns new file mode 100644 index 00000000..e7381345 --- /dev/null +++ b/app/tests/leader/overlapping-timerless/events.patterns @@ -0,0 +1,2 @@ +s/.*hid_listener_keycode_//p +s/.*zmk_leader.*:/leader:/p diff --git a/app/tests/leader/overlapping-timerless/keycode_events.snapshot b/app/tests/leader/overlapping-timerless/keycode_events.snapshot new file mode 100644 index 00000000..9ab32b1a --- /dev/null +++ b/app/tests/leader/overlapping-timerless/keycode_events.snapshot @@ -0,0 +1,4 @@ +leader: leader key activated +pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 +leader: leader key deactivated diff --git a/app/tests/leader/overlapping-timerless/native_posix_64.keymap b/app/tests/leader/overlapping-timerless/native_posix_64.keymap new file mode 100644 index 00000000..ce1258f7 --- /dev/null +++ b/app/tests/leader/overlapping-timerless/native_posix_64.keymap @@ -0,0 +1,10 @@ +#include "../behavior_keymap_overlap_timerless.dtsi" + +&kscan { + events = < + ZMK_MOCK_PRESS(1,1,10) + ZMK_MOCK_RELEASE(1,1,10) + ZMK_MOCK_PRESS(0,0,10) + ZMK_MOCK_RELEASE(0,0,2000) + >; +};