OneShot Keycodes
[!WARNING] OneShot Keys have been deprecated in favor of Sticky Keys and will be removed at a future date.
OneShot 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 OneShot 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 oneshot 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 oneshot 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]]