feat(keymap): expand CODE layer with 24 programming macros + |> combo#13
Merged
feat(keymap): expand CODE layer with 24 programming macros + |> combo#13
Conversation
Owner
Author
Interaction log — implementation from locked planUser request: proceed with implementation from the decisions locked in #12. Changes in this push:
Non-obvious rationale:
Action item from #12 still pending: check the GH Actions build log for flash usage on both halves and record baseline numbers as a follow-up comment on #12. |
Adds 24 multi-char / auto-paired macros on the CODE layer, grouped by
category across both hands:
- Arrows (home row left): -> => <- |>
- Brackets/quotes (home row right): () [] {} "" (auto-paired, cursor between)
- Comparisons (bottom row left): == != <= >=
- Elixir sigils (top row left): ~s() ~w() ~r// ~D[] (cursor between delims)
- Rust cluster (top row right): dbg!() todo!() ::<> |_| ::
- HEEx (bottom row right): <> { } <% %> (cursor-positioning)
Adds a base-layer combo on BSLH+DOT (| + . mnemonic, 40ms) that fires
the |> macro — zero layer-hop for the most-typed Elixir sequence.
Extends caps_word continue-list with common code punctuation so
SCREAMING_SNAKE_CASE survives ::, =, ==, comparison ops, etc.
Refs #12
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds eyelash_sofle/, zephyr/, and .claude/settings.local.json to .gitignore. These are all build-environment artifacts (vendor board source, Zephyr tree, personal machine settings) that shouldn't be tracked. Project skills under .claude/commands/ remain tracked. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
f692bc7 to
1d578ba
Compare
Preserves user's muscle memory for the single-char brackets / mod-tap
combos on CODE layer left hand (rows 2-3). The new 24 macros are now
distributed across row 0 (num row), row 1 (top), and the right hand
on rows 2-3.
- Row 0: Elixir sigils + <> (left), HEEx macros (right)
- Row 1: arrows cluster (left), Rust cluster (right)
- Row 2 left: GRAVE LBRC mt(LALT,RBRC) mt(LCTRL,LBKT) mt(LSHFT,RBKT) PLUS (UNCHANGED)
- Row 2 right: auto-paired brackets () [] {} ""
- Row 3 left: MINUS UNDER LPAR RPAR EQUAL (UNCHANGED)
- Row 3 right: comparisons == != <= >=
No change to macro definitions, combo, or caps_word override.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
github-actions Bot
pushed a commit
that referenced
this pull request
Apr 11, 2026
…> combo (#13) * feat(keymap): expand CODE layer with 24 programming macros + |> combo Adds 24 multi-char / auto-paired macros on the CODE layer, grouped by category across both hands: - Arrows (home row left): -> => <- |> - Brackets/quotes (home row right): () [] {} "" (auto-paired, cursor between) - Comparisons (bottom row left): == != <= >= - Elixir sigils (top row left): ~s() ~w() ~r// ~D[] (cursor between delims) - Rust cluster (top row right): dbg!() todo!() ::<> |_| :: - HEEx (bottom row right): <> { } <% %> (cursor-positioning) Adds a base-layer combo on BSLH+DOT (| + . mnemonic, 40ms) that fires the |> macro — zero layer-hop for the most-typed Elixir sequence. Extends caps_word continue-list with common code punctuation so SCREAMING_SNAKE_CASE survives ::, =, ==, comparison ops, etc. Refs #12 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: ignore west vendor sources and local Claude settings Adds eyelash_sofle/, zephyr/, and .claude/settings.local.json to .gitignore. These are all build-environment artifacts (vendor board source, Zephyr tree, personal machine settings) that shouldn't be tracked. Project skills under .claude/commands/ remain tracked. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fixup(keymap): restore original CODE layer left-hand bindings Preserves user's muscle memory for the single-char brackets / mod-tap combos on CODE layer left hand (rows 2-3). The new 24 macros are now distributed across row 0 (num row), row 1 (top), and the right hand on rows 2-3. - Row 0: Elixir sigils + <> (left), HEEx macros (right) - Row 1: arrows cluster (left), Rust cluster (right) - Row 2 left: GRAVE LBRC mt(LALT,RBRC) mt(LCTRL,LBKT) mt(LSHFT,RBKT) PLUS (UNCHANGED) - Row 2 right: auto-paired brackets () [] {} "" - Row 3 left: MINUS UNDER LPAR RPAR EQUAL (UNCHANGED) - Row 3 right: comparisons == != <= >= No change to macro definitions, combo, or caps_word override. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
rdlu
added a commit
that referenced
this pull request
Apr 11, 2026
Updates the three project skills to match reality after PR #13-16: - edit-keymap: create-or-update PR with --assignee rdlu + --label keymap; pull main after [Draw Keymap] workflow; new 'Local iteration loop' section for edit→draw→build→flash experimentation without CI. - adjust-timing: same PR hygiene + same local iteration guidance, since timing tuning is always faster locally than through CI. - build-flash: lead with 'mise run flash-release' (one-command from GH Actions). Add a prominent ZMK Studio overlay warning with the reset→normal two-step fix (covers both local and release variants). Local build/flash section updated to describe the new wait-for-mount behavior of flash-left / flash-right / flash-reset. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
rdlu
added a commit
that referenced
this pull request
Apr 11, 2026
* chore(mise): flash-left/right/reset wait for NICENANO mount Previously these tasks ran a bare 'cp' to /run/media/\$USER/NICENANO/, which silently fails if the device isn't in bootloader mode yet. Now each task: - Verifies the locally-built uf2 exists (errors clearly if not) - Prints a prompt to double-tap RESET - Polls for the NICENANO mount up to 60s - Copies the uf2 and syncs - Prints a success marker Matches the behavior of flash-release / flash-release-reset added in the previous chore. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: promote mise flash tasks in README, move manual flow to FLASHING_MANUAL.md - README 'Flashing' section now leads with 'mise run flash-release' as the one-command happy path. Adds a prominent section about ZMK Studio overlay persistence and the settings_reset-then-normal-flash fix (this gotcha cost an hour of confusion this afternoon). - Building-locally section updated to describe the new wait-for-mount behavior of flash-left / flash-right / flash-reset. - New FLASHING_MANUAL.md documents the drag-and-drop fallback flow for users without mise/gh, plus the same Studio overlay warning, plus troubleshooting for common flashing issues. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs(skills): add PR hygiene, flash-release, Studio warning, local loop Updates the three project skills to match reality after PR #13-16: - edit-keymap: create-or-update PR with --assignee rdlu + --label keymap; pull main after [Draw Keymap] workflow; new 'Local iteration loop' section for edit→draw→build→flash experimentation without CI. - adjust-timing: same PR hygiene + same local iteration guidance, since timing tuning is always faster locally than through CI. - build-flash: lead with 'mise run flash-release' (one-command from GH Actions). Add a prominent ZMK Studio overlay warning with the reset→normal two-step fix (covers both local and release variants). Local build/flash section updated to describe the new wait-for-mount behavior of flash-left / flash-right / flash-reset. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the CODE layer expansion plan locked in #12 (comment). Adds 24 programming-oriented macros to the CODE layer (layer_2), a base-layer combo for the Elixir pipe operator, and extends caps_word to survive common code punctuation. All pre-existing CODE layer bindings on rows 2–3 left hand are preserved unchanged.
Closes #12
Rendered keymap
Final CODE layer layout
~s()·~w()·~r//·~D[]·<>{ }·<% %><-·|>·->·=>::·|_|·dbg!()·todo!()·::<>`·{·}(LALT) ·[(LCTRL) ·](LSHFT) ·+(unchanged)()·[]·{}·""-·_·(·)·=(unchanged)==·!=·<=·>=()[]{}"") land the cursor between the delimiters~s()~w()~r//~D[]) and cursor macros (::<>dbg!()todo!(){ }<% %>) reposition cursor after emission<-|>->=>with|>on middle finger (E position),->on index (R position)::(strongest finger) ·|_|·dbg!()·todo!()·::<>|>base-layer comboBSLH+DOTpositions (|+.mnemonic), 40ms timeout, scoped to layer 0|>macro (singleM_PIPEdefinition used by both)layers = <0>) so pressing both while holding CODE does NOT fire the combo — CODE layer|>key takes precedencecaps_word continue-list extension
&caps_wordoverride adds code punctuation to the default continue-list:EQUAL SEMICOLON COMMA PERIOD BACKSLASH GRAVE LEFT_BRACKET RIGHT_BRACKET APOSTROPHE SLASHThis preserves CapsWord across
::,=,==,<=,->,<>, brackets, etc. so SCREAMING_SNAKE_CASE identifiers survive mid-symbol edits. Space is intentionally NOT in the continue-list (normal CapsWord termination preserved)..gitignore housekeeping
Separate chore commit adds
eyelash_sofle/,zephyr/, and.claude/settings.local.jsonto.gitignore. These are west-managed vendor sources and personal machine settings. Project skills under.claude/commands/remain tracked.Test plan
Memory region/ flash usage in build log — record baseline (per issue Expand CODE layer with more programming symbols and multi-char macros #12 action item: <70% ideal, 70–85% ok, >85% revisit)|>base combo fires reliably without false-triggering on normal typingFOO_BAR :: u32 = 10style identifiersNotes
::Rust combo, gaming layers) tracked there00eef54🤖 Generated with Claude Code