A fully custom, open-source wireless split keyboard built from scratch — custom PCB, hand-picked components, 3D-printed case, and a bespoke AZERTY layout.
[screenshot — hero photo of both halves side by side]
- Overview
- Features
- Layout
- Bill of Materials
- PCB
- 3D-Printed Case
- Build Guide
- Firmware (ZMK)
- Repository Structure
- License
WESK (Wireless Ergonomic Splitted Keyboard) is a handcrafted 56-key wireless split keyboard designed for ergonomics and daily productivity. Every part of it was chosen or made intentionally: the PCB was designed in KiCad and manufactured at JLCPCB, the case is 3D-printed in PETG, and the firmware runs on ZMK. Both halves communicate over Bluetooth and are completely cable-free during use.
[screenshot — both halves on a desk, keycaps on]
- 56 keys — 28 per half, fully symmetric split layout
- Wireless — Bluetooth via ZMK, no cable between halves
- Low-profile — Kailh Choc v2 Red switches + NuPhy COAST Twilight keycaps
- Custom PCB — designed in KiCad, manufactured by JLCPCB
- 1 rotary encoder per half — for volume, scroll, or any mapped action
- 500 mAh LiPo battery per half — integrated into the 3D-printed case
- PETG case — fully 3D-printed, designed to house all components
- Custom AZERTY layout — tailored key positions and layers
The layout is a custom AZERTY split, inspired by ergonomic principles (staggered columns, thumb cluster). Each half has 28 keys + 1 rotary encoder.
[screenshot — your layout diagram, left half]
[screenshot — your layout diagram, right half]
WESK uses multiple ZMK layers accessible via the FN, OPT, and CMD thumb keys:
| Layer | Activation | Description |
|---|---|---|
| Base | — | Default AZERTY layout |
| Lower | FN |
Numbers, symbols |
| Raise | OPT |
Navigation, media |
| Adjust | CMD |
Bluetooth profiles, system |
[screenshot — layer map / ZMK keymap diagram]
| Component | Description | Qty | Where to Buy |
|---|---|---|---|
| Nice!Nano v2 clone | nRF52840-based BLE microcontroller | 1 | AliExpress |
| Kailh Choc v2 Red | Low-profile linear switch | 28 | [vendor] |
| NuPhy COAST Twilight | Low-profile Choc v2 keycaps | 28 | NuPhy |
| SOD-123 diode | 1N4148W SMD diode | 28 | AliExpress / LCSC |
| Rotary encoder | EC11 or equivalent | 1 | AliExpress |
| Encoder knob | To fit encoder shaft | 1 | AliExpress |
| LiPo battery 500 mAh | 3.7V, must fit case recess | 1 | AliExpress |
| On/off switch | MSK-12C02 or equivalent | 1 | AliExpress |
| Custom PCB | KiCad project, ordered from JLCPCB | 1 | JLCPCB |
| M2 screws | For case assembly | ~6 | Hardware store |
| M2 heat-set inserts | For PETG case | ~6 | AliExpress |
Note: Order PCBs in batches of 5 (JLCPCB minimum). The Gerber files are in the
GRB/folder.
The PCB was designed in KiCad and ordered from JLCPCB.
[screenshot — KiCad PCB layout top view] [screenshot — KiCad schematic] [screenshot — received PCBs from JLCPCB]
- Matrix wiring — standard row/column matrix with SOD-123 diodes for n-key rollover
- Choc v2 footprints — low-profile switch footprints with proper spacing
- Rotary encoder footprint — EC11 compatible, placed at thumb cluster corner
- Battery connector — JST PH 2.0 connector for the LiPo
- Power switch footprint — MSK-12C02 slide switch inline on the battery positive rail
- Export Gerbers from KiCad: File → Fabrication Outputs → Gerbers
- Zip the
GRB/folder - Upload to jlcpcb.com
- Recommended settings:
- Layers: 2
- PCB thickness: 1.6 mm
- Surface finish: HASL (lead-free)
- Color: your choice
The case is designed to snugly fit the PCB, microcontroller, battery, and power switch. It consists of a bottom shell and a top plate per half.
[screenshot — CAD render or photo of printed case, top view] [screenshot — case bottom showing battery compartment]
| Parameter | Value |
|---|---|
| Material | PETG |
| Layer height | 0.2 mm |
| Infill | 20–30% |
| Wall count | 3 |
| Supports | Yes (for encoder cutout) |
| Bed adhesion | Brim recommended |
PETG is recommended for its durability and slight flex — avoid PLA for keyboard cases as it can crack under screw pressure.
- The battery sits in a recessed pocket in the bottom shell
- M2 heat-set inserts are pressed into the bottom shell pillars
- The PCB sits on top of the standoffs and is secured with M2 screws
- The top plate snaps or screws over the PCB
[screenshot — exploded view or assembly photo]
Follow these steps for one half. Repeat identically for the second half.
- Inspect the PCB for any manufacturing defects
- Clean with isopropyl alcohol if needed
[screenshot — bare PCB]
- Orient all SOD-123 diodes correctly — the cathode line must match the PCB silkscreen
- Solder all 28 diodes using a fine-tip iron and no-clean flux
[screenshot — diodes soldered, close-up]
- Place the EC11 encoder in its footprint
- Solder the 5 pins; the mechanical legs can be soldered or clipped flush
[screenshot — encoder soldered]
- Place the MSK-12C02 switch in its footprint
- Solder carefully — pads are small
- Flash ZMK firmware to the Nice!Nano clone before soldering it in (easier to re-flash)
- See the Firmware section for instructions
- Test USB connection and BLE pairing
- Use low-profile machine pin sockets if you want the MCU to be removable (recommended)
- Solder the sockets to the PCB, then seat the MCU
[screenshot — MCU seated on PCB]
- Solder or plug the JST connector from the LiPo battery
- Double-check polarity before connecting — reversed polarity will destroy the MCU
- Snap the Kailh Choc v2 switches into the PCB from the top
- Solder all 28 switch pins on the bottom
[screenshot — switches installed]
- Press the NuPhy COAST Twilight keycaps onto the switches
[screenshot — keycaps installed, half complete]
- Press M2 heat-set inserts into the bottom shell with a soldering iron
- Place the battery into the battery pocket
- Lower the PCB assembly onto the standoffs
- Secure with M2 screws
- Route cables neatly and close the case
[screenshot — finished half, side view]
WESK runs ZMK Firmware — open-source, BLE-native, and designed for wireless split keyboards.
- Install the ZMK development environment
- Or use ZMK's GitHub Actions build (no local toolchain needed)
Sources/
└── config/
├── wesk.keymap # Key bindings and layers
├── wesk.conf # Bluetooth, battery, sleep settings
└── west.yml # ZMK module dependencies
Using GitHub Actions (recommended):
- Fork the ZMK repo and add your config files
- Push — GitHub Actions builds the
.uf2files automatically - Download the artifacts from the Actions tab
- Put the Nice!Nano clone into bootloader mode: double-tap the reset button
- It appears as a USB drive (
NICENANO) - Drag and drop the
.uf2file onto the drive - Repeat for the second half with the right-side firmware
- The left half is the central and connects to your computer
- The right half connects to the left half
- Hold the Bluetooth profile key to switch between up to 5 paired devices
[screenshot — ZMK keymap editor or keymap diagram]
Wesk/
├── GRB/ # Gerber files for PCB manufacturing (JLCPCB)
├── Sources/ # ZMK firmware config files
├── Wesk.kicad_pcb # KiCad PCB layout
├── Wesk.kicad_sch # KiCad schematic
├── Wesk.kicad_pro # KiCad project file
├── PCB.step # 3D STEP export of the PCB
├── .step # 3D STEP file (case or assembly)
├── LOGO.kicad_mod # Custom logo footprint
├── LOGO.kicad_sym # Custom logo symbol
├── DRC.rpt # KiCad Design Rule Check report
└── README.md
This project is open-source. Hardware design files (KiCad, Gerbers, STEP) and firmware configuration are released under the MIT License.
Feel free to build your own WESK, modify the design, and share your builds!
Built with ❤️ and too much solder.