fix(behaviors): Properly clean up timed out hold.
* If our handler dedides our undedided hold-tap, return early before continuing.
This commit is contained in:
parent
0b4198d0a6
commit
d1006caf37
4 changed files with 55 additions and 0 deletions
|
@ -612,6 +612,10 @@ static int position_state_changed_listener(const zmk_event_t *eh) {
|
|||
decide_hold_tap(undecided_hold_tap, HT_TIMER_EVENT);
|
||||
}
|
||||
|
||||
if (undecided_hold_tap == NULL) {
|
||||
return ZMK_EV_EVENT_BUBBLE;
|
||||
}
|
||||
|
||||
if (!ev->state && find_captured_keydown_event(ev->position) == NULL) {
|
||||
// no keydown event has been captured, let it bubble.
|
||||
// we'll catch modifiers later in modifier_state_changed_listener
|
||||
|
|
1
app/tests/combo/combos-and-holdtaps-4/events.patterns
Normal file
1
app/tests/combo/combos-and-holdtaps-4/events.patterns
Normal file
|
@ -0,0 +1 @@
|
|||
s/.*hid_listener_keycode_//p
|
|
@ -0,0 +1,4 @@
|
|||
pressed: usage_page 0x07 keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00
|
||||
pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
|
||||
released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00
|
||||
released: usage_page 0x07 keycode 0xE1 implicit_mods 0x00 explicit_mods 0x00
|
46
app/tests/combo/combos-and-holdtaps-4/native_posix_64.keymap
Normal file
46
app/tests/combo/combos-and-holdtaps-4/native_posix_64.keymap
Normal file
|
@ -0,0 +1,46 @@
|
|||
#include <dt-bindings/zmk/keys.h>
|
||||
#include <behaviors.dtsi>
|
||||
#include <dt-bindings/zmk/kscan-mock.h>
|
||||
|
||||
|
||||
#define ZMK_COMBO(name, combo_bindings, keypos, combo_term) \
|
||||
/ { \
|
||||
combos { \
|
||||
compatible = "zmk,combos"; \
|
||||
combo_ ## name { \
|
||||
key-positions = <keypos>; \
|
||||
bindings = <combo_bindings>; \
|
||||
timeout-ms = <combo_term>; \
|
||||
}; \
|
||||
}; \
|
||||
};
|
||||
|
||||
ZMK_COMBO(qmark, &kp QMARK, 0 3, 30)
|
||||
ZMK_COMBO(dllr, &kp DLLR, 1 3, 50)
|
||||
ZMK_COMBO(tilde, &kp TILDE, 3 4, 50)
|
||||
|
||||
/ {
|
||||
keymap {
|
||||
compatible = "zmk,keymap";
|
||||
label = "Default keymap";
|
||||
|
||||
default_layer {
|
||||
bindings = <
|
||||
&none &none
|
||||
&kp A &mt LSHFT T
|
||||
&none
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&kscan {
|
||||
rows = <3>;
|
||||
columns = <2>;
|
||||
events = <
|
||||
ZMK_MOCK_PRESS(1,1,500)
|
||||
ZMK_MOCK_PRESS(1,0,100)
|
||||
ZMK_MOCK_RELEASE(1,0,500)
|
||||
ZMK_MOCK_RELEASE(1,1,0)
|
||||
>;
|
||||
};
|
Loading…
Add table
Reference in a new issue