mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-25 14:05:41 -05:00
Send associated text for shifted numbers with kitty
Also fix the wrong ordering of base and shifted keys. Fixes #7492.
This commit is contained in:
parent
53927d686a
commit
e297c6bf0c
2 changed files with 15 additions and 5 deletions
|
@ -13,6 +13,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- `Alt` bindings requiring composed key rather than pre-composed one on macOS
|
- `Alt` bindings requiring composed key rather than pre-composed one on macOS
|
||||||
- `Alt + Control` bindings not working on Windows
|
- `Alt + Control` bindings not working on Windows
|
||||||
- `chars = "\u000A"` action in bindings inserting `\n`
|
- `chars = "\u000A"` action in bindings inserting `\n`
|
||||||
|
- Alternate keys not sent for `Shift + <number>` when using kitty protocol
|
||||||
|
- Alternative keys being swapped in kitty protocol implementation
|
||||||
|
|
||||||
## 0.13.0
|
## 0.13.0
|
||||||
|
|
||||||
|
|
|
@ -350,17 +350,25 @@ impl SequenceBuilder {
|
||||||
let character = character.chars().next().unwrap();
|
let character = character.chars().next().unwrap();
|
||||||
let base_character = character.to_lowercase().next().unwrap();
|
let base_character = character.to_lowercase().next().unwrap();
|
||||||
|
|
||||||
let codepoint = u32::from(character);
|
let alternate_key_code = u32::from(character);
|
||||||
let base_codepoint = u32::from(base_character);
|
let mut unicode_key_code = u32::from(base_character);
|
||||||
|
|
||||||
|
// Try to get the base for keys which change based on modifier, like `1` for `!`.
|
||||||
|
match key.key_without_modifiers().as_ref() {
|
||||||
|
Key::Character(unmodded) if alternate_key_code == unicode_key_code => {
|
||||||
|
unicode_key_code = u32::from(unmodded.chars().next().unwrap_or(base_character));
|
||||||
|
},
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: Base layouts are ignored, since winit doesn't expose this information
|
// NOTE: Base layouts are ignored, since winit doesn't expose this information
|
||||||
// yet.
|
// yet.
|
||||||
let payload = if self.mode.contains(TermMode::REPORT_ALTERNATE_KEYS)
|
let payload = if self.mode.contains(TermMode::REPORT_ALTERNATE_KEYS)
|
||||||
&& codepoint != base_codepoint
|
&& alternate_key_code != unicode_key_code
|
||||||
{
|
{
|
||||||
format!("{codepoint}:{base_codepoint}")
|
format!("{unicode_key_code}:{alternate_key_code}")
|
||||||
} else {
|
} else {
|
||||||
codepoint.to_string()
|
alternate_key_code.to_string()
|
||||||
};
|
};
|
||||||
|
|
||||||
Some(SequenceBase::new(payload.into(), SequenceTerminator::Kitty))
|
Some(SequenceBase::new(payload.into(), SequenceTerminator::Kitty))
|
||||||
|
|
Loading…
Reference in a new issue