skip to content
all projects
Sigil hero
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