diff --git a/src/key.rs b/src/key.rs index 8d444e0..d48e60d 100644 --- a/src/key.rs +++ b/src/key.rs @@ -5,6 +5,7 @@ pub enum Key { Char(char), Enter, Backspace, + Ctrl(char), Escape, ArrowUp, ArrowDown, @@ -32,6 +33,9 @@ impl From for Key { _ => Key::Unknown(vec![27, buf[0], buf[1]]), } } + 1..=26 => { + Key::Ctrl((byte as u8 + b'a' - 1) as char) + } char if char.is_ascii() => Key::Char(byte as char), byte => Key::Unknown(vec![byte]), } diff --git a/src/main.rs b/src/main.rs index c55cc66..f6e6d36 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,6 +44,15 @@ fn handle_input(stdin: &mut Stdin, stdout: &mut Stdout, data: &mut Data) -> io:: let key = Key::from(buffer[0]); match key { + Key::Ctrl('c') => { + + } + Key::Ctrl('d') => { + break; + } + Key::Ctrl(_) => { + + } Key::Enter => { data.add_to_hist(input.clone()); write!(stdout, "\r\n")?;