Only read key press
This commit is contained in:
parent
5db7dfc622
commit
5db0b74720
|
@ -1,5 +1,5 @@
|
||||||
use clap::Parser;
|
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 psxreadmap::{ConsoleUI, Event, EventReceiver, Terminal, load_memory_map, UIState};
|
||||||
use std::{io, path::PathBuf, sync::mpsc, thread, time::{Duration, Instant}};
|
use std::{io, path::PathBuf, sync::mpsc, thread, time::{Duration, Instant}};
|
||||||
use tool_helper::{Error, exit_with_error};
|
use tool_helper::{Error, exit_with_error};
|
||||||
|
@ -53,12 +53,13 @@ fn start_event_loop() -> EventReceiver {
|
||||||
tx.send(Event::ForceRender).expect("Send ForceRender command!");
|
tx.send(Event::ForceRender).expect("Send ForceRender command!");
|
||||||
loop {
|
loop {
|
||||||
let timeout = tick_rate.checked_sub(last_tick.elapsed()).unwrap_or_else(|| Duration::from_secs(0));
|
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 event::poll(timeout).expect("Event poll working") {
|
||||||
if let CEvent::Key(key) = event::read().expect("Can read key input") {
|
if let CEvent::Key(key) = event::read().expect("Can read key input") {
|
||||||
|
if key.kind == KeyEventKind::Press {
|
||||||
tx.send(Event::Input(key)).expect("Can send KeyInput");
|
tx.send(Event::Input(key)).expect("Can send KeyInput");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if last_tick.elapsed() >= tick_rate {
|
if last_tick.elapsed() >= tick_rate {
|
||||||
if let Ok(_) = tx.send(Event::Tick) {
|
if let Ok(_) = tx.send(Event::Tick) {
|
||||||
|
@ -75,7 +76,13 @@ fn setup_console() -> Result<Terminal, Error> {
|
||||||
terminal::enable_raw_mode()?;
|
terminal::enable_raw_mode()?;
|
||||||
|
|
||||||
// Setup Crossterm for the Terminal
|
// 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 backend = CrosstermBackend::new(stdout);
|
||||||
let mut terminal = Terminal::new(backend)?;
|
let mut terminal = Terminal::new(backend)?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue