From efa497c69b813852d3704dbd96207f1186eb941a Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Sun, 7 Mar 2021 14:50:30 +0100 Subject: fix(behaviors): Fix timing of delayed hold-tap trigger A hold-tap timer event would be triggered too soon if the hold-tap was delayed for longer than its tapping-term. This may cause accidental hold behavior when the correct behavior would be tap. By queuing the timer event instead of executing it immediately, other delayed events get a chance to be processed properly. --- .../6-nested-timeouts/native_posix.keymap | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 app/tests/hold-tap/tap-preferred/6-nested-timeouts/native_posix.keymap (limited to 'app/tests/hold-tap/tap-preferred/6-nested-timeouts/native_posix.keymap') diff --git a/app/tests/hold-tap/tap-preferred/6-nested-timeouts/native_posix.keymap b/app/tests/hold-tap/tap-preferred/6-nested-timeouts/native_posix.keymap new file mode 100644 index 0000000..adbd648 --- /dev/null +++ b/app/tests/hold-tap/tap-preferred/6-nested-timeouts/native_posix.keymap @@ -0,0 +1,53 @@ +#include +#include +#include + +/* +* A hold-tap with long tapping term is pressed first. +* A hold-tap with short tapping term is quickly tapped. +* The short tapping term hold-tap should 'tap', not 'hold'. +*/ + +/ { + behaviors { + tp_short: short_tap { + compatible = "zmk,behavior-hold-tap"; + label = "MOD_TAP_SHORT"; + #binding-cells = <2>; + flavor = "tap-preferred"; + tapping-term-ms = <100>; + quick-tap-ms = <200>; + bindings = <&kp>, <&kp>; + }; + tp_long: long_tap { + compatible = "zmk,behavior-hold-tap"; + label = "MOD_TAP_LONG"; + #binding-cells = <2>; + flavor = "tap-preferred"; + tapping-term-ms = <200>; + quick-tap-ms = <200>; + bindings = <&kp>, <&kp>; + }; + }; + + keymap { + compatible = "zmk,keymap"; + label ="Default keymap"; + + default_layer { + bindings = < + &tp_long LEFT_SHIFT F &tp_short LEFT_CONTROL J + &kp D &kp RIGHT_CONTROL>; + }; + }; +}; + + +&kscan { + events = < + ZMK_MOCK_PRESS(0,0,20) + ZMK_MOCK_PRESS(0,1,20) + ZMK_MOCK_RELEASE(0,1,200) + ZMK_MOCK_RELEASE(0,0,10) + >; +}; \ No newline at end of file -- cgit v1.2.3