Why a split keyboard
After months of coding 8+ hours a day I started getting numbness and tingling in my wrists — early signs of carpal tunnel. A traditional keyboard forces both hands together, wrists bent inward, for hours at a time.
I already owned a ZSA Moonlander. It helped, but I wanted to go further: understand every layer myself, from solder joint to firmware byte. So I bought a bare kit and built one from scratch.
Split keyboards keep hands at shoulder width — wrists straight, thumbs neutral. Thumb clusters offload work from the pinkies. Layers mean symbols are always one key off the home row.
The kit — PandaKB Lily58 RGB MX
I picked the PandaKB Lily58 RGB MX: a well-documented open-source design with per-key RGB, hotswap sockets, and dual RP2040 microcontrollers. Both halves communicate over a TRRS cable.
Bill of materials
Tools needed
The build process
The PandaKB build guide recommends a specific order — I followed it closely because desoldering is painful on a board this dense. The golden rule: "Think twice, solder once."
The bug: all 70 LEDs went dark
After full assembly the RGB matrix wouldn't light up. Not one LED. Both WS2812B-5050 (underglow) and SK6812MINI-E (per-key) chains were dead.
WS2812-type LEDs run as a single daisy chain — data flows LED 1 → 2 → 3 → … → 70. If LED #1 fails, every LED downstream receives no signal and stays dark.
A multimeter traced the break to the very first LED in the chain. Reflowed the solder joint. All 70 came back on.
Common issue from PandaKB guide: Incorrect RGB display or a dead matrix almost always means a bad LED solder joint or wrong orientation on one of the early LEDs in the chain. Always reflow LED #1 before replacing components.
Firmware: QMK + Vial
The stock PandaKB binary had a split-hand detection bug on RP2040 — I compiled from source using the QMK Vial fork. Vial adds a live USB remap GUI: rearrange any key without recompiling or reflashing.
My layout is adapted from the ZSA Moonlander I used before. Every programming symbol sits one key off the home row on Layer 1. Went from 60 WPM → 15 WPM the first week. Back to faster than before — and the wrist pain is gone.