-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: Sticky key “cancel” key #834
Comments
Another idea... In #829 (comment) this was suggested:
This made me think - when checking if the key being pressed is also sticky, or a modifier, or whatever, it could also check if the key being pressed is itself and then cancel/unstick if so. This would allow for an experience very similar to Callum Oakley's popular one-shot key implementation: https://github.com/callum-oakley/qmk_firmware/blob/master/users/callum/readme.md (documentation link). |
I have improved Callum one-shot key implementation with layers (details here https://blog.ffff.lt/posts/callum-layers/) and found out that potentially I need different cancel keys for one-shot modifiers and one-shot layers. Just to make everything more complicated 😄 |
Well, kinda... this reconfigures my thumb `&mo` keys into a hold-tap: * Hold: Activate the layer (just like `&mo`) * Tap: Send F24 When tapped, any active sticky keys are applied to the F24 keypress and thus "cancelled". (Although the F24 keypress is sent to the host, it is unlikely to be bound to anything in the applications I use.) Unfortunately, this functionality clears sticky keys only when tapping the key, it does not clear them when activating the layer (via hold). Related ZMK GitHub thread: zmkfirmware/zmk#834 This is an attempt to have one-shot functionality closer to Callum's: https://github.com/callum-oakley/qmk_firmware/blob/master/users/callum/readme.md#oneshot-modifiers
Working around this I've faked a cancel function by creating a macro to trigger a F22 tap when hitting any of the thumb layer switches:
|
Current behaviour:
Desired behaviour:
Examples:
With
&kp ESCAPE
configured as cancel key:&sk LSHIFT
,&kp A
= A (uppercase)&sk LSHIFT
,&kp ESC
,&kp A
= a (lowercase)With
&mo NAV
configured as cancel key:&sk LSHIFT
,&mo NAV
,&kp A
= a (lowercase)The text was updated successfully, but these errors were encountered: