rmk 0.1.21

Keyboard firmware written in Rust
Documentation
[package]
name = "rmk"
version = "0.1.21"
authors = ["Haobo Gu <haobogu@outlook.com>"]
description = "Keyboard firmware written in Rust"
homepage = "https://github.com/haobogu/rmk"
repository = "https://github.com/haobogu/rmk"
readme = "../README.md"
edition = "2021"
license = "MIT OR Apache-2.0"
resolver = "2"

[dependencies]
rmk-config = { version = "0.1.3", path = "../rmk-config" }
rmk-macro = { version = "0.1.5", path = "../rmk-macro" }
embedded-hal = { version = "1.0.0", features = ["defmt-03"] }
embedded-hal-async = { version = "1.0.0", features = [
    "defmt-03",
], optional = true }
embedded-storage = "0.3"
embedded-storage-async = "0.4"
embassy-embedded-hal = { version = "0.1" }
embassy-time = { version = "0.3", features = ["defmt"] }
embassy-usb = { version = "0.2", features = [
    "defmt",
    "usbd-hid",
    "max-interface-count-8",
    "max-handler-count-8",
] }
heapless = "0.8.0"
embassy-sync = { version = "0.6", features = ["defmt"] }
embassy-futures = { version = "0.1", features = ["defmt"] }
embassy-executor = { version = "0.5", features = ["defmt"] }

usbd-hid = { version = "0.7.0", features = ["defmt"] }
ssmarshal = { version = "1.0", default-features = false }
defmt = "0.3"
static_cell = "2"
num_enum = { version = "0.7", default-features = false }
bitfield-struct = "0.6"
byteorder = { version = "1.4", default-features = false }
futures = { version = "0.3", default-features = false }
sequential-storage = { version = "2.0", features = ["defmt-03"] }

# Optional dependencies
# nRF dependencies
once_cell = { version = "1.19", features = [
    "atomic-polyfill",
], default-features = false, optional = true }
nrf-softdevice = { version = "0.1.0", git = "https://github.com/embassy-rs/nrf-softdevice", rev = "d5f023b", features = [
    "defmt",
    "ble-peripheral",
    "critical-section-impl",
    "ble-gatt-server",
    "ble-sec",
], optional = true }
embassy-nrf = { version = "0.1.0", features = [
    "defmt",
    "unstable-pac",
    "time",
], optional = true }

# Espressif dependencies
esp32-nimble = { version = "0.6.0", optional = true }
esp-idf-svc = { version = "0.48", default-features = false, optional = true }

# Document feature
document-features = "0.2"

[features]
default = ["col2row", "rapid_debouncer"]
## If your PCB diode's direction is col2row, enable this feature. If it's row2col, disable this feature.
col2row = []

## Enable async matrix scan
async_matrix = ["dep:embedded-hal-async"]

## Use rapid debouncer
rapid_debouncer = []

#! ##### 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`](https://github.com/HaoboGu/rmk/tree/main/examples) folder of RMK repo for their usages.
## Enable feature if you want to use nRF52840 with BLE.
nrf52840_ble = [
    "_nrf_ble",
    "dep:embassy-nrf",
    "dep:once_cell",
    "nrf-softdevice/nrf52840",
    "nrf-softdevice/s140",
]
## Enable feature if you want to use nRF52832 with BLE.
nrf52832_ble = [
    "_nrf_ble",
    "dep:embassy-nrf",
    "dep:once_cell",
    "nrf-softdevice/nrf52832",
    "nrf-softdevice/s132",
]
## Enable feature if you want to use ESP32C3 with BLE.
esp32c3_ble = ["_esp_ble"]
## Enable feature if you want to use ESP32S3 with BLE.
esp32s3_ble = ["_esp_ble"]
_esp_ble = [
    "_ble",
    "rmk-config/_esp_ble",
    "ssmarshal/std",
    "dep:esp32-nimble",
    "dep:esp-idf-svc",
]
_nrf_ble = ["_ble", "rmk-config/_nrf_ble", "dep:nrf-softdevice"]
_ble = []