From 8c82c461f91f82768959130f367c2d046ea5c1ce Mon Sep 17 00:00:00 2001 From: Alexandre Bury Date: Sun, 6 Nov 2016 01:23:02 -0800 Subject: [PATCH] Handles CSI `~` sequences with multiple values (#70) * Handles CSI `~` sequences with multiple values Fixes #62 * Fix doc typo --- src/event.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/event.rs b/src/event.rs index ee4eedf..423a5c5 100644 --- a/src/event.rs +++ b/src/event.rs @@ -225,8 +225,21 @@ where I: Iterator> }, // Special key code. b'~' => { - let num: u8 = String::from_utf8(buf).unwrap().parse().unwrap(); - match num { + let str_buf = String::from_utf8(buf).unwrap(); + + // This CSI sequence can be a list of + // semicolon-separated numbers. + let nums: Vec = str_buf.split(';') + .map(|n| n.parse().unwrap()) + .collect(); + + if nums.is_empty() { + return error; + } + + // TODO: handle multiple values for key modififiers + // (ex: values [3, 2] means Shift+Delete) + match nums[0] { 1 | 7 => Event::Key(Key::Home), 2 => Event::Key(Key::Insert), 3 => Event::Key(Key::Delete),