1.5 KiB
1.5 KiB
OneShot Keycodes
OneShot keys or sticky keys enable you to have keys that keep staying pressed for a certain time or until another key is pressed and released. If the timeout expires or other keys are pressed, and the sticky key wasn't released, it is handled as a regular key hold.
Enable OneShot Keys
from kmk.modules.oneshot import OneShot
oneshot = OneShot()
# optional: set a custom tap timeout in ms (default: 1000ms)
# oneshot.tap_time = 1500
keyboard.modules.append(oneshot)
Keycodes
Keycode | Aliases | Description |
---|---|---|
KC.OS(KC.ANY) |
KC.ONESHOT |
make a sticky version of KC.ANY |
KC.ONESHOT
accepts any valid key code as argument, including modifiers and KMK
internal keys like momentary layer shifts.
Custom OneShot Behavior
The full OneShot signature is as follows:
KC.OS(
KC.TAP, # the sticky keycode
tap_time=None # length of the tap timeout in milliseconds
)
OneShot Modifier Combinations
The OneShot keys can be chained. In this example if you press OS_LCTL
and then OS_LSFT
followed by KC.TAB
, the output will be ctrl+shift+tab
.
from kmk.modules.oneshot import OneShot
oneshot = OneShot()
keyboard.modules.append(oneshot)
OS_LCTL = KC.OS(KC.LCTL, tap_time=None)
OS_LSFT = KC.OS(KC.LSFT, tap_time=None)
keyboard.keymap = [[OS_LSFT, OS_LCTL, KC.TAB]]