diff options
Diffstat (limited to 'src/bin/ttyplay/input.rs')
-rw-r--r-- | src/bin/ttyplay/input.rs | 58 |
1 files changed, 36 insertions, 22 deletions
diff --git a/src/bin/ttyplay/input.rs b/src/bin/ttyplay/input.rs index a922a55..d8c8e92 100644 --- a/src/bin/ttyplay/input.rs +++ b/src/bin/ttyplay/input.rs @@ -1,24 +1,38 @@ -pub fn to_event(key: &textmode::Key) -> Option<crate::event::Event> { - Some(match key { - textmode::Key::Char('g' | '0' | ')') => { - crate::event::Event::TimerAction( - crate::event::TimerAction::FirstFrame, - ) +pub fn spawn_task( + event_w: async_std::channel::Sender<crate::event::Event>, + mut input: textmode::Input, +) { + async_std::task::spawn(async move { + while let Some(key) = input.read_key().await.unwrap() { + let event = match key { + textmode::Key::Char('g' | '0' | ')') => { + crate::event::Event::TimerAction( + crate::event::TimerAction::FirstFrame, + ) + } + textmode::Key::Char('G' | '$') => { + crate::event::Event::TimerAction( + crate::event::TimerAction::LastFrame, + ) + } + textmode::Key::Char('l' | 'n') => { + crate::event::Event::TimerAction( + crate::event::TimerAction::NextFrame, + ) + } + textmode::Key::Char('h' | 'p') => { + crate::event::Event::TimerAction( + crate::event::TimerAction::PreviousFrame, + ) + } + textmode::Key::Char('q') => crate::event::Event::Quit, + textmode::Key::Char(' ') => crate::event::Event::TimerAction( + crate::event::TimerAction::Pause, + ), + textmode::Key::Ctrl(b'i') => crate::event::Event::ToggleUi, + _ => continue, + }; + event_w.send(event).await.unwrap(); } - textmode::Key::Char('G' | '$') => crate::event::Event::TimerAction( - crate::event::TimerAction::LastFrame, - ), - textmode::Key::Char('l' | 'n') => crate::event::Event::TimerAction( - crate::event::TimerAction::NextFrame, - ), - textmode::Key::Char('h' | 'p') => crate::event::Event::TimerAction( - crate::event::TimerAction::PreviousFrame, - ), - textmode::Key::Char('q') => crate::event::Event::Quit, - textmode::Key::Char(' ') => { - crate::event::Event::TimerAction(crate::event::TimerAction::Pause) - } - textmode::Key::Ctrl(b'i') => crate::event::Event::ToggleUi, - _ => return None, - }) + }); } |