Skip to main content

Combo Configuration

See the Combos feature page for more details and examples.

See Configuration Overview for instructions on how to change these settings.

Kconfig

Definition file: zmk/app/Kconfig

ConfigTypeDescriptionDefault
CONFIG_ZMK_COMBO_MAX_PRESSED_COMBOSintMaximum number of combos that can be active at the same time4
CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEYintMaximum number of active combos that use the same key position5
CONFIG_ZMK_COMBO_MAX_KEYS_PER_COMBOintMaximum number of keys to press to activate a combo4

If CONFIG_ZMK_COMBO_MAX_COMBOS_PER_KEY is 5, you can have 5 separate combos that use position 0, 5 combos that use position 1, and so on.

If you want a combo that triggers when pressing 5 keys, you must set CONFIG_ZMK_COMBO_MAX_KEYS_PER_COMBO to 5.

Devicetree

Applies to: compatible = "zmk,combos"

Definition file: zmk/app/dts/bindings/zmk,combos.yaml

The zmk,combos node itself has no properties. It should have one child node per combo.

Each child node can have the following properties:

PropertyTypeDescriptionDefault
bindingsphandle-arrayA behavior to run when the combo is triggered
key-positionsarrayA list of key position indices for the keys which should trigger the combo
timeout-msintAll the keys in key-positions must be pressed within this time in milliseconds to trigger the combo50
require-prior-idle-msintIf any non-modifier key is pressed within require-prior-idle-ms before a key in the combo, the key will not be considered for the combo-1 (disabled)
slow-releaseboolReleases the combo when all keys are released instead of when any key is releasedfalse
layersarrayA list of layers on which the combo may be triggered. -1 allows all layers.<-1>

The key-positions array must not be longer than the CONFIG_ZMK_COMBO_MAX_KEYS_PER_COMBO setting, which defaults to 4. If you want a combo that triggers when pressing 5 keys, then you must change the setting to 5.