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.
This commit is contained in:
Andreas Stührk
2024-03-22 22:09:25 +01:00
committed by Ivan Molodetskikh
parent 0f724f2011
commit d120e0c451
3 changed files with 29 additions and 3 deletions
+24 -1
View File
@@ -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
},
);
}
}