From 45d38bed57f109d647f0db74aeb4596b55e9dc49 Mon Sep 17 00:00:00 2001 From: Jaby Date: Sun, 9 Jul 2023 19:24:43 +0200 Subject: [PATCH] Only read key press --- src/Tools/psxreadmap/src/main.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Tools/psxreadmap/src/main.rs b/src/Tools/psxreadmap/src/main.rs index 2117ea29..bc18d7c4 100644 --- a/src/Tools/psxreadmap/src/main.rs +++ b/src/Tools/psxreadmap/src/main.rs @@ -1,5 +1,5 @@ use clap::Parser; -use crossterm::{event::{self, Event as CEvent}, terminal}; +use crossterm::{event::{self, Event as CEvent, KeyboardEnhancementFlags, KeyEventKind, PushKeyboardEnhancementFlags}, execute, terminal}; use psxreadmap::{ConsoleUI, Event, EventReceiver, Terminal, load_memory_map, UIState}; use std::{io, path::PathBuf, sync::mpsc, thread, time::{Duration, Instant}}; use tool_helper::{Error, exit_with_error}; @@ -53,10 +53,11 @@ fn start_event_loop() -> EventReceiver { tx.send(Event::ForceRender).expect("Send ForceRender command!"); loop { let timeout = tick_rate.checked_sub(last_tick.elapsed()).unwrap_or_else(|| Duration::from_secs(0)); - if event::poll(timeout).expect("Event poll working") { if let CEvent::Key(key) = event::read().expect("Can read key input") { - tx.send(Event::Input(key)).expect("Can send KeyInput"); + if key.kind == KeyEventKind::Press { + tx.send(Event::Input(key)).expect("Can send KeyInput"); + } } } @@ -75,9 +76,15 @@ fn setup_console() -> Result { terminal::enable_raw_mode()?; // Setup Crossterm for the Terminal - let stdout = io::stdout(); + let stdout = { + let mut stdout = io::stdout(); + if let Err(_) = execute!(stdout, PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::REPORT_EVENT_TYPES)) { + // When this fails it fails + } + stdout + }; let backend = CrosstermBackend::new(stdout); - let mut terminal = Terminal::new(backend)?; + let mut terminal = Terminal::new(backend)?; terminal.clear()?; Ok(terminal)