Move home-row mods to bottom row to unblock NAV arrow repeat#6
Move home-row mods to bottom row to unblock NAV arrow repeat#6
Conversation
Hold-trigger-on-release made the home-row mods' dispatch interact with momentary-layer overrides in a way that suppressed OS auto-repeat for &kp LEFT/DOWN/UP on NAV (positions over hmr H/J/K). RIGHT (over plain L) was unaffected, confirming the hold-tap was the culprit. Tracking: #5 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
What changed in this sessionRequest: make NAV layer + LEFT arrow auto-repeat when held. RIGHT already repeats. Diagnosis: RIGHT is at position 36 over base Change: removed Rationale for not picking other options from #5: option 1 (relocate arrows) disrupts hjkl muscle memory; option 4 (leave it) doesn't fix anything. Option 3 is a one-line change that preserves layout and is easy to revert if home-row mod feel regresses. Next: flashing this build and testing. If LEFT/DOWN/UP now repeat and mods still feel right, this ships. If mods feel sluggish or over-eager, fall back to option 1. |
Option 3 (dropping hold-trigger-on-release) didn't feel right during normal typing — falling back to option 1 from #5. Home-row mods now live on the row below their original home-row positions: Left: hml LCTRL C · hml LSHFT V · hml LALT B (was D/F/G) Right: hmr LALT N · hmr RSHFT M · hmr RCTRL , (was H/J/K) D/F/G and H/J/K are now plain &kp on base, so NAV layer arrow keys at positions 33-35 no longer sit over a hold-tap — OS auto-repeat should work for LEFT/DOWN/UP. hold-trigger-on-release is restored on hml/hmr — we no longer need to disable it since the root cause (positional overlap with NAV arrows) is resolved structurally. CODE layer: mod-tap wrappers moved to match. LBKT/RBKT/PLUS are now plain kp on D/F/G; LPAR/RPAR/EQUAL on C/V/B carry the LCTRL/LSHFT/LALT holds. Tracking: #5
Session update — follow-up fixCanary (dropping Change: home-row mods now live on the row below, vertically aligned with their old positions — CODE layer: the Rationale for this shape vs. relocating arrows: moving three mod-tap wrappers one row down is less disruptive than moving the arrow cluster into a different visual layout on NAV. The arrow-on-home-row mental model is preserved, and all hold-tap timing stays untuned. |
Fixes NAV layer auto-repeat (#5) by moving the vim-style arrow cluster from row 2 (over home-row mods) to row 3 (over plain N/M/,/.). Also refines home-row-mod finger positions: LALT moves from G/H (index reach) to S/L (ring finger), RALT moves from T/Y to R/U (index home), both to fix mistyping. CODE layer mod-tap wrappers updated to match. Supersedes #6, #8, #9. Explored in #7.
Fixes NAV layer auto-repeat (#5) by moving the vim-style arrow cluster from row 2 (over home-row mods) to row 3 (over plain N/M/,/.). Also refines home-row-mod finger positions: LALT moves from G/H (index reach) to S/L (ring finger), RALT moves from T/Y to R/U (index home), both to fix mistyping. CODE layer mod-tap wrappers updated to match. Supersedes #6, #8, #9. Explored in #7.
Summary
hml LCTRL C·hml LSHFT V·hml LALT B(was D / F / G)hmr LALT N·hmr RSHFT M·hmr RCTRL ,(was H / J / K)&kp, so NAV layer arrows at positions 33–35 no longer sit over a hold-tap. OS auto-repeat works for LEFT / DOWN / UP.mt LCTRL LPAR·mt LSHFT RPAR·mt LALT EQUALon C / V / B. LBKT / RBKT / PLUS on D / F / G become plain&kp.hold-trigger-on-releaseis restored onhml/hmr— the root cause (positional overlap with NAV arrows) is now fixed structurally, so we don't need to loosen the hold-tap dispatch.Why this shape
Dropping
hold-trigger-on-release(the original canary approach) fixed auto-repeat but made the mods feel wrong during normal typing. This change solves the repeat problem at the layout level instead: once the arrow positions are no longer backed by a hold-tap, every hold-tap tuning knob stays at its original value.Trade-off: bottom-row mods vs. home-row mods. The vertical-column mapping preserves which finger activates which modifier (middle-finger LCTRL, index-finger LSHFT, index-reach LALT), so muscle memory mostly transfers.
Test plan
[]+on D / F / G and()=on C / V / B (with mods on hold)🤖 Generated with Claude Code