all projects
systems2025
Sigil: Split keyboard firmware in Rust because QMK's codebase scared me
I built a split keyboard from scratch (Corne layout) and didn't want to use QMK because the C codebase is massive and I wanted to learn embedded Rust. Getting embassy-rs set up was its own adventure - the async executor docs were sparse and I bricked my board twice with bad flash configs. The split halves communicate over UART through a TRRS cable. The hardest part was USB HID descriptors - I spent a full weekend reading the USB spec PDFs before the host would recognize it as a keyboard. RGB effects are mostly copypasted from r/olkb posts because generative LED patterns are not my strength.
- › 8 configurable layers with tap-hold and combos
- › WS2812 RGB underglow (patterns borrowed from community)
- › SSD1306 OLED showing layer, WPM, and connection status
- › Split-half communication over UART/TRRS
- › Bricked the board twice learning embassy-rs flash configs