// the find
HaoboGu/rmk
Rust keyboard firmware library with layers, macros, real-time keymap editing, wireless(BLE) and split support
RMK is a Rust keyboard firmware library built on top of Embassy, targeting hobbyist mechanical keyboard builders who want to run custom firmware on nRF52, rp2040, STM32, or ESP32 chips. It sits between QMK (C, mature, massive community) and writing embassy firmware from scratch, offering a TOML config path for non-Rust users and a code path for those who want full control. Active development, real users shipping hardware with it.
Native Vial support means you get a GUI keymap editor without writing any tooling yourself — that's a non-trivial feature that QMK took years to get right. The dual config/code API is well-thought-out: keyboard.toml covers 80% of use cases and the Rust API handles the rest, rather than forcing everyone through macros. Wireless latency at ~10ms BLE with multi-device support and months of battery life on 2000mAh is a genuine achievement for embedded Rust. The example coverage is unusually thorough — split keyboards, dongle setups, OLED, PIO — so you can usually find a working reference close to your target hardware.
Embassy's async embedded model is powerful but the learning curve is steep; if something goes wrong in the HAL or BLE stack, you're debugging async Rust on a microcontroller with no OS, which is not a beginner activity regardless of what the TOML config implies. ESP32 support leans on esp-idf and a separate Rust toolchain, so the cross-platform build story is fragmented — nRF and rp2040 builds are easier than ESP32 builds. No USB split support (only BLE split), which is an annoying gap if you want a wired split on hardware that doesn't have BLE. The project is pre-1.0 and has migration guides for v0.6→v0.9, meaning config files and APIs have broken repeatedly; adopting this for a production run of keyboards carries real upgrade risk.