zmk/app/tests/sticky-keys/12-no-sticky-after-hold/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

57 lines
1.3 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 are deactivated immediately upon
* release after being held for longer than `no-sticky-after-hold-ms`.
*/
&sk {
no-sticky-after-hold-ms = <200>;
};
&sl {
no-sticky-after-hold-ms = <200>;
};
/ {
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,400)
// Release &sk E
ZMK_MOCK_RELEASE(0,0,10)
// &sk E should now be deactivated
// Tap &kp A right after
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
// Hold &sl 1 past no-sticky-after-hold-ms
ZMK_MOCK_PRESS(0,1,400)
// Release &sl 1
ZMK_MOCK_RELEASE(0,1,10)
// &sl 1 should now be deactivated
// Tap &kp A right after
ZMK_MOCK_PRESS(1,0,10)
ZMK_MOCK_RELEASE(1,0,10)
>;
};