From e487552b3591cb6855cb31c0f3e4f362e83181c5 Mon Sep 17 00:00:00 2001 From: Main <kkawa1570@gmail.com> Date: Thu, 30 Apr 2015 22:49:37 -0400 Subject: [PATCH] Removed the KEYPRESS enum because Rust doesn't support the FromPrimitive trait anymore --- src/lib.rs | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 02da5859..0e64fc5f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,27 +11,25 @@ use nix::sys::termios::{BRKINT, ICRNL, INPCK, ISTRIP, IXON, OPOST, CS8, ECHO, IC static MAX_LINE: i32 = 4096; static UNSUPPORTED_TERM: [&'static str; 3] = ["dumb","cons25","emacs"]; -enum KEYPRESS{ - NULL = 0, // NULL - CTRLA = 1, // C-a - CTRLB = 2, // C-b - CTRLC = 3, // C-c - CTRLD = 4, // C-d - CTRLE = 5, // C-e - CTRLF = 6, // C-f - CTRLH = 8, // C-h - TAB = 9, // Tab - CTRLK = 11, // C-k - CTRLL = 12, // C-l - ENTER = 13, // Enter - CTRLN = 14, // C-n - CTRLP = 16, // C-p - CTRLT = 20, // C-t - CTRLU = 21, // C-u - CTRLW = 23, // C-w - ESC = 27, // Esc - BACKSPACE = 127 // Backspace -} +const NULL : u8 = 0; // NULL +const CTRLA : u8 = 1; // C-a +const CTRLB : u8 = 2; // C-b +const CTRLC : u8 = 3; // C-c +const CTRLD : u8 = 4; // C-d +const CTRLE : u8 = 5; // C-e +const CTRLF : u8 = 6; // C-f +const CTRLH : u8 = 8; // C-h +const TAB : u8 = 9; // Tab +const CTRLK : u8 = 11; // C-k +const CTRLL : u8 = 12; // C-l +const ENTER : u8 = 13; // Enter +const CTRLN : u8 = 14; // C-n +const CTRLP : u8 = 16; // C-p +const CTRLT : u8 = 20; // C-t +const CTRLU : u8 = 21; // C-u +const CTRLW : u8 = 23; // C-w +const ESC : u8 = 27; // Esc +const BACKSPACE: u8 = 127; // Backspace fn is_a_tty() -> bool { let isatty = unsafe { libc::isatty(libc::STDIN_FILENO as i32) } != 0; @@ -72,9 +70,14 @@ fn disable_raw_mode(original_termios: termios::Termios) -> Result<(), nix::Error fn readline_edit() -> Result<String, io::Error> { let mut buffer = Vec::new(); let mut input: [u8; 1] = [0]; - let numread = io::stdin().read(&mut input).unwrap(); - buffer.push(input[0]); - println!("{}",input[0]); + loop { + let numread = io::stdin().read(&mut input).unwrap(); + match input[0] { + ENTER => break, + _ => { print!("{}", input[0]); io::stdout().flush(); } + } + buffer.push(input[0]); + } Ok(String::from_utf8(buffer).unwrap()) } -- GitLab