aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2023-12-28 22:30:51 +0400
committerKirill Chibisov <contact@kchibisov.com>2023-12-30 09:42:02 +0400
commit6223cabe17945a86ff4adeb3dfb84c90186f4ea3 (patch)
tree46b82ac793e70b7aa25f652c6ea019dffe44f9aa
parent91e3cd6a40aa98cf9a76e7cd3534f7fbb0a27098 (diff)
downloadalacritty-6223cabe17945a86ff4adeb3dfb84c90186f4ea3.tar.gz
alacritty-6223cabe17945a86ff4adeb3dfb84c90186f4ea3.zip
Use pre-composed key for `Alt` bindings on macOS
Fixes #7475.
-rw-r--r--CHANGELOG.md1
-rw-r--r--alacritty/src/input/keyboard.rs8
2 files changed, 8 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e65f85f3..77924ef8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed
- `alacritty migrate` failing with nonexistent imports
+- `Alt` bindings requiring composed key rather than pre-composed one on macOS
## 0.13.0
diff --git a/alacritty/src/input/keyboard.rs b/alacritty/src/input/keyboard.rs
index 423f8bae..6d2abea1 100644
--- a/alacritty/src/input/keyboard.rs
+++ b/alacritty/src/input/keyboard.rs
@@ -172,7 +172,13 @@ impl<T: EventListener, A: ActionContext<T>> Processor<T, A> {
// the time. However what we want is to manually lowercase the character to account
// for both small and capital letters on regular characters at the same time.
let logical_key = if let Key::Character(ch) = key.logical_key.as_ref() {
- Key::Character(ch.to_lowercase().into())
+ // Match `Alt` bindings without `Alt` being applied, otherwise they use the
+ // composed chars, which are not intuitive to bind.
+ if cfg!(target_os = "macos") && mods.alt_key() {
+ key.key_without_modifiers()
+ } else {
+ Key::Character(ch.to_lowercase().into())
+ }
} else {
key.logical_key.clone()
};