diff options
Diffstat (limited to 'src/input/parse.rs')
| -rw-r--r-- | src/input/parse.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/input/parse.rs b/src/input/parse.rs index 36de52e8..e4c554f8 100644 --- a/src/input/parse.rs +++ b/src/input/parse.rs @@ -601,6 +601,22 @@ mod tests { } #[test] + fn parse_kitty_sequence_preserves_non_us_shift_pairs() { + for (sequence, base, shifted) in [ + ("\x1b[50:34;2:1u", '2', '"'), + ("\x1b[38:49;2:1u", '&', '1'), + ("\x1b[305:73;2:1u", 'ı', 'I'), + ("\x1b[287:286;2:1u", 'ğ', 'Ğ'), + ] { + let key = parse_terminal_key_sequence(sequence).unwrap(); + assert_eq!(key.code, KeyCode::Char(base)); + assert_eq!(key.modifiers, KeyModifiers::SHIFT); + assert_eq!(key.kind, crossterm::event::KeyEventKind::Press); + assert_eq!(key.shifted_codepoint, Some(shifted as u32)); + } + } + + #[test] fn parse_kitty_sequence_with_associated_emoji_text() { let key = parse_terminal_key_sequence("\x1b[128512;1;128512u").unwrap(); assert_terminal_key_eq( |
