RKTK API Docs RKTK Home Repo

rktk/drivers/
mod.rs

1//! Drivers for the keyboard.
2
3use interface::{
4    display::DisplayDriver, mouse::MouseDriver, split::SplitDriver, system::SystemDriver,
5    usb::UsbReporterDriverBuilder, wireless::WirelessReporterDriverBuilder,
6};
7
8use crate::drivers::interface::{
9    debounce::DebounceDriver, encoder::EncoderDriver, keyscan::KeyscanDriver, rgb::RgbDriver,
10    storage::StorageDriver,
11};
12
13pub mod dummy;
14pub mod interface;
15
16/// All drivers required to run the keyboard.
17///
18/// Only the `key_scanner` and `usb` drivers are required.
19/// For other drivers, if the value is None, it will be handled appropriately.
20pub struct Drivers<
21    System: SystemDriver,
22    KeyScan: KeyscanDriver,
23    Debounce: DebounceDriver,
24    Encoder: EncoderDriver,
25    Rgb: RgbDriver,
26    Storage: StorageDriver,
27    Split: SplitDriver,
28    Ble: WirelessReporterDriverBuilder,
29    Usb: UsbReporterDriverBuilder,
30    Display: DisplayDriver,
31    Mouse: MouseDriver,
32> {
33    pub system: System,
34    pub keyscan: KeyScan,
35    pub debounce: Option<Debounce>,
36    pub encoder: Option<Encoder>,
37    pub rgb: Option<Rgb>,
38    pub storage: Option<Storage>,
39    pub split: Option<Split>,
40    pub ble_builder: Option<Ble>,
41    pub usb_builder: Option<Usb>,
42    pub mouse: Option<Mouse>,
43    pub display: Option<Display>,
44}