diff --git a/src/config.rs b/src/config.rs index f3cc0f3..a18aa97 100644 --- a/src/config.rs +++ b/src/config.rs @@ -26,6 +26,7 @@ pub struct RawConfig { pub remap: HashMap>, #[serde(default)] pub commands: HashMap>, + #[serde(default)] pub settings: HashMap, } diff --git a/src/udev_monitor.rs b/src/udev_monitor.rs index aaaab23..6c45691 100644 --- a/src/udev_monitor.rs +++ b/src/udev_monitor.rs @@ -112,15 +112,14 @@ pub async fn start_reader(reader: EventReader) { pub fn get_event_stream(path: &Path, config: HashMap) -> EventStream { let mut device: Device = Device::open(path).expect("Couldn't open device path."); - if config.get("default") - .unwrap() - .settings - .get("GRAB_DEVICE") - .expect("No GRAB_DEVICE setting specified, this device will be ignored.") == &"true".to_string() - { - device.grab().unwrap(); - }; - + match config.get("default").unwrap().settings.get("GRAB_DEVICE") { + Some(value) => { + if value == &true.to_string() { + device.grab().unwrap() + } + } + None => device.grab().unwrap() + } let stream: EventStream = device.into_event_stream().unwrap(); return stream } @@ -143,4 +142,3 @@ pub fn is_mapped(udev_device: &tokio_udev::Device, config_files: &Vec) - return false } -