diff options
Diffstat (limited to 'src/input/parse.rs')
| -rw-r--r-- | src/input/parse.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/input/parse.rs b/src/input/parse.rs index 995ad75b..525119f4 100644 --- a/src/input/parse.rs +++ b/src/input/parse.rs @@ -130,6 +130,18 @@ fn parse_legacy_special_sequence(data: &str) -> Option<TerminalKey> { "\x1b[6~" => Some(TerminalKey::new(KeyCode::PageDown, KeyModifiers::empty())), "\x1b[2~" => Some(TerminalKey::new(KeyCode::Insert, KeyModifiers::empty())), "\x1b[3~" => Some(TerminalKey::new(KeyCode::Delete, KeyModifiers::empty())), + "\x1bOP" => Some(TerminalKey::new(KeyCode::F(1), KeyModifiers::empty())), + "\x1bOQ" => Some(TerminalKey::new(KeyCode::F(2), KeyModifiers::empty())), + "\x1bOR" => Some(TerminalKey::new(KeyCode::F(3), KeyModifiers::empty())), + "\x1bOS" => Some(TerminalKey::new(KeyCode::F(4), KeyModifiers::empty())), + "\x1b[15~" => Some(TerminalKey::new(KeyCode::F(5), KeyModifiers::empty())), + "\x1b[17~" => Some(TerminalKey::new(KeyCode::F(6), KeyModifiers::empty())), + "\x1b[18~" => Some(TerminalKey::new(KeyCode::F(7), KeyModifiers::empty())), + "\x1b[19~" => Some(TerminalKey::new(KeyCode::F(8), KeyModifiers::empty())), + "\x1b[20~" => Some(TerminalKey::new(KeyCode::F(9), KeyModifiers::empty())), + "\x1b[21~" => Some(TerminalKey::new(KeyCode::F(10), KeyModifiers::empty())), + "\x1b[23~" => Some(TerminalKey::new(KeyCode::F(11), KeyModifiers::empty())), + "\x1b[24~" => Some(TerminalKey::new(KeyCode::F(12), KeyModifiers::empty())), "\x1b[Z" => Some(TerminalKey::new(KeyCode::BackTab, KeyModifiers::SHIFT)), _ => parse_xterm_modified_special_sequence(data), } @@ -151,6 +163,10 @@ fn parse_xterm_modified_special_sequence(data: &str) -> Option<TerminalKey> { 'D' => KeyCode::Left, 'H' => KeyCode::Home, 'F' => KeyCode::End, + 'P' => KeyCode::F(1), + 'Q' => KeyCode::F(2), + 'R' => KeyCode::F(3), + 'S' => KeyCode::F(4), _ => return None, }; return Some( @@ -168,6 +184,14 @@ fn parse_xterm_modified_special_sequence(data: &str) -> Option<TerminalKey> { "3" => KeyCode::Delete, "5" => KeyCode::PageUp, "6" => KeyCode::PageDown, + "15" => KeyCode::F(5), + "17" => KeyCode::F(6), + "18" => KeyCode::F(7), + "19" => KeyCode::F(8), + "20" => KeyCode::F(9), + "21" => KeyCode::F(10), + "23" => KeyCode::F(11), + "24" => KeyCode::F(12), _ => return None, }; Some(TerminalKey::new(code, key_modifiers_from_u8(mod_value))) |
