
LeChiffre
tominabox1/Le-Chiffre-Keyboard
Great thanks goes to Jake at P3D for really making the case amazing and open sourcing his work. Check him out at P3Dstore.com

A wireless high-profile 42 key mechanical split keyboard based on Seeed Studio XIAO nRF52840.
VectorSplitK is an open-source printed circuit board by SunritHazra, from the SunritHazra/VectorSplitK repository on GitHub, published under the MIT licence. It is a 2-layer board of 252 × 102.5 mm with 105 parts on 84 nets, routed with 497 tracks and 81 vias.
Its parts include 42 diodes, 42 switches, 4 resistors and 2 ICs. It belongs with the keyboards and input boards and the nRF52 and nRF5x boards of this library.
An open-source, wireless, high-profile 42-key mechanical split keyboard. Built around the powerful Seeed Studio XIAO nRF52840, the VectorSplitK features an aggressive columnar stagger, custom-modeled flat profile keycaps, and a robust dual-case mechanical assembly. This project is my first split keyboard. The PCB was made entirely in KiCad and the CAD was done in Autodesk Fusion.
Full day-by-day design log, decisions, and dead ends: JOURNAL.md
Project stats: 14 build-log days · ~40h 20m total design time · 100% designing progress, 0% building progress (as of the latest journal entry)
On the name: Follows the author's personal naming convention for electronics projects (used previously for hackpad and devboard) — a descriptive word, a short form of the project's defining trait ("Split"), and a single trailing letter — giving VectorSplitK.
The electrical system uses hierarchical sheets in KiCad to define identical left and right sides. It resolves typical multi-sheet duplicate ground issues by utilizing sheet-specific power flags (${SHEETNAME}_GND).
Main Sheet
Left Half Matrix
Right Half Matrix
acheron_MXH:MX100H (1.00u) and acheron_MXH:MX150H (1.50u) hotswap-ready switches (42 total, 21 per side).Diode_SMD:D_SOD-123 (42 total, 1 per key).MountingHole:MountingHole_3.2mm_M3_DIN965_Pad (8 total, 4 per side).Resistor_SMD:R_0805_2012Metric (4 total, 2 per side).modified-XIAO-nRF52840-SMD:modified-XIAO-nRF52840-SMD (2 total, 1 per side).TestPoint:TestPoint_Pad_D2.0mm (4 total, 2 per side).PCM_marbastlib-various:mousebites_5p5mm_easysnap (3 break-offs).Designed for rugged reliability and high-profile ergonomics using the custom footprints above.
KiCad PCB Window
KiCad PCB Render
KiCad PCBA Render
KiCad PCB Back Side
KiCad PCBA Back Side
/PCBADesigned from scratch in Autodesk Fusion, featuring integrated battery slots, precise USB-C ports, and secure brass threaded insert sockets.
file structure of fusion
top case and bottom case together in fusion
section analysis in fusion showing the screw assembly
/CADKiCad libraries used:
Layout & edge-cut inspiration (referenced for switch arrangement and board outline conventions):
Keycap reference model: Flat MX Keycaps — Printables, used as a base to project and re-model custom 1.00u/1.50u profiles.
Columnar stagger layout: Switches placed on a 20 mm grid; second and fourth rows shifted 10 mm up, the middle row shifted 20 mm up, with board edges drawn 5 mm out from the outermost keys.
Hierarchical sheet grounding: KiCad hierarchical sheets duplicate net names by default, which merged the left/right ground nets into one. Fixed using sheet-specific power flags (${SHEETNAME}_GND), producing distinct Left_GND and Right_GND nets per half.
Case construction (Fusion 360): Built symmetrically — one side of the PCB modeled, then mirrored — with:
Keycap modeling: 1.00u caps built by lofting projected upper/lower faces of a reference keycap, then hollowing and adding a stem + cross-hub. 1.50u caps were derived by splitting the 1.00u shape, spacing the halves 9 mm apart, and bridging the gap. Stem geometry was verified by cutting the actual switch stem shape directly into the keycap model to guarantee fit.
Upper case (switch plate): Modeled by projecting all switch bodies into a sketch, offsetting 1 mm around each switch and 1.5 mm along the walls, then extruding to the wall thickness (4.05 mm) with screw-hole pillars extended up from the PCB. Outer walls were thinned via a −0.8 mm facial offset on the curved edges for a lighter profile. Corner/cutout dimensions (14.70 × 14.70 mm switch openings, 0.705 mm corner radius) were carried over from the author's earlier hackpad build.
Design refinements: The SoC position, PCB mounting holes, and upper-case mounting holes were all iterated to (1) clear the USB-C cable path symmetrically on both halves, (2) keep mounting holes equidistant from the three nearest switches for insert clearance, and (3) keep the upper-case screw geometry in sync with the final PCB layout.
VectorSplitK_Gerber.zip.Full sourcing sheet with vendors and pricing: /Bill of Materials
1N4148)0805 Metric SMD Resistors (2 per side)| Component | Vendor |
|---|---|
| PCB Fabrication | JLCPCB |
| Switches & Kailh Hotswap Sockets | Meckeys |
| Diodes, Resistors, SoC, Battery | Robu.in |
| Screws & Knurled Inserts | OnlyScrews |
The board runs wireless ZMK firmware on the XIAO nRF52840, using a custom shield built on the upstream seeeduino_xiao_ble board support.
5 columns × 5 rows per half (21 keys/side, 42 total — a 4×5 grid plus 1 thumb key), with diode-direction = "col2row" matching the SOD-123 diode orientation on the PCB.
| Signal | XIAO Pin |
|---|---|
| COL_0 | P0.03 |
| COL_1 | P0.28 |
| COL_2 | P0.29 |
| COL_3 | P0.04 |
| COL_4 | P0.05 |
| ROW_0 | P1.15 |
| ROW_1 | P1.14 |
| ROW_2 | P1.13 |
| ROW_3 | P1.12 |
| ROW_4 | P1.11 |
Firmware lives in /zmk-config, structured as its own ZMK user-config repo:
zmk-config/
├── build.yaml
├── config/
│ ├── vectorsplitk.keymap
│ ├── vectorsplitk.conf
│ └── west.yml
├── boards/shields/vectorsplitk/
│ ├── vectorsplitk.dtsi
│ ├── vectorsplitk_left.overlay
│ ├── vectorsplitk_right.overlay
│ ├── vectorsplitk.zmk.yml
│ ├── Kconfig.shield
│ └── Kconfig.defconfig
└── .github/workflows/build.yml
Pushing this folder as its own GitHub repo triggers a GitHub Actions build via build.yaml, producing vectorsplitk_left-seeeduino_xiao_ble-zmk.uf2 and vectorsplitk_right-seeeduino_xiao_ble-zmk.uf2 under the Actions tab, no local toolchain required.
Known caveat: the matrix transform assumes COL_0 is the innermost column (closest to the thumb key) on both halves. If keys type in mirrored left-right order on first flash, reverse the column order in
vectorsplitk.dtsi— a firmware-only fix, no rewiring needed.
.uf2 (left or right) onto the drive.While the hardware engineering, PCB routing, firmware architecture, and 3D CAD modeling were completed manually, AI (Gemini, ChatGPT, and Claude) was used as a technical assistant throughout the project—not to generate designs, but to help research, troubleshoot, validate decisions, and improve documentation.
Project Integrity: All schematics, PCB layouts, routing, CAD models, and mechanical design were created manually in KiCad and Autodesk Fusion. AI was used only for research, troubleshooting, review, firmware guidance, and documentation.
This project is licensed under the MIT License - see the LICENSE file for details.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 42 | D | Diode_SMD:D_SOD-123 | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +26 |
| 40 | SW_Push | acheron_MXH.pretty-master:MX100H | SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +24 |
| 8 | MountingHole | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad | H1, H2, H3, H4, H5, H6, H7, H8 |
| 3 | break off | Panelization.pretty-master:mouse-bite-2mm-slot | BO1, BO2, BO3 |
| 2 | 2 MΩ | Resistor_SMD:R_0805_2012Metric | R3, R4 |
| 2 | 806 KΩ | Resistor_SMD:R_0805_2012Metric | R1, R2 |
| 2 | BAT | TestPoint:TestPoint_Pad_D2.0mm | TP1, TP2 |
| 2 | GND | TestPoint:TestPoint_Pad_D2.0mm | TP3, TP4 |
| 2 | SW_Push | acheron_MXH.pretty-master:MX150H | SW41, SW42 |
| 2 | XIAO-nRF52840-SMD | modified-XIAO-nRF52840-SMD:modified-XIAO-nRF52840-SMD | U1, U2 |
It measures 252 × 102.5 mm and has 2 copper layers, 1.6 mm thick.
105 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the SunritHazra/VectorSplitK repository on GitHub, at the commit this page was made from: the board is PCBA/VectorSplitK.kicad_pcb and its schematic PCBA/VectorSplitK.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

tominabox1/Le-Chiffre-Keyboard
Great thanks goes to Jake at P3D for really making the case amazing and open sourcing his work. Check him out at P3Dstore.com

mzuelch/CATs-Eurosynth
Analog Synth Eurorack Modules

nmunnich/apiaster
Apiaster is a 50 key keyboard designed to be cheap, adjustable, and upgradeable.

BerkeleyHCI/PolymorphicBlocks
A Python-based hardware description language for PCBs for higher-level (block-diagram / system-architecture level) PCB design through libraries of directly reusable subcircuit generators.

PhysicsDptAngers/polyUAnalog
Open source, analog and polyphonic synthesizer

dezlidezlidezli/ahokore
Ahokore is a 36-key one-piece split keyboard, with full wireless functionality.

zaxour/TripleBypassV2Plus
Variant of Tian Feng's Triple Bypass V2 with fixes and functionality added
