Cargo Features

[dependencies]
rmk = { version = "0.6.1", default-features = false, features = ["storage", "col2row", "defmt", "std", "async_matrix", "rapid_debouncer", "split", "nrf52840_ble", "nrf52833_ble", "nrf52832_ble", "nrf52811_ble", "nrf52810_ble", "esp32c3_ble", "esp32c6_ble", "esp32s3_ble", "rp2040_pio", "rp2040_bl", "adafruit_bl", "log", "critical-section"] }
default = col2row, defmt, storage

These default features are set whenever rmk is added without default-features = false somewhere in the dependency tree.

storage default = embedded-storage, embedded-storage-async

the storage is optional to save memory

Affects rmk::storage, rmk::initialize_encoder_keymap_and_storage, rmk::initialize_keymap_and_storage

col2row default

If your PCB diode's direction is col2row, enable this feature. If it's row2col, disable this feature by default-features = false.

defmt default

Enable defmt feature

Enables defmt ^0.3, optional nrf-softdevice, use-defmt of postcard, defmt-03 of sequential-storage, defmt of usbd-hid, defmt-03 of embedded-hal, embedded-io-async, and optional embedded-hal-async, defmt of embassy-executor, embassy-futures, embassy-sync, embassy-time, embassy-usb, and optional embassy-nrf

std

Add std feature for testing

Enables arch-std, executor-thread and task-arena-size-32768 of embassy-executor, generic-queue-128 and std of embassy-time, std of optional critical-section

async_matrix

Enable async matrix scan

Enables embedded-hal-async

Affects matrix::MatrixTrait.wait_for_key

rapid_debouncer

Use rapid debouncer

split

Feature for split keyboard

Affects rmk::split

nrf52840_ble = _nrf_ble

BLE feature flags

⚠️ Due to the limitation of docs.rs, functions gated by BLE features won't show in docs.rs. You have to head to examples folder of RMK repo for their usages. Enable feature if you want to use nRF52840 with BLE.

Enables ble-central, nrf52840 and s140 of nrf-softdevice

nrf52833_ble = _nrf_ble

Enable feature if you want to use nRF52833 with BLE.

Enables ble-central, nrf52833 and s140 of nrf-softdevice

nrf52832_ble = _nrf_ble

Enable feature if you want to use nRF52832 with BLE.

Enables ble-central, nrf52832 and s132 of nrf-softdevice

nrf52811_ble = _nrf_ble

Enable feature if you want to use nRF52811 with BLE.

Enables nrf52811 and s112 of nrf-softdevice

nrf52810_ble = _nrf_ble

Enable feature if you want to use nRF52810 with BLE.

Enables nrf52810 and s112 of nrf-softdevice

esp32c3_ble = _esp_ble

Enable feature if you want to use ESP32C3 with BLE.

esp32c6_ble = _esp_ble

Enable feature if you want to use ESP32C6 with BLE.

esp32s3_ble = _esp_ble

Enable feature if you want to use ESP32S3 with BLE.

_ble _esp_ble? _nrf_ble?

Affects channel::LED_SIGNAL, rmk::ble

_esp_ble esp32c3_ble? esp32c6_ble? esp32s3_ble? = _ble

Enables std of ssmarshal and esp-idf-svc and esp32-nimble ^0.10

esp32-nimble:

Espressif dependencies

Affects ble::esp, config::RmkConfig.ble_battery_config

_nrf_ble adafruit_bl? nrf52810_ble? nrf52811_ble? nrf52832_ble? nrf52833_ble? nrf52840_ble? = _ble

Enables embassy-nrf, nrf-softdevice, and once_cell

once_cell:

Optional dependencies
nRF dependencies

Affects ble::nrf, config::RmkConfig.ble_battery_config, adc::nrf, split::nrf

rp2040_pio

Enable feature if you want to use RP2040 PIO UART

Enables embassy-hal-internal, embassy-rp, fixed, pio, and rp-pac

embassy-rp:

RP2040 dependencies

Affects split::rp

rp2040_bl

Enable feature if you want rp2040 bootloader jumping key

Enables embassy-rp

adafruit_bl = _nrf_ble

Enable feature if you're using Adafruit nRF52 bootloader and want bootloader jumping key

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

embedded-storage storage
embedded-storage-async storage
log implicit feature

Enables log

log:

A lightweight logging facade for Rust

critical-section implicit feature

Enables critical-section

critical-section:

Cross-platform critical section