Keyboard Device
Keyboard device configuration contains keyboard name, USB VID/PID, etc, which is the information about your keyboard that appears to the operating system or identifies your device.
Basic Configuration
The keyboard device info is defined in [keyboard] section of keyboard.toml, or device_config field in RmkConfig struct:
If serial_number is omitted, RMK embeds a version stamp automatically. For Vial builds (the
default), this is vial:f64c2b3c;rmk:<version>, which lets Vial discover the keyboard without a
hardcoded serial override. Non-Vial builds use rmk:<version> without the Vial marker. The Vial
marker comes first because BLE's serial number characteristic is length limited, so a trailing
marker can be truncated away.
Set serial_number explicitly in DeviceConfig to use your own value instead of the RMK default.
For Vial to discover the keyboard, the value must start with vial:f64c2b3c:
Hardware Selection
You must specify either a chip or board in keyboard.toml, but not both:
Option 1: Specify Chip
Option 2: Specify Board
Supported Hardware
Supported Chips
- Nordic nRF52 Series:
nrf52840,nrf52833,nrf52832,nrf52811,nrf52810 - Espressif ESP32 Series:
esp32c3,esp32c6,esp32h2,esp32s3 - Raspberry Pi:
rp2040 - STM32 Series: Any STM32 chip supported by embassy-stm32 with USB capability
rp2350 is currently supported via the Rust API examples, but keyboard.toml chip selection only recognizes rp2040 for now.
Supported Development Boards
nice!nano- nRF52840-based wireless boardnice!nano_v2- Updated version of nice!nanopi_pico_w- Raspberry Pi Pico W with WiFi/BLEXIAO BLE- Seeed Studio XIAO nRF52840
::: tip Board names are case-sensitive.
USB Configuration
For microcontrollers that lack full USB device functionality (such as the nRF52832 or ESP32-C3), USB support must be explicitly disabled: