Firmware for a wireless three-pedal keyboard, built with RMK, a feature-rich keyboard firmware written in Rust.
See the Seeed Studio XIAO nRF52840 pinout sheet for the controller's pin assignments.
Meh means Control+Option+Shift on macOS. Tap-hold means tap then hold: a
quick press sends the Tap action and a longer press sends the Hold action.
Hold thresholds are 1 second (2 seconds for pedal 1).
| Pedal | Position | Tap | Hold |
|---|---|---|---|
| 1 | Left | Meh+T | Enter bootloader (2 s) |
| 2 | Middle | Meh+5 | Play/Pause |
| 3 | Right | Meh+M | Meh+Backspace |
Pedal 1 is also the bootmagic paddle. Hold it while resetting or powering on the XIAO to enter the UF2 bootloader. While the firmware is running, hold pedal 1 for 2 seconds to enter the bootloader again.
If you’re using the Adafruit_nRF52_Bootloader (pre-installed on the nice!nano), you’re in luck! This bootloader supports the .uf2 firmware format, which eliminates the need for a debugging probe to flash your firmware. RMK uses the cargo-make tool to generate .uf2 firmware, with the generation process defined in the Makefile.toml.
Follow these steps to generate and flash the .uf2 firmware with RMK:
-
Get
cargo-maketool:cargo install --force cargo-make
-
Compile RMK and generates .uf2 firmware:
cargo make uf2 --release
-
Flash
- Put your board into bootloader mode. A USB drive will appear on your computer.
- Drag and drop the generated .uf2 firmware file onto the USB drive. The RMK firmware will be automatically flashed onto your microcontroller.
For additional details on entering bootloader mode and flashing firmware, refer to the nice!nano documentation
Most nice!nano compatible boards have bootloader with SoftDevice pre-flashed. Since v0.7.x, RMK will remove old SoftDevice Bluetooth stack and replace it with its own. So if you want to rollback to v0.6.x, or switch to firmwares that use SoftDevice stack(for example, zmk), you will need to re-flash the bootloader.
RMK defaults to USB-priority mode if a USB cable is connected. After flashing, remember to disconnect the USB cable, or switch to BLE-priority mode by pressing User11(Switch Output) key.
RMK 0.9 supports the Adafruit Feather nRF52832 through its nrf52832_ble
feature. The current direct-pin GPIOs are also exposed on the Feather:
P0_02: A0P0_03: A1P0_28: A4
This is not a drop-in firmware target. The nRF52832 has 512 KiB flash, 64 KiB
RAM, and no native USB peripheral, so keyboard output is BLE-only. The build
would need to use nrf52832 features in RMK, nrf-sdc, nrf-mpsl, and
embassy-nrf, plus an nRF52832 memory map. The current USB mass-storage UF2
workflow does not work on this board; use the Feather's serial DFU bootloader or
an SWD probe instead.
Except for third-party components, this project is licensed under the PolyForm Noncommercial License 1.0.0. RMK is available under the MIT License or Apache License 2.0; see the third-party notices.