[package]
edition = "2024"
name = "rmk"
version = "0.9.0"
authors = ["Haobo Gu <haobogu@outlook.com>"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Keyboard firmware written in Rust"
homepage = "https://github.com/rmk-rs/rmk"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rmk-rs/rmk"
resolver = "2"
[package.metadata.docs.rs]
features = [
"split",
"vial",
"async_matrix",
"_ble",
]
[features]
_ble = [
"dep:trouble-host",
"dep:bt-hci",
"storage",
"rmk-types/_ble",
]
_esp_ble = [
"_ble",
"dep:esp-hal",
]
_no_saadc = []
_no_subrating = []
_no_usb = []
_nrf_ble = [
"_ble",
"dep:embassy-nrf",
"trouble-host?/security-p256-cortex-m4",
]
_usb_high_speed = []
adafruit_bl = ["_nrf_ble"]
async_matrix = []
default = [
"defmt",
"storage",
"vial",
"host_lock",
"watchdog",
]
defmt = [
"dep:defmt",
"rmk-types/defmt",
"embedded-hal/defmt-03",
"embedded-hal-async/defmt-03",
"embedded-io-async/defmt",
"embassy-time/defmt",
"embassy-usb/defmt",
"embassy-sync/defmt",
"embassy-futures/defmt",
"usbd-hid/defmt",
"sequential-storage/defmt",
"embassy-nrf?/defmt",
"postcard/use-defmt",
"trouble-host?/defmt",
"bt-hci?/defmt",
"heapless/defmt",
]
dfu = [
"dep:embassy-usb-dfu",
"dep:embassy-embedded-hal",
"rmk-types/dfu",
]
dfu_lock = ["host_lock"]
dfu_nrf = [
"dfu",
"dep:embassy-boot",
"dep:embassy-nrf",
"rmk-macro/dfu_nrf",
]
dfu_rp = [
"dfu",
"dep:embassy-boot-rp",
"dep:embassy-boot",
"rp2040",
"rmk-macro/dfu_rp",
]
dfu_split = [
"dfu",
"rmk-macro/dfu_split",
]
display = [
"dep:embedded-graphics",
"rmk-types/display",
]
dongle = [
"storage",
"rmk-types/rynk",
"rmk-types/dongle",
"trouble-host?/connection-event-queue-size-2",
"trouble-host?/l2cap-rx-queue-size-16",
"trouble-host?/l2cap-tx-queue-size-16",
"trouble-host?/gatt-client-notification-queue-size-8",
]
esp32c3_ble = [
"_esp_ble",
"_no_usb",
]
esp32c6_ble = [
"_esp_ble",
"_no_usb",
]
esp32h2_ble = [
"_esp_ble",
"_no_usb",
]
esp32s3_ble = ["_esp_ble"]
gc9107 = ["lcd_async"]
gc9a01 = ["lcd_async"]
host = ["dep:byteorder"]
host_lock = []
ili9225 = ["lcd_async"]
ili9341 = ["lcd_async"]
ili9342c = ["lcd_async"]
ili9486 = ["lcd_async"]
ili9488 = ["lcd_async"]
lcd_async = [
"display",
"dep:lcd-async",
]
log = [
"dep:log",
"trouble-host?/log",
]
nrf52810_ble = [
"_nrf_ble",
"_no_usb",
]
nrf52811_ble = [
"_nrf_ble",
"_no_usb",
]
nrf52820_ble = [
"_nrf_ble",
"_no_saadc",
]
nrf52832_ble = [
"_nrf_ble",
"_no_usb",
]
nrf52833_ble = ["_nrf_ble"]
nrf52840_ble = ["_nrf_ble"]
nrf54l15_ble = [
"_nrf_ble",
"_no_usb",
]
nrf54lm20_ble = [
"_nrf_ble",
"_usb_high_speed",
]
oled_async = [
"display",
"dep:oled_async",
"dep:display-interface",
"dep:display-interface-i2c",
]
passkey_entry = [
"_ble",
"rmk-types/passkey_entry",
]
pico_w_ble = [
"_ble",
"_no_subrating",
"dep:embassy-rp",
]
rm67162 = ["lcd_async"]
rp2040 = [
"dep:embassy-rp",
"embassy-rp/unstable-pac",
"dep:embassy-hal-internal",
"dep:pio",
"dep:fixed",
]
rynk = [
"host",
"host_lock",
"rmk-types/rynk",
]
sf32lb52x_ble = ["_ble"]
sh1106 = ["oled_async"]
sh1107 = ["oled_async"]
sh1108 = ["oled_async"]
split = [
"trouble-host?/connection-event-queue-size-2",
"trouble-host?/l2cap-rx-queue-size-16",
"trouble-host?/l2cap-tx-queue-size-16",
"trouble-host?/gatt-client-notification-queue-size-8",
"rmk-types/split",
]
ssd1306 = [
"display",
"dep:ssd1306",
"dep:display-interface",
"dep:display-interface-i2c",
]
ssd1309 = ["oled_async"]
st7735 = ["lcd_async"]
st7789 = ["lcd_async"]
st7796 = ["lcd_async"]
std = [
"embassy-time/mock-driver",
"embassy-time/generic-queue-128",
]
steno = ["rmk-types/steno"]
storage = [
"dep:embedded-storage",
"dep:embedded-storage-async",
"dep:embassy-embedded-hal",
]
subrating = ["split"]
usb_log = [
"dep:embassy-usb-logger",
"log",
]
use_1m_phy = []
vial = ["host"]
watchdog = ["rmk-macro/watchdog"]
zsa_voyager_bl = []
[lib]
name = "rmk"
path = "src/lib.rs"
doctest = false
[[test]]
name = "integration"
path = "tests/integration/main.rs"
[dependencies.bt-hci]
version = "0.10"
optional = true
[dependencies.byteorder]
version = "1"
optional = true
default-features = false
[dependencies.defmt]
version = "1"
optional = true
[dependencies.display-interface]
version = "0.5"
optional = true
[dependencies.display-interface-i2c]
version = "0.5"
optional = true
[dependencies.document-features]
version = "0.2"
[dependencies.embassy-boot]
version = "0.7"
optional = true
default-features = false
[dependencies.embassy-boot-rp]
version = "0.10.0"
optional = true
[dependencies.embassy-embedded-hal]
version = "0.6"
optional = true
[dependencies.embassy-futures]
version = "0.1"
[dependencies.embassy-hal-internal]
version = "0.5.0"
optional = true
[dependencies.embassy-nrf]
version = "0.11"
features = [
"unstable-pac",
"time",
]
optional = true
[dependencies.embassy-rp]
version = "0.10"
optional = true
[dependencies.embassy-sync]
version = "0.8"
[dependencies.embassy-time]
version = "0.5"
[dependencies.embassy-usb]
version = "0.6"
features = [
"max-interface-count-8",
"max-handler-count-8",
]
[dependencies.embassy-usb-dfu]
version = "0.3.0"
features = [
"cortex-m",
"dfu",
]
optional = true
[dependencies.embassy-usb-logger]
version = "0.6"
optional = true
[dependencies.embedded-graphics]
version = "0.8"
optional = true
[dependencies.embedded-hal]
version = "1.0.0"
[dependencies.embedded-hal-async]
version = "1.0.0"
[dependencies.embedded-io-async]
version = "0.7"
[dependencies.embedded-storage]
version = "0.3"
optional = true
[dependencies.embedded-storage-async]
version = "0.4"
optional = true
[dependencies.esp-hal]
version = "1.2.0-rc.0"
optional = true
[dependencies.fixed]
version = "1.28.0"
optional = true
[dependencies.futures]
version = "0.3"
features = ["async-await"]
default-features = false
[dependencies.heapless]
version = "0.9"
[dependencies.lcd-async]
version = "0.1"
optional = true
default-features = false
[dependencies.log]
version = "0.4"
optional = true
[dependencies.oled_async]
version = "0.2.1"
features = ["i2c"]
optional = true
[dependencies.paste]
version = "1"
[dependencies.pio]
version = "0.3.0"
optional = true
[dependencies.postcard]
version = "1"
features = ["experimental-derive"]
[dependencies.rmk-macro]
version = "=0.8.0"
[dependencies.rmk-types]
version = "=0.4.0"
[dependencies.sequential-storage]
version = "8.0.1"
features = ["postcard"]
[dependencies.serde]
version = "1"
features = ["derive"]
default-features = false
[dependencies.ssd1306]
version = "0.10"
features = ["async"]
optional = true
[dependencies.static_cell]
version = "2"
[dependencies.trouble-host]
version = "0.8"
features = [
"gatt",
"scan",
"derive",
"security",
"serde",
"default-packet-pool-size-32",
]
optional = true
[dependencies.usbd-hid]
version = "0.10"
[dev-dependencies.critical-section]
version = "1.2"
features = ["std"]
[dev-dependencies.embedded-hal-mock]
version = "0.11.1"
features = ["embedded-hal-async"]
[dev-dependencies.serde_json]
version = "1"
features = ["alloc"]
default-features = false
[build-dependencies.crc32fast]
version = "1.3"
[target.'cfg(all(target_arch = "arm", target_os = "none"))'.dependencies.cortex-m]
version = "0.7"