diff options
| author | Kirill Chibisov <contact@kchibisov.com> | 2025-05-03 07:05:22 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-03 07:05:22 +0900 |
| commit | def47a5dd511ed20607eb5d9e5e7140afd16b31d (patch) | |
| tree | 088657dd9b8c8d94179be7e1a613a820067f0f01 | |
| parent | a0c4dfe962fdb0ee00b85de1cd2af16a0e8e2e9e (diff) | |
| download | r-alacritty-def47a5dd511ed20607eb5d9e5e7140afd16b31d.tar.gz r-alacritty-def47a5dd511ed20607eb5d9e5e7140afd16b31d.tar.bz2 r-alacritty-def47a5dd511ed20607eb5d9e5e7140afd16b31d.zip | |
Fix disambiguation for Enter/Tab/Backspace
The keys were not disambiguated, but they should be. Was just an
oversight.
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | alacritty/src/config/bindings.rs | 8 | ||||
| -rw-r--r-- | alacritty/src/input/keyboard.rs | 11 |
3 files changed, 14 insertions, 6 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 509183fe..0cb79b0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ Notable changes to the `alacritty_terminal` crate are documented in its - Crash when OpenGL context resets - Modifier keys clearing selection with kitty keyboard protocol enabled - `glyph_offset.y` not applied to strikeout +- `Enter`,`Tab`, `Backspace` not disambiguated with `shift` in kitty keyboard's disambiguate mode ## 0.15.1 diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs index 931b0583..d7ce9a9e 100644 --- a/alacritty/src/config/bindings.rs +++ b/alacritty/src/config/bindings.rs @@ -449,11 +449,11 @@ pub fn default_key_bindings() -> Vec<KeyBinding> { F2, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1bOQ".into()); F3, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1bOR".into()); F4, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1bOS".into()); - Tab, ModifiersState::SHIFT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC; Action::Esc("\x1b[Z".into()); - Tab, ModifiersState::SHIFT | ModifiersState::ALT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC; Action::Esc("\x1b\x1b[Z".into()); + Tab, ModifiersState::SHIFT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1b[Z".into()); + Tab, ModifiersState::SHIFT | ModifiersState::ALT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1b\x1b[Z".into()); Backspace, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC; Action::Esc("\x7f".into()); - Backspace, ModifiersState::ALT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC; Action::Esc("\x1b\x7f".into()); - Backspace, ModifiersState::SHIFT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC; Action::Esc("\x7f".into()); + Backspace, ModifiersState::ALT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x1b\x7f".into()); + Backspace, ModifiersState::SHIFT, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\x7f".into()); Enter => KeyLocation::Numpad, ~BindingMode::VI, ~BindingMode::SEARCH, ~BindingMode::REPORT_ALL_KEYS_AS_ESC, ~BindingMode::DISAMBIGUATE_ESC_CODES; Action::Esc("\n".into()); // Vi mode. Space, ModifiersState::SHIFT | ModifiersState::CONTROL, ~BindingMode::SEARCH; Action::ToggleViMode; diff --git a/alacritty/src/input/keyboard.rs b/alacritty/src/input/keyboard.rs index ccdeac3f..113472c4 100644 --- a/alacritty/src/input/keyboard.rs +++ b/alacritty/src/input/keyboard.rs @@ -152,8 +152,15 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> { let disambiguate = mode.contains(TermMode::DISAMBIGUATE_ESC_CODES) && (key.logical_key == Key::Named(NamedKey::Escape) - || (!mods.is_empty() && mods != ModifiersState::SHIFT) - || key.location == KeyLocation::Numpad); + || key.location == KeyLocation::Numpad + || (!mods.is_empty() + && (mods != ModifiersState::SHIFT + || matches!( + key.logical_key, + Key::Named(NamedKey::Tab) + | Key::Named(NamedKey::Enter) + | Key::Named(NamedKey::Backspace) + )))); match key.logical_key { _ if disambiguate => true, |