This repository contains my personal ZMK firmware configuration for the Corne (CRKBD) split keyboard using nice!nano v2 controllers.
- Keyboard: Corne (CRKBD) 3x6+3 split keyboard (42 keys total)
- Controller: nice!nano v2 (both halves)
- Display: nice!view with nice-luffy-wanted module (optional, one pair)
- Firmware: ZMK v0.3 (pinned)
- Base Layer: Default QWERTY layout with home row mods
- Colemak Layer: Alternative typing layout for improved ergonomics
- Gaming Layers: Specialized layouts for gaming with arrow key clusters
- Symbol Layer: Easy access to numbers, symbols, and special characters
- Function Layer: F-keys (F1-F24), media controls, and system functions
- Navigation Layer: Arrow keys, page navigation, virtual desktop switching
- Maintenance Layer: Bluetooth profiles, output toggling, and layer management
- Home Row Mods: GUI, Alt, Ctrl, and Shift on home row for efficient typing
- Layer-Tap Keys: Dual-function keys that act as layer toggles when held
- Combos: Key combinations for frequently used actions
- Custom Macros: Ubuntu system reboot macro included
- Bluetooth Support: 5 profile slots with easy switching
- USB/Bluetooth Toggle: Switch between wired and wireless modes
Standard QWERTY layout with home row modifiers
- Left home row: GUI(A), Alt(S), Ctrl(D), Shift(F)
- Right home row: Shift(J), Ctrl(K), Alt(L), GUI(;)
- Layer access: Symbol(ESC), Navigation(Space/Enter), Function(Tab)
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ `~ โ Q โ W โ E โ R โ T โ โ Y โ U โ I โ O โ P โ \ | โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL/TABโ GUI/A โ ALT/S โ CTRL/D โ SHFT/F โ G โ โ H โ SHFT/J โ CTRL/K โ ALT/L โ GUI/;: โ '" โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ Z โ X โ C โ V โ B โ โ N โ M โ ,< โ .> โ /? โ GUI โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ ALT โ SYM/ESC โ NAV/SPC โ โ NAV/ENT โ FUN โ BKSP โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Ergonomic Colemak layout alternative with same modifier positions
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ `~ โ Q โ W โ F โ P โ B โ โ J โ L โ U โ Y โ ;: โ \ | โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL/TABโ GUI/A โ ALT/R โ CTRL/S โ SHFT/T โ G โ โ M โ SHFT/N โ CTRL/E โ ALT/I โ GUI/O โ '" โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ Z โ X โ C โ D โ V โ โ K โ H โ ,< โ .> โ /? โ GUI โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ ALT โ SYM/ESC โ NAV/SPC โ โ NAV/ENT โ FUN โ BKSP โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Numbers and symbols with logical positioning
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ `~ โ 1 โ 2 โ 3 โ 4 โ 5 โ โ 6 โ 7 โ 8 โ 9 โ 0 โ + โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL โ ! โ @ โ # โ $ โ % โ โ ^ โ & โ * โ ( โ ) โ = โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ ~ โ - โ _ โ { โ } โ โ [ โ ] โ < โ > โ : โ ; โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ โ โ MAINT โ โ SPACE โ ALT โ BKSP โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Complete F1-F24 function key set and system controls
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ CAPS โ F12 โ F7 โ F8 โ F9 โ PRINT โ โ F13 โ F14 โ F15 โ F16 โ F17 โ F18 โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL โ F11 โ F4 โ F5 โ F6 โ SCRLK โ โ F19 โ F20 โ F21 โ F22 โ F23 โ F24 โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ F10 โ F1 โ F2 โ F3 โ BREAK โ โ INS โ DEL โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ CTRL โ ALT โ DEL โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Arrow keys, page navigation, and virtual desktop switching
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ GUI โ โ โ END โ โ SCRN_L โ โ HOME โ PG_DN โ PG_UP โ END โ UP โ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL โ HOME โ โ โ RIGHT โ SCRN_R โ โ LEFT โ DOWN โ UP โ RIGHT โ โ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ โ โ โ โ LEFT โ โ DOWN โ โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ CTRL โ ALT โ SHIFT โ โ SHIFT โ ALT โ CTRL โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Dedicated arrow key clusters for gaming
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ โ โ โ UP โ โ โ โ โ โ UP โ โ โ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL โ โ LEFT โ DOWN โ RIGHT โ โ โ โ LEFT โ DOWN โ RIGHT โ โ CTRL โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ QWERT โ โ โ โ โ โ โ โ โ โ โ โ QWERT โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ ESC โ SPACE โ ENTER โ โ ENTER โ SPACE โ ESC โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Pure QWERTY for gaming (no home row mods)
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ `~ โ Q โ W โ E โ R โ T โ โ Y โ U โ I โ O โ P โ \ | โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ CTRL/TABโ A โ S โ D โ F โ G โ โ H โ J โ K โ L โ ;: โ '" โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ SHIFT โ Z โ X โ C โ V โ B โ โ N โ M โ ,< โ .> โ /? โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ ALT โ ESC โ SPACE โ โ ENTER โ DEL โ BKSP โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
System controls, Bluetooth profiles, and layer toggles
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ BT_CLR โ โ โ โ BT_3 โ BT_0 โ โ VOL+ โ โ โ โ โ BRGHT+ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ T_EMPTY โ T_GAMES โ โ โ BT_4 โ BT_1 โ โ VOL- โ โ โ โ โ BRGHT- โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ T_COLEM โ โ โ โ โ BT_2 โ โ MUTE โ โ โ โ โ OUT_TOG โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ โ โ โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
Disabled layer (all keys inactive)
โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ โญโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโฎ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค โโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
โ โ โ โ โ โ โ โ
โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ โฐโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโฏ
- DF + GH: Escape (works on Base, QWERTY, Colemak layers)
- JK: Enter (works on most layers)
- DV: Backslash
- KH: Forward slash
- JKL: Toggle between Empty and Games layers
- Hold-Tap (ht): Unified balanced hold-tap behavior for all home row modifiers
- Flavor: Balanced (requires second key release while modifier held)
- Tapping Term: 280ms
- Quick-Tap: 175ms for rapid repeated taps
- Prior-Idle: 150ms requirement to prevent accidental holds during fast typing
- Hold-Trigger-on-Release: Defers hold/tap decision until after key release, fixing release-order sensitivity
- Hold-Trigger-Key-Positions: All 42 key positions configured to enable cross-hand and same-hand operations
The configuration uses a single unified hold-tap behavior optimized for reliability:
- All modifiers (Shift, Ctrl, Alt, GUI) use the same
htbehavior with 280ms tapping term - The
hold-trigger-on-releasefeature eliminates issues with key release order require-prior-idle-ms=150prevents accidental modifier activation during fast typing- Works with both same-hand and cross-hand key combinations (e.g., F+N for "N", J+I for "I")
config/
โโโ corne.conf # Hardware configuration
โโโ corne.keymap # Main keymap definition
โโโ west.yml # ZMK project configuration
โโโ include/
โโโ behaviors.dtsi # Custom behavior definitions
โโโ combos.dtsi # Key combination definitions
โโโ macros.dtsi # Custom macro definitions
The firmware is built for two keyboard pairs:
- Left half:
nice_nano_v2+corne_left - Right half:
nice_nano_v2+corne_right
- Left half:
nice_nano_v2+corne_left+nice_view_adapter+nice_luffy_wanted - Right half:
nice_nano_v2+corne_right+nice_view_adapter+nice_luffy_wanted
- Special build for clearing all settings:
nice_nano_v2+settings_reset
All builds are automated via GitHub Actions as defined in build.yaml using ZMK v0.3.
- Enhanced Bluetooth transmission power (
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y) - USB keyboard support (
CONFIG_ZMK_USB=y) - USB boot protocol support for BIOS compatibility
- nice!view display support via
nice-luffy-wantedmodule (displays battery, BT profile, custom artwork) - Display configuration is handled by the shield overlay, not corne.conf
- RGB underglow support
- Built-in OLED display support (using nice!view instead)
- Fork this repository
- Customize the keymap in
config/corne.keymapto your preferences - Push changes to trigger GitHub Actions build
- Download the generated firmware files (artifacts from the build action)
- Flash the appropriate
.uf2files to each half of your keyboard
If you're experiencing intermittent key failures, especially with Mill-Max socketed nice!nano controllers, see the Column Fix Guide for detailed troubleshooting steps.
The current configuration uses a unified hold-tap behavior that works well for most typing styles. If you experience issues:
- Adjust
require-prior-idle-msinconfig/include/behaviors.dtsi(currently 150ms) - Increase
tapping-term-msif you find holds aren't triggering (currently 280ms) - Adjust
quick-tap-msfor faster repeated taps (currently 175ms)
| Layer | Number | Purpose |
|---|---|---|
| BASE | 0 | Default QWERTY with home row mods |
| COLEMAK | 1 | Alternative typing layout |
| SYMBOL | 2 | Numbers and symbols |
| FUNCTION | 3 | F-keys and system functions |
| NAVIGATION | 4 | Arrow keys and page navigation |
| GAMES | 5 | Gaming-optimized layout |
| QWERTY | 6 | Pure QWERTY for gaming |
| MAINTENANCE | 7 | System controls and toggles |
| EMPTY | 8 | Disabled layer |
- Profile 0-4: Available for different devices
- Use maintenance layer to switch profiles
- Clear all profiles option available
Feel free to fork this configuration and adapt it to your needs. If you find improvements or fixes, pull requests are welcome!
This configuration is based on the ZMK firmware project and follows the same MIT license.