A 62-key split columnar ergonomic keyboard
| Version | Keys | MCU | Features | Firmware | Photo |
|---|---|---|---|---|---|
| v4 | 62 | splitkb Liatris (RP2040) | Symmetrical enclosures, USB VBUS detection | splinter | ![]() |
| v3 | 62 | Adafruit KB2040 (RP2040) | Symmetrical enclosures | splinter-v3.0 | ![]() |
| v2 | 62 | SparkFun Pro Micro (ATmega32U4) | Symmetrical enclosures | splinter-v2.0 | ![]() |
| v1 | 61 | SparkFun Pro Micro (ATmega32U4) | Asymmetrical enclosures, traditional layout | splinter-v1.0 | ![]() |
Install the following tools:
- Ergogen - PCB generation from YAML config
- KiCad - PCB editor
- KiKit automation tools - Gerber file generation
- marbastlib - KiCad footprint library (install via KiCad Plugin and Content Manager)
- OrcaSlicer - 3D printing slicer
# Include submodules when cloning
git clone --recursive git@github.com:andornaut/splinter-keyboard.git
cd splinter-keyboard
# Install dependencies, including Ergogen
nvm use
npm install
# Install KiCad
sudo add-apt-repository ppa:kicad/kicad-8.0-releases
sudo apt install kicad
# Install KiKit
# Must use the same Python interpreter as KiCad (will not work in a venv)
sudo pip install kikit --break-system-packages
# Update submodules
git submodule update --recursive --remoteAlternatively, you can install OrcaSlicer and Kicad using these Ansible tasks.
Set the VERSION environment variable in .env to one of v1, v2, v3, or v4
Step 2. Keyboard Layout Editor
- Prototype a keyboard layout using Keyboard Layout Editor
- Export the layout configuration to
keyboard-layout-editor/keyboard-layout-editor.json, so that you can import it and iterate on it in the future - Use the prototype as inspiration for creating a production-ready design using Ergogen
Step 3. Ergogen
- Run
docker compose upto start Ergogen GUI - Open http://ergogen.internal (install docker_etc_hosts to manage
/etc/hostsentries) - Paste in, work on, and then download and save
ergogen/config.yaml - Run
npm run buildto generate and save outlines and pcbs todist/v4/ergogen/thennpm run copy-pcbs-to-kicad- Alternatively, run
npm run watchornpm run watch-and-copy-pcbs-to-kicad
- Alternatively, run
Notes:
- The Ergogen GUI is useful for prototyping key placement, layout, and outlines, but it does not render PCB layouts. Use the local npm pipeline to generate PCB files for KiCad.
Step 4. KiCad
- Design the PCBs using KiCad
- Run
npm run copy-pcbs-to-kicadto copy thedist/v4/ergogen/pcbs/*.kicad_pcbfiles generated by Ergogen tokicad/ - Run
open ./v4/kicad/left.kicad_pcb - Route the PCBs in
kicad/, and then save them tokicad/routed/- Once you're happy with the routing, run
npm run copy-pcbs-to-routedto copy the PCBs tokicad/routed/ - If you've generated new PCB files using Ergogen, then you can run
npm run copy-traces-from-routedto copy traces from the PCBs inkicad/routed/back to those of the same name inkicad/. Select File > Revert > Yes to refresh the PCB in Kicad.
- Once you're happy with the routing, run
- Run
npm run copy-pcbs-to-routed && npm run fab-jlcpcbto generate and save gerber and drill files todist/v4/kicad/jlcpcb/*.zip - Print the PCBs using JLCPCB (or OSH Park or PCBWay)
- Submit the
dist/v4/kicad/jlcpcb/*.zipfiles to JLCPCB
- Submit the
- Navigate to File > Board Setup... > Design Rules > Net Classes
- Update the "Default" netclass
- Click the "+" button to add a "VCC" net class
- Configure a pattern to match nets with the text "VCC" to the VCC net class
| Configuration | Description |
|---|---|
| Default | Clearance: 0.20mm, Track width: 0.20mm |
| VCC | Clearance: 0.25mm, Track width: 0.25mm |
Step 5. OnShape
- Model the case using OnShape
- Create a new document
- Start a new sketch
- Select "Insert a DXF or DWG file" > "Import ..." (at the bottom of the dialog) > Select
dist/v4/ergogen/outlines/full.dxf - Design a keyboard case
- Export
*.stepfiles toonshape/
Step 6. OrcaSlicer
- Print the case using OrcaSlicer
- Open or create an OrcaSlicer project file
- Import
*.stepfiles fromonshape/ - Print the keyboard case
Step 7. QMK Firmware
- Install the custom QMK firmware







