summaryrefslogtreecommitdiff
path: root/src/watch
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-09-05 17:12:26 +0200
committermo8it <mo8it@proton.me>2024-09-05 17:12:26 +0200
commitaa3eda70e5727f9665a97fadcce081a96909e9b1 (patch)
treebed5cee288e250ab643007890994393e2196e776 /src/watch
parent2d0860fe1bd0aef512313617d8a26e9f118d2cd2 (diff)
Simplify handling terminal events for unbuffered stdin
Diffstat (limited to 'src/watch')
-rw-r--r--src/watch/terminal_event.rs42
1 files changed, 6 insertions, 36 deletions
diff --git a/src/watch/terminal_event.rs b/src/watch/terminal_event.rs
index 3e8c272..8e2e241 100644
--- a/src/watch/terminal_event.rs
+++ b/src/watch/terminal_event.rs
@@ -9,13 +9,9 @@ pub enum InputEvent {
Hint,
List,
Quit,
- Unrecognized,
}
pub fn terminal_event_handler(tx: Sender<WatchEvent>, manual_run: bool) {
- // Only send `Unrecognized` on ENTER if the last input wasn't valid.
- let mut last_input_valid = false;
-
let last_input_event = loop {
let terminal_event = match event::read() {
Ok(v) => v,
@@ -34,39 +30,13 @@ pub fn terminal_event_handler(tx: Sender<WatchEvent>, manual_run: bool) {
KeyEventKind::Press => (),
}
- if key.modifiers != KeyModifiers::NONE {
- last_input_valid = false;
- continue;
- }
-
let input_event = match key.code {
- KeyCode::Enter => {
- if last_input_valid {
- continue;
- }
-
- InputEvent::Unrecognized
- }
- KeyCode::Char(c) => {
- let input_event = match c {
- 'n' => InputEvent::Next,
- 'h' => InputEvent::Hint,
- 'l' => break InputEvent::List,
- 'q' => break InputEvent::Quit,
- 'r' if manual_run => InputEvent::Run,
- _ => {
- last_input_valid = false;
- continue;
- }
- };
-
- last_input_valid = true;
- input_event
- }
- _ => {
- last_input_valid = false;
- continue;
- }
+ KeyCode::Char('n') => InputEvent::Next,
+ KeyCode::Char('h') => InputEvent::Hint,
+ KeyCode::Char('l') => break InputEvent::List,
+ KeyCode::Char('q') => break InputEvent::Quit,
+ KeyCode::Char('r') if manual_run => InputEvent::Run,
+ _ => continue,
};
if tx.send(WatchEvent::Input(input_event)).is_err() {