Since firmware 16.1.0, a native implementation of home row mods is now available. No complicated macros needed anymore.
Step 1: Configure your secondary modifiers on your keymap, e.g.
Step 2: Configure your Typing behaviour:
Step 3: Add some additional initialisation in your $onInit macro:
set secondaryRole.advanced.acceptTriggersFromSameHalf false
set secondaryRole.advanced.minimumHoldTime 50
Done!
This implements Level 1-3 of what has been described earlier in this thread, and does somewhat work towards Level 4 – usually good enough for daily usage.
Note: as of today (January 2026), a small bug remains: Shift modifier sometimes missing when layer is activated via secondary action in macro · Issue #1445 · UltimateHackingKeyboard/firmware · GitHub but that will only affect very odd use cases.
P.S. See also the originating thread: HRM/Secondary Role - Yet another way. With examples!


