rmk-rs/rmk

Rustrmk.rs

A modern, easy-to-use, and feature-rich keyboard firmware written in Rust.

cortex-mfirmwarekeyboardruststm32rp2040embeddedkeyboard-firmwareusbusb-hidesp32nrf52
스타 성장
스타
1.8k
포크
227
주간 성장
+8
이슈
45
5001k1.5k
2023년 11월2024년 10월2025년 9월2026년 9월
아티팩트crates.io
README

Logo

A modern, easy-to-use, and feature-rich keyboard firmware written in Rust.

👉 Join our Discord server for discussions, support, and community collaboration!


中文

Features

  • Broad microcontroller compatibility: Leveraging embassy, RMK supports a comprehensive range of microcontrollers, including stm32, nRF, rp2040(w), esp32, etc
  • Dynamic keymap customization: RMK offers real-time keymap modifications through Vial, or its native Rynk protocol (experimental). You can even edit keymaps over BLE connections wirelessly
  • Advanced keyboard functionality: RMK comes with lots of advanced keyboard features by default, including layer switching, media controls, system commands, mouse control, and more
  • Wireless connectivity: BLE wireless support with automatic reconnection and multi-device capabilities for nRF52, nRF54, esp32, Pi Pico W and SF32LB52 microcontrollers, tested on nRF52840, nRF54L15, nRF54LM20, esp32c3, esp32c6, esp32h2, esp32s3, Pi Pico W
  • Easy configuration: RMK simplifies keyboard development through a single keyboard.toml configuration file. For Rust enthusiasts, the firmware remains highly customizable using Rust code
  • Optimized performance: RMK achieves approximately 2ms latency in wired mode and 10ms in wireless mode. With the async_matrix feature enabled, power consumption is significantly reduced—a 2000mAh battery can power your keyboard for several months

User Documentation | API Reference | FAQs | Changelog

Real-World Implementations

rmk-ble-keyboard dactyl-lynx-rmk sessile
Urchin zx66 rmk-zsa-voyager

Getting Started

Option 1: Start with a Template

Quickly bootstrap your project using rmkit and the official RMK project template.

cargo install rmkit flip-link
# If you encounter installation issues on Windows, try this alternative command:
# powershell -ExecutionPolicy ByPass -c "irm https://github.com/rmk-rs/rmkit/releases/latest/download/rmkit-installer.ps1 | iex"
rmkit init

For comprehensive guidance, refer to the User Guide.

Option 2: Explore Built-in Examples

Browse the examples in the examples directory. Below are step-by-step instructions for rp2040 development. The process is similar for other microcontrollers when using a debug probe.

rp2040 Setup

  1. Install probe-rs

    curl --proto '=https' --tlsv1.2 -LsSf https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.sh | sh
    
  2. Build the firmware

    cd examples/use_rust/rp2040
    cargo build --release
    
  3. Flash using a debug probe

    With a debug probe connected to your rp2040 board, simply run:

    cd examples/use_rust/rp2040
    cargo run --release
    
  4. (Optional) Flash via USB

    Without a debug probe, you can use elf2uf2-rs to flash via USB:

    1. Install the tool: cargo install elf2uf2-rs
    2. Modify examples/use_rust/rp2040/.cargo/config.toml to use elf2uf2:
      - runner = "probe-rs run --chip RP2040"
      + runner = "elf2uf2-rs -d"
      
    3. Connect your rp2040 board while holding the BOOTSEL button until the USB drive appears
    4. Flash the firmware:
      cd examples/use_rust/rp2040
      cargo run --release
      
      Upon successful completion, you'll see output similar to:
      Finished release [optimized + debuginfo] target(s) in 0.21s
      Running `elf2uf2-rs -d 'target\thumbv6m-none-eabi\release\rmk-rp2040'`
      Found pico uf2 disk G:\
      Transfering program to pico
      173.00 KB / 173.00 KB [=======================] 100.00 % 193.64 KB/s
      

Development Roadmap

Current roadmap of RMK can be found here.

Minimum Supported Rust Version (MSRV)

RMK is developed against the latest stable Rust release. While other versions may work, they are not fully tested.

License

RMK is licensed under either of

at your option.

관련 저장소
RT-Thread/rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/

CApache License 2.0embedded-systemskernel
rt-thread.io
12.2k5.5k
tock/tock

A secure embedded operating system for microcontrollers

Rustcrates.ioOtherembeddedoperating-system
tockos.org
6.4k856
stlink-org/stlink

Open source STM32 MCU programming toolset

CBSD 3-Clause "New" or "Revised" Licensestlinkstm32
5.2k1.3k
libopencm3/libopencm3

Open source ARM Cortex-M microcontroller library

ClibraryGNU General Public License v3.0libopencm3cortex-m
libopencm3.org
3.7k1.1k
ARMmbed/DAPLink

CApache License 2.0embeddedcortex-m
daplink.io
2.8k1.1k
rtic-rs/rtic

Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers

Rustcrates.iolibraryApache License 2.0rustno-std
rtic.rs
2.4k263
armink/CmBacktrace

Advanced fault backtrace library for ARM Cortex-M series MCU | ARM Cortex-M 系列 MCU 错误追踪库

ClibraryMIT Licensebacktracearm
2.2k735
uTensor/uTensor

TinyML AI inference library

C++Apache License 2.0tensorflowmbed
1.9k250
pyocd/pyOCD

Open source Python library for programming and debugging Arm Cortex-M microcontrollers

PythonPyPIlibraryApache License 2.0embeddedpython
pyocd.io
1.5k556
ARM-software/CMSIS-DSP

CMSIS-DSP embedded compute library for Cortex-M and Cortex-A

ClibraryApache License 2.0cortex-acortex-m
arm-software.github.io/CMSIS-DSP
1.1k244
github0null/eide

An embedded development environment for mcs51/stm8/avr/cortex-m/riscv on VsCode.

TypeScriptnpmMIT Licensestm328051
em-ide.com
1k106
rust-embedded/cortex-m

Low level access to Cortex-M processors

Rustcrates.iolibraryApache License 2.0rustno-std
1k202