rmk_config/
keyboard.rs

1use crate::{DependencyConfig, KeyboardTomlConfig};
2
3/// Keyboard's basic info
4#[derive(Clone, Debug)]
5pub struct Basic {
6    /// Keyboard name
7    pub name: String,
8    /// Vender id
9    pub vendor_id: u16,
10    /// Product id
11    pub product_id: u16,
12    /// Manufacturer
13    pub manufacturer: String,
14    /// Product name
15    pub product_name: String,
16    /// Serial number
17    pub serial_number: String,
18}
19
20impl Default for Basic {
21    fn default() -> Self {
22        Self {
23            name: "RMK Keyboard".to_string(),
24            vendor_id: 0xE118,
25            product_id: 0x0001,
26            manufacturer: "RMK".to_string(),
27            product_name: "RMK Keyboard".to_string(),
28            serial_number: "vial:f64c2b3c:000001".to_string(),
29        }
30    }
31}
32
33impl KeyboardTomlConfig {
34    pub fn get_device_config(&self) -> Basic {
35        let default = Basic::default();
36        let keyboard = self.keyboard.as_ref().unwrap();
37        Basic {
38            name: keyboard.name.clone(),
39            vendor_id: keyboard.vendor_id,
40            product_id: keyboard.product_id,
41            manufacturer: keyboard.manufacturer.clone().unwrap_or(default.manufacturer),
42            product_name: keyboard.product_name.clone().unwrap_or(default.product_name),
43            serial_number: keyboard.serial_number.clone().unwrap_or(default.serial_number),
44        }
45    }
46
47    pub fn get_dependency_config(&self) -> DependencyConfig {
48        if let Some(dependency) = &self.dependency {
49            dependency.clone()
50        } else {
51            DependencyConfig::default()
52        }
53    }
54}