2 unstable releases
0.1.0 | Jan 18, 2024 |
---|---|
0.0.3 | Oct 26, 2023 |
#1542 in Hardware support
655KB
9K
SLoC
RMK
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:
- 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.toml
in 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.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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~174MB
~6M SLoC