rmk logo

rmk

Free

Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust

FreeFree tier
Type
Open Source

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.