A sophisticated ZMK (Zephyr Keyboard Firmware) configuration supporting both Mono and Split Corne keyboards with advanced features and custom behaviors.
- Controller: RP2040 Zero (e.g., Adafruit RP2040 Zero)
- Layout: 4x5+3 (36-key Corne layout with thumb cluster)
- Features: Faster tap timing for responsive feel
- Controllers:
- Left/Right halves: nice!nano v2
- Dongle: Raytac MDBT50Q-RX
- Layout: 6x5 split Corne layout with thumb clusters
- Features: Central dongle mode with enhanced Bluetooth capabilities
- Hold-Tap Configurations: Multiple custom hold-tap behaviors optimized for different use cases
- Balanced Homerow Mods: Efficient modifier keys on home row using
bhmbehavior - Smart Space/Backspace: Spacebar acts as backspace when held, shifted becomes Hyper key
- Adaptive Shift Keys: Shift becomes brackets when held
- Double-Tap Comma: Double-tap comma triggers caps word and deletes previous character
- Default Layer: QWERTY with homerow mods
- Symbols Layer (1): Punctuation and symbols
- Numbers Layer (2): Numeric pad layout
- Arrows Layer (3): Arrow key navigation
- Nav Layer (4): Advanced navigation with Hyper/Meh combos
- Media Layer (5): Media controls
- Bluetooth Layer (6): Device switching and management
- Empty Layer: Available for custom configuration
- Space+Tab: Triggers caps word mode
- Caps Word: Automatic capitalization with smart continue list
- Layer Tap Fast: Quick layer access with optimized timing
- Hyper/Meh Keys: Advanced chorded key combinations
zmk-config/
├── config/
│ ├── base_36.keymap # Main keymap with all layers
│ ├── mono_corne.keymap # Mono-specific overrides
│ ├── corne.keymap # Split-specific overrides
│ └── west.yml # ZMK manifest with custom components
├── boards/
│ └── shields/
│ ├── mono_corne/ # Mono Corne board definitions
│ └── corne/ # Split Corne board definitions
├── build.yaml # GitHub Actions build matrix
└── README.md # This file
- ZMK development environment set up
- West tool installed
- Compatible hardware (see Supported Keyboards section)
- Push changes to this repository
- GitHub Actions will automatically build firmware for all supported configurations
- Download the appropriate
.uf2file from the Actions tab
# Update dependencies
west update
# Build for Mono Corne
west build -b rp2040_zero -- -DSHIELD=mono_corne
# Build for Split Corne (Left)
west build -b nice_nano_v2 -- -DSHIELD=corne_left -DCONFIG_ZMK_SPLIT=y -DCONFIG_ZMK_SPLIT_ROLE_CENTRAL=n
# Build for Split Corne (Right)
west build -b nice_nano_v2 -- -DSHIELD=corne_right -DCONFIG_ZMK_SPLIT=y -DCONFIG_ZMK_SPLIT_ROLE_CENTRAL=n
# Build for Corne Dongle
west build -b raytac_mdbt50q_rx -- -DSHIELD=corne_dongle- Connect RP2040 Zero while holding BOOTSEL button
- Drag and drop the
.uf2file to the mounted drive
- Use a programmer (like UF2 bootloader) or
- Use OTA updates if already configured with ZMK
- Connect via USB while in bootloader mode
- Flash the appropriate firmware file
This configuration uses several custom ZMK components:
- zmk-component-raytac-dongle: Enhanced dongle functionality
- zmk-component-rp2040-zero: RP2040 controller support
- zmk-adaptive-key: Adaptive key behaviors (e.g., double-tap comma)
A: Left CtrlS: Left AltD: Left ShiftF: Left GUIJ: Right GUIK: Right ShiftL: Right Alt;: Right Ctrl
- Space: Tap = Space, Hold = Backspace, Shift+Hold = Hyper
- Esc: Layer tap to Symbols layer
- Enter: Layer tap to Numbers layer
- Comma: Double-tap = Caps Word + Backspace
- Symbols: Esc (hold)
- Numbers: Enter (hold)
- Arrows: V (hold)
- Navigation: E (hold)
- Bluetooth: N (hold)
- Media: M (hold)
The split configuration supports up to 5 Bluetooth profiles:
- Layer 6: Access Bluetooth switching controls
- BT_CLR: Clear all pairings
- BT_SEL 0-4: Switch between profiles
- Bootloader: Enter bootloader mode for flashing
- Consolidated layer hold timing for better responsiveness
- Optimized tap timing differences between mono and split configurations
- Enhanced comma caps feature with adaptive behavior
- Mono Corne: 150ms tap timing for more responsive feel
- Split Corne: 200ms tap timing with additional safeguards for reliability
This configuration follows the ZMK project's MIT license. See individual component licenses for details.
When making changes:
- Test on both mono and split configurations if applicable
- Update build.yaml if adding new board/shield combinations
- Update this README if adding significant new features