RMK
Keyboard firmware for cortex-m, with layer/dynamic keymap/vial support, written in Rust and tested on stm32 and rp2040.
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:
- Create a rust embedded project, Add rmk to your project using
cargo add rmk - 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 isthumbv6m-none-eabi. - Create
.cargo/config.tomlin your project's root, specify your target here. Seeboards/stm32h7/.cargo/config.toml - Create
main.rs, initialize your MCU in rtic'smod app, create usb polling task and keyboard task. Seeboards/stm32h7/src/main.rs
Use built-in example
rp2040
- Install probe-rs
cargo install probe-rs --features cli - Build the firmware
cd boards/rp2040 cargo build - Flash it
cd boards/rp2040 cargo run
stm32h7
-
Install openocd
-
Build the firmware
cd boards/stm32h7 cargo build -
Flash
openocd -f openocd.cfg -c "program target/thumbv7em-none-eabihf/debug/rmk-stm32h7 preverify verify reset exit" -
(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.jsonand.vscode/launch.jsonfor 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
- support embassy runtime
- macro
- encoder
- RGB
- cli tools