From 5e5b0d6a3d10b16ac2b842f1d528777bdcc6c9cd Mon Sep 17 00:00:00 2001 From: simsalaba Date: Wed, 29 Apr 2026 10:14:53 +0200 Subject: [PATCH 1/2] Optimize keyboard responsiveness - Debounce press: 5ms -> 1ms (eager press, react on first contact) - Add BT min interval = 6 (lock both min/max for consistent low latency) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- config/corne.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/corne.conf b/config/corne.conf index f89c6cd..7cefbb9 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -18,7 +18,8 @@ CONFIG_ZMK_SLEEP=y CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=1800000 -CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=5 +CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=1 CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5 +CONFIG_BT_PERIPHERAL_PREF_MIN_INT=6 CONFIG_BT_PERIPHERAL_PREF_MAX_INT=6 CONFIG_BT_CTLR_TX_PWR_PLUS_8=y From 08c86a8d970ade8e0de660180ae2a7de0f989771 Mon Sep 17 00:00:00 2001 From: simsalaba Date: Wed, 29 Apr 2026 10:26:44 +0200 Subject: [PATCH 2/2] Adopt urob's timeless HRMs, harden gaming combo, add UX improvements - Switch HRM flavor from tap-preferred to balanced with hold-trigger-on-release - Increase tapping-term to 280ms, quick-tap to 175ms, prior-idle to 150ms - Fix HRM swap bug: left hand now uses hml, right hand uses hmr - Add undo (Z+X), cut (V+X), caps word (G+H), sticky shift (Space+Enter) combos - Implement tri-layer: NUM + CHARS simultaneously activates Adjust - Add word-jump keys (Ctrl+Left/Right) to Nav layer - Harden gaming toggle combo: 25ms window + 500ms require-prior-idle - Update KEYMAP.md with comprehensive documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- KEYMAP.md | 268 ++++++++++++++++++++++++++++++++++++++++++++ config/corne.keymap | 62 ++++++---- 2 files changed, 306 insertions(+), 24 deletions(-) create mode 100644 KEYMAP.md diff --git a/KEYMAP.md b/KEYMAP.md new file mode 100644 index 0000000..b409097 --- /dev/null +++ b/KEYMAP.md @@ -0,0 +1,268 @@ +# Corne Keyboard Layout Guide + +> **Board:** nice!nano v2 ยท **Shield:** Corne (42 keys) ยท **Displays:** nice!view +> **OS Layout:** Swedish (SE) โ€” keycodes map to Swedish characters at OS level + +--- + +## ๐Ÿ”Œ Flashing Firmware + +1. Download both `.uf2` files from the latest GitHub Actions build +2. Connect one half via USB +3. **Double-tap the reset button** โ†’ a USB drive called `NICENANO` appears +4. Drag the matching `.uf2` file onto the drive โ†’ it auto-reboots +5. Repeat for the other half + +> Flash each half separately. Left half = `corne_left`, right half = `corne_right`. + +--- + +## ๐Ÿ—บ๏ธ Layer Overview + +| # | Name | Purpose | How to activate | +|---|------------|----------------------------|-------------------------------------------| +| 0 | **Main** | Letters, home row mods | Default layer | +| 1 | **Numbers**| Number pad + numlock | Hold left thumb middle key | +| 2 | **Symbols**| Special characters | Hold right thumb middle key | +| 3 | **Navi** | Arrow keys, page nav | Hold E (tap-hold) | +| 4 | **Adjust** | Bluetooth, media, brightness | **Tri-layer:** hold NUM + CHARS together | +| 5 | **Func** | F1โ€“F12 keys | Hold B (tap-hold) | +| 6 | **Tiling** | Window tiling (RC+RA combos) | Hold R (tap-hold) | +| 7 | **Game** | Gaming mode (no left HRMs) | Combo: press U + P together | + +--- + +## โŒจ๏ธ Layer 0: Main + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ESC โ”‚ Q โ”‚ W โ”‚E/NAV โ”‚R/WIN โ”‚ T โ”‚ โ”‚ Y โ”‚ U โ”‚ I โ”‚ O โ”‚ P โ”‚ DEL โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚CT/Tabโ”‚ A โ”‚S/Alt โ”‚D/Shftโ”‚F/Ctrlโ”‚ G โ”‚ โ”‚ H โ”‚J/Ctrlโ”‚K/Shftโ”‚L/Alt โ”‚ ร– โ”‚ ร… โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ SHFT โ”‚ Z โ”‚ X โ”‚ C โ”‚ V โ”‚B/FUNCโ”‚ โ”‚ N โ”‚ M โ”‚ . โ”‚ , โ”‚ โ”‚ ร„ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ GUI โ”‚ NUM โ”‚ SPC โ”‚ โ”‚ ENT โ”‚CHARS โ”‚ BKSP โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +### Home Row Mods (S, D, F / J, K, L) + +The middle three keys on each home row side double as modifiers when **held**: + +| Key | Tap | Hold | +|-----|-------|---------| +| S | s | Left Alt| +| D | d | Left Shift| +| F | f | Left Ctrl| +| J | j | Right Ctrl| +| K | k | Right Shift| +| L | l | Right Alt| + +**How they work:** These use urob's "timeless" homerow mod approach with `balanced` flavor โ€” the modifier activates when you hold the key AND press+release another key on the **opposite** hand. You don't need to wait for any timer. During normal typing, `require-prior-idle` ensures no delays or misfires. + +**Timing tuning (based on [urob's timeless HRMs](https://github.com/vqc/zmk-config-hmr-example)):** +- `flavor`: balanced โ€” mod triggers on cross-hand press+release, not on timer expiry +- `hold-trigger-on-release`: allows combining multiple mods on the same hand +- `tapping-term`: 280ms โ€” intentionally large; makes behavior timer-insensitive +- `quick-tap`: 175ms โ€” rapid same-key repeats always produce taps (e.g., `ll`) +- `require-prior-idle`: 150ms โ€” if you typed any key less than 150ms ago, it always types the letter + +--- + +## ๐Ÿ”ข Layer 1: Numbers + +Activated by holding the **left thumb middle key** (NUM). + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ESC โ”‚ โ”‚ โ”‚ โ”‚ โ”‚NumLckโ”‚ โ”‚ / โ”‚ 7 โ”‚ 8 โ”‚ 9 โ”‚ - โ”‚ BKSP โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚CT/Tabโ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ * โ”‚ 4 โ”‚ 5 โ”‚ 6 โ”‚ , โ”‚ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ SHFT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ 1 โ”‚ 2 โ”‚ 3 โ”‚ = โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚(held)โ”‚ TAB โ”‚ โ”‚ โ”‚CHARS โ”‚ 0 โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +> **Tri-layer:** While holding NUM, also hold CHARS (right thumb) โ†’ activates **Adjust** layer. + +--- + +## ๐Ÿ”ฃ Layer 2: Symbols + +Activated by holding the **right thumb middle key** (CHARS). + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ & โ”‚ * โ”‚ @ โ”‚ { โ”‚ } โ”‚ | โ”‚ โ”‚ + โ”‚ - โ”‚ โ”‚ โ”‚ = โ”‚ DEL โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ # โ”‚ โ”‚ $ โ”‚ ( โ”‚ ) โ”‚ ` โ”‚ โ”‚ ! โ”‚ _ โ”‚ โ”‚ / โ”‚ \ โ”‚ ' โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ % โ”‚ โ”‚ ^ โ”‚ [ โ”‚ ] โ”‚ ~ โ”‚ โ”‚ ? โ”‚ = โ”‚ , โ”‚ < โ”‚ > โ”‚ " โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ โ”‚ NUM โ”‚ โ”‚ โ”‚ โ”‚(held)โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +> **Tri-layer:** While holding CHARS, also hold NUM (left thumb) โ†’ activates **Adjust** layer. + +--- + +## ๐Ÿงญ Layer 3: Navigation + +Activated by **holding E** on the main layer. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚PG DN โ”‚ โ†‘ โ”‚PG UP โ”‚ โ”‚PrtScnโ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ CTRL โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚โ†WORD โ”‚ โ† โ”‚ โ†“ โ”‚ โ†’ โ”‚WORDโ†’ โ”‚CAPS โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ SHFT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ HOME โ”‚ โ”‚ END โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ GUI โ”‚ โ”‚ ALT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**Word-jump:** The keys flanking the arrow cluster (โ†WORD and WORDโ†’) send `Ctrl+Left` and `Ctrl+Right`, letting you jump word-by-word through text. + +--- + +## โš™๏ธ Layer 4: Adjust (Tri-layer) + +Activated by holding **NUM + CHARS** simultaneously (both thumb middle keys). + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ BT 0 โ”‚ BT 1 โ”‚ BT 2 โ”‚ BT 3 โ”‚ BT 4 โ”‚ โ”‚BT CLRโ”‚ REW โ”‚ โ”‚ FFWD โ”‚BRI โ†‘โ”‚VOL โ†‘โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ PREV โ”‚ PLAY โ”‚ NEXT โ”‚BRI โ†“โ”‚VOL โ†“โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ MUTE โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ GUI โ”‚ โ”‚ ALT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**Bluetooth:** BT 0โ€“4 selects a profile. BT CLR clears the current profile's pairing. + +--- + +## ๐ŸŽฏ Layer 5: Function Keys + +Activated by **holding B** on the main layer. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ F7 โ”‚ F8 โ”‚ F9 โ”‚ F12 โ”‚PrtScnโ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ CTRL โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ F6 โ”‚ F5 โ”‚ F4 โ”‚ F11 โ”‚CAPS โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ SHFT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ F3 โ”‚ F2 โ”‚ F1 โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ GUI โ”‚ โ”‚ ALT โ”‚ โ”‚ โ”‚ โ”‚ F10 โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## ๐ŸชŸ Layer 6: Tiling (Window Management) + +Activated by **holding R** on the main layer. Uses `Ctrl+Alt+key` shortcuts for a tiling window manager. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ + โ”‚ UL โ”‚ UP โ”‚ UR โ”‚ F12 โ”‚PrtScnโ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ CTRL โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ML โ”‚ MID โ”‚ MR โ”‚ F11 โ”‚CAPS โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ SHFT โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ - โ”‚ BL โ”‚ DN โ”‚ BR โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”ฌโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ GUI โ”‚ โ”‚ ALT โ”‚ โ”‚ โ”‚ โ”‚ F10 โ”‚ + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +Positions: UL=Upper Left, UP=Upper Middle, UR=Upper Right, ML=Middle Left, MID=Center, MR=Middle Right, BL=Bottom Left, DN=Bottom Middle, BR=Bottom Right. `+`/`-` grow/shrink windows. + +--- + +## ๐ŸŽฎ Layer 7: Gaming + +Toggle on/off with **U + P** combo (press both simultaneously). + +Same as Main layer but **left hand home row mods are disabled** โ€” S, D, F type letters directly with no hold delay. This is essential for WASD gaming. Right hand still has HRMs. + +--- + +## โšก Combos (press keys simultaneously) + +| Keys | Action | Where it works | +|----------------|--------------------|-----------------------| +| **Z + X** | Undo (Ctrl+Z) | All layers except Game| +| **X + C** | Copy (Ctrl+C) | All layers except Game| +| **C + V** (V+C)| Paste (Ctrl+V) | All layers except Game| +| **V + X** | Cut (Ctrl+X) | All layers except Game| +| **U + P** | Toggle Gaming mode | Main and Game (must pause typing 500ms first, press within 25ms) | +| **G + H** | Caps Word | Main and Game layers | +| **Space + Enter** | Sticky Shift | Main and Game layers | + +> **Combo timeout:** 40ms โ€” press both keys within this window. + +--- + +## ๐Ÿง  Special Behaviors + +### Caps Word (G + H) + +Temporarily activates caps lock for **one word only**. Perfect for typing `CONSTANT_NAMES`: + +1. Press **G + H** together โ†’ caps word activates +2. Type your word โ€” all letters come out UPPERCASE +3. It automatically deactivates when you press space, enter, or any non-letter/non-underscore key + +Example: `G+H` then type `my_constant` โ†’ outputs `MY_CONSTANT` + +### Sticky Shift (Space + Enter) + +One-shot shift โ€” press the combo, then the **next single keypress** will be shifted: + +1. Press **Space + Enter** together (left and right thumb keys) +2. Type one character โ†’ it comes out shifted (uppercase or symbol) +3. Shift automatically deactivates after that one keypress + +Useful for capitalizing a single letter without holding shift. + +### Tri-layer (NUM + CHARS โ†’ Adjust) + +Instead of needing a dedicated key for the Adjust layer, just hold both layer keys: + +1. Hold **left thumb middle** (NUM layer active) +2. While still holding, also hold **right thumb middle** โ†’ **Adjust** layer activates +3. Release either thumb โ†’ drops back to Numbers or Symbols + +--- + +## โšก Performance Settings + +Located in `config/corne.conf`: + +| Setting | Value | Purpose | +|---------|-------|---------| +| Press debounce | 1ms | Near-instant key registration (eager debounce) | +| Release debounce | 5ms | Standard release filtering | +| BT min interval | 6 | Locks BT polling for consistent wireless latency | +| Sleep timeout | 30 min | Deep sleep after inactivity to save battery | + +--- + +## ๐Ÿ“ File Structure + +``` +config/ +โ”œโ”€โ”€ corne.keymap # All layers, behaviors, combos +โ”œโ”€โ”€ corne.conf # Board settings (debounce, BT, sleep) +โ””โ”€โ”€ west.yml # ZMK and module dependencies +build.yaml # CI build matrix (board/shield combos) +``` diff --git a/config/corne.keymap b/config/corne.keymap index 278b91f..94abe1e 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -33,32 +33,46 @@ #define HOST_OS LINUX // Needed for unicode international_chars +// "Timeless" homerow mods (based on urob's config) +// - balanced flavor: mod activates when another key is pressed+released while holding +// - hold-trigger-on-release: allows combining mods on same hand, prevents rolling misfires +// - 280ms tapping-term: large value makes behavior timer-insensitive +// - 175ms quick-tap: rapid same-key repeats always produce taps +// - 150ms require-prior-idle: eliminates delay during fast typing ZMK_BEHAVIOR(hml, hold_tap, // left-hand HRMs - flavor = "tap-preferred"; - tapping-term-ms = <200>; - quick-tap-ms = <150>; - require-prior-idle-ms = <125>; + flavor = "balanced"; + tapping-term-ms = <280>; + quick-tap-ms = <175>; + require-prior-idle-ms = <150>; bindings = <&kp>, <&kp>; hold-trigger-key-positions = ; + hold-trigger-on-release; ) ZMK_BEHAVIOR(hmr, hold_tap, // right-hand HRMs - flavor = "tap-preferred"; - tapping-term-ms = <200>; - quick-tap-ms = <150>; - require-prior-idle-ms = <125>; + flavor = "balanced"; + tapping-term-ms = <280>; + quick-tap-ms = <175>; + require-prior-idle-ms = <150>; bindings = <&kp>, <&kp>; hold-trigger-key-positions = ; + hold-trigger-on-release; ) // combos #undef COMBO_TERM #define COMBO_TERM 40 // timeout of 40ms (default is 30ms if omitted) -ZMK_COMBO(combo_copy, &kp LC(C), LB2 LB3, DEF NUM CHARS NAVI ADJS FUNC WIN) // Ctrl + C, active on all layers except gaming -ZMK_COMBO(combo_paste, &kp LC(V), LB1 LB2, DEF NUM CHARS NAVI ADJS FUNC WIN) // Ctrl + V, active on all layers except gaming -ZMK_COMBO(toggle_game, &tog GAM, RT1 RT4, DEF GAM) // toggle gaming layer on/off +ZMK_COMBO(combo_copy, &kp LC(C), LB2 LB3, DEF NUM CHARS NAVI ADJS FUNC WIN) // X+C keys โ†’ Ctrl+C +ZMK_COMBO(combo_paste, &kp LC(V), LB1 LB2, DEF NUM CHARS NAVI ADJS FUNC WIN) // V+C keys โ†’ Ctrl+V +ZMK_COMBO(combo_undo, &kp LC(Z), LB3 LB4, DEF NUM CHARS NAVI ADJS FUNC WIN) // Z+X keys โ†’ Ctrl+Z +ZMK_COMBO(combo_cut, &kp LC(X), LB1 LB3, DEF NUM CHARS NAVI ADJS FUNC WIN) // V+X keys โ†’ Ctrl+X +ZMK_COMBO(toggle_game, &tog GAM, RT1 RT4, DEF GAM, 25, 500) // U+P keys โ†’ toggle gaming (tight 25ms window, 500ms idle required) +ZMK_COMBO(combo_caps, &caps_word, LM0 RM0, DEF GAM) // G+H keys โ†’ caps word +ZMK_COMBO(combo_sticky_shift, &sk LSHIFT, LH0 RH0, DEF GAM) // Space+Enter โ†’ one-shot shift +// tri-layer: holding NUM + CHARS simultaneously activates Adjust layer +ZMK_CONDITIONAL_LAYER(adjust_tri, NUM CHARS, ADJS) ZMK_LAYER(Main, @@ -68,13 +82,13 @@ ZMK_LAYER(Main, &kp ESC &kp Q &kp W < 3 E < 6 R &kp T &kp Y &kp U &kp I &kp O &kp P &kp DEL // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| // | CTRL/Tab | A | S | D | F | G | | H | J | K | L | ร– | ร„ | - &mt LCTRL TAB &kp A &hmr LALT S &hmr LSHIFT D &hmr LCTRL F &kp G &kp H &hml RCTRL J &hml RSHIFT K &hml RALT L &kp SEMI &kp LBKT + &mt LCTRL TAB &kp A &hml LALT S &hml LSHIFT D &hml LCTRL F &kp G &kp H &hmr RCTRL J &hmr RSHIFT K &hmr RALT L &kp SEMI &kp LBKT // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| - // | SHFT | Z | X | C | V | B/FUNC | | N | M | . | , | ร… | NAV | + // | SHFT | Z | X | C | V | B/FUNC | | N | M | . | , | | ร„ | &kp LSHIFT &kp Z &kp X &kp C &kp V < 5 B &kp N &kp M &kp DOT &kp COMMA ___ &kp SQT // '---------------------------------+--------+---------+---------+ |-------+---------+---------+-------------------------------' - // | GUI | RSE | SPC | | ENT | LWR | LALT | - &kp LGUI &mo 1 &kp SPACE &mt 4 RET &mo 2 &kp BSPC + // | GUI | NUM | SPC | | ENT | CHARS | BKSP | + &kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp BSPC // '--------+---------+---------' '-------+---------+---------' ) @@ -94,7 +108,7 @@ ZMK_LAYER(Numbers, &kp LSHIFT ___ ___ ___ ___ ___ ___ &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp EQUAL ___ // '---------------------------------+--------+---------+---------+ |-------+---------+---------+-------------------------------' // | | | | | | | 0 ) | - ___ ___ &kp TAB ___ &mo 4 &kp NUMBER_0 + ___ ___ &kp TAB ___ &mo 2 &kp NUMBER_0 // '--------+---------+---------' '-------+---------+---------' ) @@ -112,7 +126,7 @@ ZMK_LAYER(Symbols, &kp PERCENT ___ &kp CARET &kp LEFT_BRACKET &kp RIGHT_BRACKET &kp TILDE &kp QUESTION &kp EQUAL &kp COMMA &kp LESS_THAN &kp GREATER_THAN &kp DQT // '---------------------------------+--------+---------+---------+ |-------+---------+---------+-------------------------------' // | | | | | | | | - ___ &mo 4 ___ ___ ___ ___ + ___ &mo 1 ___ ___ ___ ___ // '--------+---------+---------' '-------+---------+---------' ) @@ -122,9 +136,9 @@ ZMK_LAYER(Navi, // .--------------------------------------------------------------. .-----------------------------------------------------------. // | | | | | | | | | PG DN | UP | PG UP | | PrtScn | ___ ___ ___ ___ ___ ___ ___ &kp PG_DN &kp UP &kp PG_UP ___ &kp LG(LS(F4)) - // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| - // | CTRL | | | | | | | | LEFT | DOWN | RIGHT | | CAPS LCK | - &kp LCTRL ___ ___ ___ ___ ___ ___ &kp LEFT &kp DOWN &kp RIGHT ___ &kp CLCK + // |--------------+---------+--------+--------+---------+---------| |----------+---------+---------+---------+----------+----------| + // | CTRL | | | | | | | WORD LEFT| LEFT | DOWN | RIGHT | WORD RIGHT| CAPS LCK | + &kp LCTRL ___ ___ ___ ___ ___ &kp LC(LEFT) &kp LEFT &kp DOWN &kp RIGHT &kp LC(RIGHT) &kp CLCK // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| // | SHIFT | | | | | | | | PG HOME | | PG END | | | &kp LSHIFT ___ ___ ___ ___ ___ ___ &kp HOME ___ &kp END ___ ___ @@ -195,13 +209,13 @@ ZMK_LAYER(Game, &kp ESC &kp Q &kp W &kp E < 3 R &kp T &kp Y &kp U &kp I &kp O &kp P &kp DEL // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| // | CTRL/Tab | A | S | D | F | G | | H | J | K | L | ร– | ร„ | - &mt LCTRL TAB &kp A &kp S &kp D &kp F &kp G &kp H &hml RCTRL J &hml RSHIFT K &hml RALT L &kp SEMI &kp LBKT + &mt LCTRL TAB &kp A &kp S &kp D &kp F &kp G &kp H &hmr RCTRL J &hmr RSHIFT K &hmr RALT L &kp SEMI &kp LBKT // |--------------+---------+--------+--------+---------+---------| |-------+---------+---------+---------+----------+----------| - // | SHFT | Z | X | C | V | B/FUNC | | N | M | . | , | ร… | NAV | + // | SHFT | Z | X | C | V | B/FUNC | | N | M | . | , | | ร„ | &kp LSHIFT &kp Z &kp X &kp C &kp V < 5 B &kp N &kp M &kp DOT &kp COMMA ___ &kp SQT // '---------------------------------+--------+---------+---------+ |-------+---------+---------+-------------------------------' - // | GUI | RSE | SPC | | ENT | LWR | LALT | - &kp LGUI &mo 1 &kp SPACE &mt 4 RET &mo 2 &kp BSPC + // | GUI | NUM | SPC | | ENT | CHARS | BKSP | + &kp LGUI &mo 1 &kp SPACE &kp RET &mo 2 &kp BSPC // '--------+---------+---------' '-------+---------+---------' )