Skip to content

Commit

Permalink
Fix Emits of Additional ANSI Characters
Browse files Browse the repository at this point in the history
This commit ensures that ANSI chars won't be emitted when pressing
non-standard modifier keys.

Fixes #4975
  • Loading branch information
schrieveslaach committed Feb 15, 2024
1 parent 22f9f8d commit 9992d59
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion window/src/os/x11/keyboard.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 9992d59

Please sign in to comment.