2 unstable releases

0.1.0 Jan 18, 2024
0.0.3 Oct 26, 2023

#1469 in Hardware support

MIT/Apache

500KB
5.5K SLoC

RMK

Crates.io Docs Build

Keyboard firmware for cortex-m, with layer/dynamic keymap/vial support, written in Rust and tested on stm32 and rp2040.

News

Rmk just released version 0.1.0, migrate to Embassy! By migrating to Embassy, Rmk now has better async support, supports more MCUs much easier APIs than before. For examples using Embassy, check boards folder!

Prerequisites

This crate requires nightly Rust. openocd(stm32) or probe-rs(rp2040) is used for flashing & debugging.

Usage

You can build your own keyboard firmware using RMK or try built-in firmware example for stm32h7 & rp2040.

Build your own firmware

Example can be found at boards. The following is a simple step-to-step instruction for creating your own firmware:

  1. Create a rust embedded project, Add rmk to your project using cargo add rmk
  2. Choose your target, use rustup target add <your-target-name> to install the target. Here is the doc for target choosing. For example, rp2040 is Cortex-M0+, so its target is thumbv6m-none-eabi.
  3. Create .cargo/config.toml in your project's root, specify your target here. See boards/stm32h7/.cargo/config.toml
  4. Create main.rs, initialize your MCU in rtic's mod app, create usb polling task and keyboard task. See boards/stm32h7/src/main.rs

Use built-in example

rp2040

  1. Install probe-rs
       cargo install probe-rs --features cli
    
  2. Build the firmware
    cd boards/rp2040
    cargo build
    
  3. Flash it
    cd boards/rp2040
    cargo run
    

stm32h7

  1. Install openocd

  2. Build the firmware

    cd boards/stm32h7
    cargo build
    
  3. Flash

    openocd -f openocd.cfg -c "program target/thumbv7em-none-eabihf/debug/rmk-stm32h7 preverify verify reset exit"
    
  4. (Optional) Debug firmware using CMSIS-DAP

    Open the project using VSCode, press F5, the firmware will be automatically compiled and flashed. A debug session is started after flashing. Check .vscode/tasks.json and .vscode/launch.json for details.

Roadmap

A lot of todos at the list, any contributions are welcomed :)

  • support rp2040
  • basic keyboard functions
  • layer
  • system/media keys
  • vial support
  • eeprom
  • keyboard macro
  • encoder
  • RGB
  • cli tools

License

Rmk is licensed under either of

at your option.

Dependencies

~172MB
~6M SLoC