aboutsummaryrefslogtreecommitdiff
path: root/niri-config
diff options
context:
space:
mode:
authorAndreas Stührk <andy@hammerhartes.de>2024-03-22 22:09:25 +0100
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-23 15:45:27 +0400
commitd120e0c45142251b7c59b3a36f9bda709a58095e (patch)
tree950da800bfba1e559e9be029f8830ac1ee9dd474 /niri-config
parent0f724f20116dd5b013f797521bb53649e7eeb3ed (diff)
downloadniri-d120e0c45142251b7c59b3a36f9bda709a58095e.tar.gz
niri-d120e0c45142251b7c59b3a36f9bda709a58095e.tar.bz2
niri-d120e0c45142251b7c59b3a36f9bda709a58095e.zip
input: Add support for ISO level3 shift modifier
This modifier is typically called "AltGr" on keyboards or "Mod5" in xkb layouts. Requires a Smithay update.
Diffstat (limited to 'niri-config')
-rw-r--r--niri-config/src/lib.rs25
1 files changed, 24 insertions, 1 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs
index 39b1f7f5..4e43d795 100644
--- a/niri-config/src/lib.rs
+++ b/niri-config/src/lib.rs
@@ -746,7 +746,8 @@ bitflags! {
const SHIFT = 2;
const ALT = 4;
const SUPER = 8;
- const COMPOSITOR = 16;
+ const ISO_LEVEL3_SHIFT = 16;
+ const COMPOSITOR = 32;
}
}
@@ -1542,6 +1543,10 @@ impl FromStr for Key {
modifiers |= Modifiers::ALT;
} else if part.eq_ignore_ascii_case("super") || part.eq_ignore_ascii_case("win") {
modifiers |= Modifiers::SUPER;
+ } else if part.eq_ignore_ascii_case("iso_level3_shift")
+ || part.eq_ignore_ascii_case("mod5")
+ {
+ modifiers |= Modifiers::ISO_LEVEL3_SHIFT;
} else {
return Err(miette!("invalid modifier: {part}"));
}
@@ -2087,4 +2092,22 @@ mod tests {
assert!("-".parse::<SizeChange>().is_err());
assert!("10% ".parse::<SizeChange>().is_err());
}
+
+ #[test]
+ fn parse_iso_level3_shift() {
+ assert_eq!(
+ "ISO_Level3_Shift+A".parse::<Key>().unwrap(),
+ Key {
+ trigger: Trigger::Keysym(Keysym::a),
+ modifiers: Modifiers::ISO_LEVEL3_SHIFT
+ },
+ );
+ assert_eq!(
+ "Mod5+A".parse::<Key>().unwrap(),
+ Key {
+ trigger: Trigger::Keysym(Keysym::a),
+ modifiers: Modifiers::ISO_LEVEL3_SHIFT
+ },
+ );
+ }
}