1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use crossterm::input::{AsyncReader, InputEvent, KeyEvent, MouseEvent}; pub struct InputEvents{ pub key_events: Vec<KeyEvent>, pub mouse_events: Vec<MouseEvent>, } impl InputEvents { pub fn new(reader: &mut AsyncReader) -> InputEvents { let mut input_events = InputEvents{ key_events: vec![], mouse_events: vec![] }; while let Some(event) = reader.next() { match event { InputEvent::Keyboard(event) => { input_events.key_events.push(event); } InputEvent::Mouse(event) => { input_events.mouse_events.push(event); } _ => {} } } input_events } }