[update] config: add space key; add support for using '_' as a 'None'

main
EdenQwQ 2 years ago
parent 467067459c
commit ca68cc6cb1

@ -137,6 +137,7 @@ fn parse_contents(contents: String) -> Result<Vec<Hotkey>, Error> {
("return", evdev::Key::KEY_ENTER),
("enter", evdev::Key::KEY_ENTER),
("tab", evdev::Key::KEY_TAB),
("space", evdev::Key::KEY_SPACE),
("minus", evdev::Key::KEY_MINUS),
("-", evdev::Key::KEY_MINUS),
("equal", evdev::Key::KEY_EQUAL),
@ -324,11 +325,15 @@ fn parse_keybind(
mod_to_mod_enum: &HashMap<&str, Modifier>,
) -> Result<(evdev::Key, Vec<Modifier>), Error> {
let line = line.split('#').next().unwrap();
let tokens: Vec<String> = line.split('+').map(|s| s.trim().to_lowercase()).collect();
let tokens: Vec<String> =
line.split('+').map(|s| s.trim().to_lowercase()).filter(|s| s != "_").collect();
let last_token = tokens.last().unwrap().trim();
// Check if each token is valid
for token in &tokens {
if token == "_" {
continue;
}
if key_to_evdev_key.contains_key(token.as_str()) {
// Can't have a key that's like a modifier
if token != last_token {
@ -1401,6 +1406,24 @@ ctals + b
],
)
}
#[test]
fn test_none() -> std::io::Result<()> {
let contents = "
super + {_, shift} + b
{firefox, brave}";
eval_config_test(
contents,
vec![
Hotkey::new(evdev::Key::KEY_B, vec![Modifier::Super], "firefox".to_string()),
Hotkey::new(
evdev::Key::KEY_B,
vec![Modifier::Super, Modifier::Shift],
"brave".to_string(),
),
],
)
}
}
#[cfg(test)]

Loading…
Cancel
Save