From ab8c8cb1c4f2bed9ef4e333d5fc091e586ff0202 Mon Sep 17 00:00:00 2001 From: facile pop culture reference Date: Thu, 1 Oct 2026 15:28:58 +0300 Subject: [PATCH] tui: named and displayable events --- src/term/event.rs | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/term/event.rs b/src/term/event.rs index 59646d9..53bce3e 100644 --- a/src/term/event.rs +++ b/src/term/event.rs @@ -7,14 +7,34 @@ pub struct TuiEvent( pub Event ); -impl_from!(TuiEvent: |e: Event| TuiEvent( - e)); -impl_from!(TuiEvent: |e: KeyEvent| TuiEvent( - Event::Key(e))); -impl_from!(TuiEvent: |c: KeyCode| TuiEvent( - Event::Key(KeyEvent::new(c, KeyModifiers::NONE)))); -impl_from!(TuiEvent: |c: char| TuiEvent( - Event::Key(KeyEvent::new(KeyCode::Char(c), KeyModifiers::NONE)))); +impl_from!(TuiEvent: |e: Event| + TuiEvent(e)); +impl_from!(TuiEvent: |e: KeyEvent| + TuiEvent(Event::Key(e))); +impl_from!(TuiEvent: |c: KeyCode| + TuiEvent(Event::Key(KeyEvent::new(c, KeyModifiers::NONE)))); +impl_from!(TuiEvent: |c: char| + TuiEvent(Event::Key(KeyEvent::new(KeyCode::Char(c), KeyModifiers::NONE)))); +impl_from!(TuiEvent: |s: &str| + TuiEvent(Event::Key(KeyEvent::new(match s { + "up" => KeyCode::Up, + "down" => KeyCode::Down, + "left" => KeyCode::Left, + "right" => KeyCode::Right, + "enter" => KeyCode::Enter, + _ => unimplemented!() + }, KeyModifiers::NONE)))); + +impl_display!(TuiEvent: |self, w| { + match self.0 { + Event::Key(e) => write!( + w, "{:?<12} {:?}", e.code, e.modifiers + ), + _ => write!( + w, "{:?}", self.0 + ) + } +}); impl Ord for TuiEvent { fn cmp (&self, other: &Self) -> std::cmp::Ordering {