mirror of
https://github.com/openai/codex.git
synced 2026-09-16 12:13:30 +00:00
Handle AltGr as literal char in textarea
This commit is contained in:
@@ -247,6 +247,16 @@ impl TextArea {
|
||||
} if modifiers == (KeyModifiers::CONTROL | KeyModifiers::ALT) => {
|
||||
self.delete_backward_word()
|
||||
},
|
||||
KeyEvent {
|
||||
code: KeyCode::Char(c),
|
||||
modifiers,
|
||||
..
|
||||
} if modifiers.contains(KeyModifiers::ALT)
|
||||
&& modifiers.contains(KeyModifiers::CONTROL) =>
|
||||
{
|
||||
// AltGr on many keyboards reports as Ctrl+Alt; treat it as a literal char.
|
||||
self.insert_str(&c.to_string());
|
||||
}
|
||||
KeyEvent {
|
||||
code: KeyCode::Backspace,
|
||||
modifiers: KeyModifiers::ALT,
|
||||
@@ -1454,6 +1464,17 @@ mod tests {
|
||||
assert_eq!(t.cursor(), 3);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn altgr_ctrl_alt_char_inserts_literal() {
|
||||
let mut t = ta_with("");
|
||||
t.input(KeyEvent::new(
|
||||
KeyCode::Char('c'),
|
||||
KeyModifiers::CONTROL | KeyModifiers::ALT,
|
||||
));
|
||||
assert_eq!(t.text(), "c");
|
||||
assert_eq!(t.cursor(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cursor_vertical_movement_across_lines_and_bounds() {
|
||||
let mut t = ta_with("short\nloooooooooong\nmid");
|
||||
|
||||
Reference in New Issue
Block a user