Skip to content

Commit

Permalink
fix positional modifiers on Windows
Browse files Browse the repository at this point in the history
I overlooked this as part of e83f2c9
The positional mods need to be stripped out when looking up keymap
assignments, so let's do that.

refs: #2009
refs: #2037
  • Loading branch information
wez committed May 26, 2022
1 parent 0b64d2c commit b2cd800
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions wezterm-gui/src/inputmap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -232,15 +232,20 @@ impl InputMap {

pub fn is_leader(&self, key: &KeyCode, mods: Modifiers) -> Option<std::time::Duration> {
if let Some((leader_key, leader_mods, timeout)) = self.leader.as_ref() {
if *leader_key == *key && *leader_mods == Self::remove_positional_alt(mods) {
if *leader_key == *key && *leader_mods == Self::remove_positional_mods(mods) {
return Some(timeout.clone());
}
}
None
}

fn remove_positional_alt(mods: Modifiers) -> Modifiers {
mods - (Modifiers::LEFT_ALT | Modifiers::RIGHT_ALT)
fn remove_positional_mods(mods: Modifiers) -> Modifiers {
mods - (Modifiers::LEFT_ALT
| Modifiers::RIGHT_ALT
| Modifiers::LEFT_CTRL
| Modifiers::RIGHT_CTRL
| Modifiers::LEFT_SHIFT
| Modifiers::RIGHT_SHIFT)
}

pub fn has_table(&self, name: &str) -> bool {
Expand All @@ -259,13 +264,13 @@ impl InputMap {
};

table
.get(&key.normalize_shift(Self::remove_positional_alt(mods)))
.get(&key.normalize_shift(Self::remove_positional_mods(mods)))
.cloned()
}

pub fn lookup_mouse(&self, event: MouseEventTrigger, mods: Modifiers) -> Option<KeyAssignment> {
self.mouse
.get(&(event, Self::remove_positional_alt(mods)))
.get(&(event, Self::remove_positional_mods(mods)))
.cloned()
}
}

0 comments on commit b2cd800

Please sign in to comment.