zmk/app/tests/sticky-keys/11-active-until-release/native_posix_64.keymap
down 95185e384d feat(behaviors): sticky keys no longer sticky after being held
Sticky keys that are pressed down for longer than
`no-sticky-after-hold-ms` will immediately deactivate upon release. If
the property `no-sticky-after-hold-ms` does not exist, the value of
`release-after-ms` will be used as a fallback.
2023-11-22 15:16:29 +07:00

49 lines
1.2 KiB
Text

#include <dt-bindings/zmk/keys.h>
#include <behaviors.dtsi>
#include <dt-bindings/zmk/kscan_mock.h>
#include "../behavior_keymap.dtsi"
/* This test ensures that sticky keys remain active while being pressed. */
/ {
keymap {
compatible = "zmk,keymap";
label ="Default keymap";
default_layer {
bindings = <
&sk E &sl 1
&kp A &kp B>;
};
lower_layer {
bindings = <
&sk LEFT_CONTROL &kp X
&kp Y &kp Z>;
};
};
};
&kscan {
events = <
// Hold &sk E past no-sticky-after-hold-ms
ZMK_MOCK_PRESS(0,0,1200)
// Tap &kp A twice
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
// &sk E should remain active before releasing
ZMK_MOCK_RELEASE(0,0,10)
// Hold &sl 1 past no-sticky-after-hold-ms
ZMK_MOCK_PRESS(0,1,1200)
// Tap &kp Y twice
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
// &sl 1 should remain active before releasing
ZMK_MOCK_RELEASE(0,1,10)
>;
};