mirror of
https://github.com/wez/wezterm.git
synced 2024-09-11 14:25:57 +03:00
Fix Emits of Additional ANSI Characters
This commit ensures that ANSI chars won't be emitted when pressing non-standard modifier keys. Fixes #4975
This commit is contained in:
parent
22f9f8d288
commit
9992d59d9e
@ -396,7 +396,13 @@ impl KeyboardWithFallback {
|
||||
}
|
||||
_ => sym,
|
||||
}
|
||||
} else if kc.is_none() && key_code_from_sym.is_none() {
|
||||
} else if kc.is_none()
|
||||
&& key_code_from_sym.is_none()
|
||||
// Make sure that non-standard modifier keys of Neo2 layout are not mapped
|
||||
// to a fallback because that would result in extra emitions of the
|
||||
// original ANSI characters
|
||||
&& !Self::is_keysym_iso_modifier(xsym)
|
||||
{
|
||||
// Not sure if this is a good idea, see
|
||||
// <https://github.com/wez/wezterm/issues/4910> for context.
|
||||
match fallback_feed {
|
||||
@ -457,6 +463,17 @@ impl KeyboardWithFallback {
|
||||
}
|
||||
}
|
||||
|
||||
fn is_keysym_iso_modifier(xsym: xkbcommon::xkb::Keysym) -> bool {
|
||||
use xkbcommon::xkb::Keysym;
|
||||
matches!(
|
||||
xsym,
|
||||
Keysym::ISO_Level3_Lock
|
||||
| Keysym::ISO_Level3_Shift
|
||||
| Keysym::ISO_Level5_Lock
|
||||
| Keysym::ISO_Level5_Shift
|
||||
)
|
||||
}
|
||||
|
||||
fn mod_is_active(&self, modifier: &str) -> bool {
|
||||
// [TODO] consider state Depressed & consumed mods
|
||||
self.selected
|
||||
|
Loading…
Reference in New Issue
Block a user