Skip to content

ZMK config for my split keyboards

Notifications You must be signed in to change notification settings

andersonba/zmk-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

262 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-Board ZMK Config

🪸 Urchin ✖️ Crosses 🪶 Corne
Urchin keyboard Crosses keyboard Corne keyboard
34 keys (3x5+2) 36 keys (3x5+3) 42 keys (3x6+3)

My personal ZMK firmware configuration shared across some different keyboards. Features a unified logical layout with board-specific physical mappings.

Architecture

This project uses a modular architecture to share keymap logic across different keyboard layouts:

  • config/base.dtsi: Core keymap logic (layers, combos, behaviors) for 34 logical keys
  • Board-specific keymaps: Map the 34 logical keys to each keyboard's physical layout
    • urchin.keymap: 34 keys (direct mapping)
    • corne.keymap: 42 keys (34 logical + 8 edge keys)
    • crosses.keymap: 36 keys (34 logical + 2 thumb keys)

Features

  • Home Row Mods: Inspired by urob's timeless layout
  • Smart Combos: Essential actions (Esc, Enter, Cut/Copy/Paste) without extra keys
  • Auto-Sentence: Automatic capitalization and period insertion
  • Mouse Layer: Pointing device support with tap-toggle/hold-momentary behavior (board-dependent)
  • Shared Configuration: DRY approach with default.conf for common settings

Layout

🪸 Urchin ✖️ Crosses 🪶 Corne
Urchin layout Crosses layout Corne layout

Setup

This project uses mise for tool management and just for commands.

  1. Install mise: Follow instructions at mise.jdx.dev
  2. Initialize environment:
    mise exec -- just init

Commands

All commands support multiple boards. Run with mise exec -- just <command> or just <command> if mise is activated.

Build Firmware

just build [board] [side]    # board: urchin (default), corne, crosses
                             # side: left, right, all (default)

Examples:

  • just build → Build Urchin (both sides)
  • just build corne left → Build Corne left side
  • just build crosses all → Build Crosses (both sides)

Flash Firmware

just flash [board] [side]    # board: urchin, corne, crosses
                             # side: left, right

Examples:

  • just flash corne right → Flash Corne right side

Generate Keymap Visualization

just draw [board]             # board: urchin, corne, crosses

Examples:

  • just draw → Generate draw/urchin.svg
  • just draw corne → Generate draw/corne.svg
  • just draw all → Generate all boards

Other Commands

Command Description
just clean Clean build artifacts
just clean-all Clean everything (workspace + venv)
just update Update ZMK and dependencies
just check Verify environment setup

Credits

Sponsor this project

  •  
  •