Combos¶
A combo is a way to trigger a behavior by pressing multiple keys simultaneously.
For example, you could configure pressing A
and S
at the same time to trigger
the Escape key.
This feature is powerful for creating efficient layouts, as it lets you place more functions on your home row and reduce hand movement.
Please note that combos are based on physical key positions, not the characters.
For full technical details, see the official ZMK documentation: https://zmk.dev/docs/features/combos
Creating a Combo¶
To create a new combo:
- Navigate to the Combos section in the layout editor.
- Click New Combo to open the configuration interface.
- Give your combo a descriptive name.
Alternatively, you can clone an existing combo by clicking the
clone icon.
Configuration¶
- Timeout: The time in milliseconds within which all keys in the combo must be pressed.
- Trigger Keys: The set of keys that must be pressed to activate the combo.
- Behavior: The action performed when the combo is triggered.
- Layers: You can restrict the combo to specific layers. By default, it is global.
Interface notes
- User-friendly names are used where possible, which map to ZMK’s underlying options. If you prefer seeing ZMK-specific names instead, you can turn on the ZMK terms for labels checkbox.
- Default values are marked with a
*
symbol.
Trigger keys¶
There are limitations on how many keys can be used in a combo.
By default, ZMK supports:
- A maximum of 4 keys per combo (
COMBO_MAX_KEYS_PER_COMBO
). - A maximum of 5 combos that can share any given key (
COMBO_MAX_COMBOS_PER_KEY
).
If you need to exceed these limits, you can override these values in the Advanced Configuration section.
Advanced Options¶
- Slow Release: By default, the combo is released as soon as any of the
trigger keys is released. If you enable
Slow release
, the combo binding will be held until all trigger keys are released. - Require Prior Idle: You can specify a
Require prior idle
value. If any non-modifier key is pressed within this time before a key in the combo, the combo will not trigger. This can help prevent accidental combo triggers from fast typing.
Interaction with time-sensitive behaviors
Be careful when using time-sensitive behaviors (e.g. &mt
, <
or Hold-Taps)
on the same keys as a combo. Since both features depend on specific timings,
they can interfere with each other and lead to unpredictable outcomes.
To ensure reliable behavior, it is recommended to set the combo's Timeout
to a value shorter than the hold-tap's tapping-term-ms
.
Using Combos in your layout¶
Once you have defined a combo, it is active. There is no need to assign it to a key. As long as the conditions are met (the correct keys are pressed within the timeout on the correct layer), the combo will trigger.