Added Modifier-only keybinding support

This commit is contained in:
PixelDots 2023-09-30 08:42:42 -05:00
parent d051f41de6
commit 37fb26a403
4 changed files with 73 additions and 18 deletions

View file

@ -56,13 +56,18 @@ where
}
#[allow(non_snake_case)]
pub fn deserialize_Keysym<'de, D>(deserializer: D) -> Result<Keysym, D::Error>
pub fn deserialize_Keysym<'de, D>(deserializer: D) -> Result<Option<Keysym>, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::de::{Error, Unexpected};
let name = String::deserialize(deserializer)?;
let name: Option<String> = Option::deserialize(deserializer)?;
if name.is_none() {
return Ok(None);
}
let name = name.unwrap();
//let name = format!("KEY_{}", code);
match xkb::keysym_from_name(&name, xkb::KEYSYM_NO_FLAGS) {
KeySyms::KEY_NoSymbol => match xkb::keysym_from_name(&name, xkb::KEYSYM_CASE_INSENSITIVE) {
@ -76,9 +81,9 @@ where
name,
xkb::keysym_get_name(x)
);
Ok(x)
Ok(Some(x))
}
},
x => Ok(x),
x => Ok(Some(x)),
}
}