aboutsummaryrefslogtreecommitdiff
path: root/src/input/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/parse.rs')
-rw-r--r--src/input/parse.rs24
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)))