Hold-Taps¶
A hold-tap is a behavior that allows a single key to perform two different actions depending on how you press it. If you tap the key briefly, it performs one action (like typing a letter). If you hold the key down, it performs a different action (like activating a modifier such as Shift or changing a layer).
This feature is powerful for creating efficient layouts, as it lets you place more functions on your home row and reduce hand movement.
For full technical details, see the official ZMK documentation: https://zmk.dev/docs/keymaps/behaviors/hold-tap
Creating a Hold-Tap¶
To create a new hold-tap behavior:
- Navigate to the Hold-Taps section in the layout editor.
- Click New Hold-Tap to open the configuration interface.
- Give your hold-tap a descriptive name.
Alternatively, you can clone an existing combo by clicking the
clone icon.
Configuration¶
- Tap behavior: The action performed on a quick tap.
- Hold behavior: The action performed when the key is held down.
You can use most behavior types for hold or tap. However, you cannot
use behaviors that expect more than one parameter (e.g. &bt
, &rgb_ug
)
directly due to ZMK limitations. A common workaround
is to wrap them in a macro, then use the macro as the hold or tap action.
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.
Hold trigger keys¶
To select the trigger keys, use the Keys selector. You can click individual
keys to add or remove them from the selection, or use a lasso to select multiple
keys at once.
Using Hold-Taps in your layout¶
Once you have defined a hold-tap, you can assign it to any key in your layout. Click the behavior type selector in the top-left corner of a key and select your custom hold-tap by the name you gave it.
Parameter forwarding¶
When you assign a hold-tap to a key, you can provide up to two parameters that will be passed on to the behaviors within it.
- The first parameter is passed to the Hold Behavior.
- The second parameter is passed to the Tap Behavior.
Example:
- Suppose your custom hold-tap uses
&mo
(momentary layer) as Hold Behavior and&kp
as Tap Behavior. - Assigning
&my_tap_behavior 1 A
to a key means:- Holding the key will activate layer
1
. - Tapping the key will type
A
.
- Holding the key will activate layer