rmk
FreeMechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust
FreeFree tier
About rmk
RMK is an open-source Rust keyboard firmware that supports a wide range of microcontrollers including STM32, nRF, RP2040, and ESP32. It features dynamic keymap customization via Vial, advanced keyboard functions (layers, media controls, system commands, mouse control), BLE wireless connectivity, and easy configuration through a TOML file. It achieves low latency (2ms wired, 10ms wireless) and low power consumption, with a 2000mAh battery lasting several months. The firmware is designed for both wired and wireless split keyboards and provides real-time keymap editing over BLE.
Key Features
Broad microcontroller compatibility (STM32, nRF, RP2040, ESP32)
Dynamic keymap customization via Vial with real-time editing
Advanced keyboard functions: layers, media controls, system commands, mouse control
BLE wireless support with auto-reconnection and multi-device capabilities
Easy configuration via keyboard.toml file
Optimized performance: ~2ms wired latency, ~10ms wireless latency
Low power consumption (2000mAh battery lasts months)
Real-time keymap editing over BLE connections
Split keyboard support
Macro support
Pros & Cons
Pros
- Written in Rust for safety and performance
- Supports multiple microcontroller families
- Dynamic keymap editing via Vial without reflashing
- BLE wireless with low latency
- Low power consumption
- Easy configuration through TOML
- Active community on Discord
Cons
- Requires Rust knowledge for full customization
- Documentation may be limited for beginners
- Hardware dependencies (debug probe may be needed for flashing)
Best For
Custom mechanical keyboardsWireless mechanical keyboardsLow-power keyboard projectsOpen-source keyboard firmware development
FAQ
What microcontrollers are supported?
RMK supports STM32, nRF, RP2040(w), and ESP32 microcontrollers.
Does RMK support wireless connectivity?
Yes, it supports BLE wireless on nRF52 and ESP32 microcontrollers, with automatic reconnection and multi-device capabilities.
How do I get started with RMK?
You can start by using the rmkit CLI tool to initialize a project from the official template, or explore the built-in examples in the examples directory.
Is RMK a free and open-source project?
Yes, RMK is open-source and freely available on GitHub under MIT and Apache licenses.