[package] name = "rmk" version = "0.4.2" authors = ["Haobo Gu "] 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.2.1", path = "../rmk-config" } rmk-macro = { version = "0.3.1", 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-io-async = { version = "0.6", features = ["defmt-03"] } embedded-storage = "0.3" embedded-storage-async = "0.4" embassy-embedded-hal = { version = "0.2" } embassy-time = { version = "0.3", features = ["defmt"] } embassy-usb = { version = "0.3", 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.6", features = ["defmt"] } usbd-hid = { version = "0.8.2", 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.9" byteorder = { version = "1", default-features = false } futures = { version = "0.3", default-features = false } sequential-storage = { version = "3.0.0", features = ["defmt-03"] } serde = { version = "1", default-features = false, features = ["derive"] } postcard = { version = "1", features = ["experimental-derive", "use-defmt"] } # 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-gatt-client", "ble-sec", ], optional = true } embassy-nrf = { version = "0.2.0", features = [ "defmt", "unstable-pac", "time", ], optional = true } # Espressif dependencies esp32-nimble = { version = "0.8", optional = true } esp-idf-svc = { version = "0.49", default-features = false, optional = true } # Document feature document-features = "0.2" [package.metadata.docs.rs] features = ["split"] # Architecture specific dependencies [target.'cfg(all(target_arch = "arm", target_os = "none"))'.dependencies] cortex-m = { version = "0.7" } [features] default = ["col2row"] ## 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 = [] ## Feature for split keyboard split = [] ## Internal feature that indicates no USB is used, this feature will be auto-activated for some chips _no_usb = [] ## Internal feature that indicates no storage available, or it's unnecessary to pass storage to the main RMK API _no_external_storage = [] #! ### 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", "nrf-softdevice/nrf52840", "nrf-softdevice/s140", "nrf-softdevice/ble-central", ] ## Enable feature if you want to use nRF52833 with BLE. nrf52833_ble = [ "_nrf_ble", "nrf-softdevice/nrf52833", "nrf-softdevice/s140", "nrf-softdevice/ble-central", ] ## Enable feature if you want to use nRF52832 with BLE. nrf52832_ble = [ "_nrf_ble", "_no_usb", "nrf-softdevice/nrf52832", "nrf-softdevice/ble-central", "nrf-softdevice/s132", ] ## Enable feature if you want to use nRF52811 with BLE. nrf52811_ble = [ "_nrf_ble", "_no_usb", "nrf-softdevice/nrf52811", "nrf-softdevice/s112", ] ## Enable feature if you want to use nRF52810 with BLE. nrf52810_ble = [ "_nrf_ble", "_no_usb", "nrf-softdevice/nrf52810", "nrf-softdevice/s112", ] ## Enable feature if you want to use ESP32C3 with BLE. esp32c3_ble = ["_esp_ble"] ## Enable feature if you want to use ESP32C6 with BLE. esp32c6_ble = ["_esp_ble"] ## Enable feature if you want to use ESP32S3 with BLE. esp32s3_ble = ["_esp_ble"] _esp_ble = [ "_ble", "_no_usb", # ESP doesn't have USB support right now "rmk-config/_esp_ble", "ssmarshal/std", "dep:esp32-nimble", "dep:esp-idf-svc", ] _nrf_ble = [ "_ble", "rmk-config/_nrf_ble", "dep:nrf-softdevice", "dep:embassy-nrf", "dep:once_cell", ] _ble = ["_no_external_storage"]