Skip to content

Merge Fn and Sys into a single layer (system actions on hold) - #6

Draft
andersonba wants to merge 6 commits into
mainfrom
keymap/merge-fn-sys
Draft

Merge Fn and Sys into a single layer (system actions on hold)#6
andersonba wants to merge 6 commits into
mainfrom
keymap/merge-fn-sys

Conversation

@andersonba

Copy link
Copy Markdown
Owner

Summary

Merges the Fn and Sys layers into one. The two were sparse and complementary (Fn = media + F-keys, Sys = bluetooth/bootloader/reset/alpha/lock), so they fit on a single layer without conflicts. Access stays on the Fn combo (LH1+RH1); the old Sys combo (LH0+RH0) is freed.

To avoid mistypes, every former Sys action only fires on hold (tap is inert). Media and F-keys remain plain taps.

Layer layout

 BT0    BT1   BT2   BT3   BTclr      Alpha  F7   F8   F9   F12
 ·      Prev  Play  Next  Boot       Boot   F4   F5   F6   F11
 Lock   Vol-  ·     Vol+  Reset      Reset  F1   F2   F3   F10
  • Left = system + media; right = F-keys + Alpha.
  • BT0–3, BTclr, Boot, Reset, Alpha, Lockhold-only (200ms, hold-preferred).
  • Boot/Reset are duplicated (inner columns of both halves) so either half can enter bootloader/reset.

Implementation notes

  • New HOLD_ONLY(name, action) helper wraps each system action as a hold-tap with tap = &none.
  • &bt takes two params and can't go directly into a hold-tap (ZMK limitation), so it's wrapped: bt_clr (macro) and bt_sel_n (one-param macro for the profile index).
  • Removing the Sys layer reindexes MOUSE (6→5) and SCROLL (7→6). Everything in code uses the layer names, so only the #defines changed — except the one hardcoded index in crosses_right.overlay (layers = <7><6>), updated here.
  • Orphan _LH2_Sys / _RH2_Sys extra-key defines removed.

Affects all boards

config/base.dtsi is shared across Urchin, Corne and Crosses. CI builds all of them.

Not included

  • draw/*.svg were not regenerated (no local keymap-drawer env), so the visualizations still show the old Fn/Sys split.

Draft until the CI build passes (couldn't compile locally — ZMK workspace not set up).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant