A 36-42 key split ergonomic keyboard with wireless support, a breakoff pinky column, and optional encoders in the thumb cluster.
- 36-42 keys depending on configuration:
- 42/41/40 keys (0/1/2 encoders) with full pinky column
- 38/37/36 keys (0/1/2 encoders) with breakoff pinky column
- Column stagger and splay on pinky and ring columns
- Kailh Choc v1 or v2 low-profile switches, with optional hotswap sockets
- nice!nano or other Pro Micro compatible microcontrollers
- Optional nice!view display
- Optional EC11/EC12 rotary encoders in thumb cluster (up to 2)
- Wireless with battery support
- Reversible PCB
- 3D-printable cases, with an optional kickstand for tenting
- Ergogen generates the layout, PCB, plates, and cases from ergogen/config.yaml
- KiCad v10 holds the hand-routed traces; its
pcbnewAPI andkicad-clidrive the scripted post-processing and the exports
Temporal runs ZMK. The shield definition and default keymap live in temporal-zmk; curbol/zmk-config is a working config that uses it.
docs/build-guide.md covers assembly and ordering. docs/bom.md lists every component a full build needs.
Any Choc-compatible keycap fits. KLP Lame Keycaps are 3D-printable and sculpted; docs/bom.md lists the print quantities for a full build.
- Node.js and npm
- A package manager
make depscan drive: Homebrew on macOS, orpacmanandyayon Arch Linux
- Install dependencies (OpenSCAD, KiCad, zip/unzip, Maple Mono NF font, and KiCad plugins):
make deps- Generate PCBs and cases:
make genThis will:
- Run Ergogen to generate PCB and case files
- Derive
temporal.json, the ZMK Studio physical layout, from the same points - Post-process PCBs (edge cuts, silkscreen widths, ground planes, text keepouts, via stitching, zone fills, embedded fonts)
- Configure KiCad project files with defaults from
scripts/kicad_config.yaml - Derive the
top_plate_*_stealthvariants from the generated top plates - Render
assets/preview.svgand apcb.pngper board - Export gerbers for manufacturing
- Generate the JLCPCB BOM and CPL files in
jlcpcb/ - Generate STL case files
Note: The main pcbs/temporal/ PCB requires manual steps in KiCad after generation. See pcbs/temporal/README.md for details.
make checkConfirms the sources parse and lint, ergogen/config.yaml builds, every committed board passes DRC and carries its own silkscreen font, and the pours in pcbs/ still match the custom DRC rules. It then regenerates each committed derived artifact and diffs it against what is checked in: temporal.json, jlcpcb/, the .kicad_pro and .kicad_dru files, and the gerber zips. This is what CI runs on every push.
Temporal takes influence from:

