Merge pull request #41 from cwelsys/fix-key-event-handling
fix: Ensure key events are only processed on key press to avoid dupli…
This commit is contained in:
@@ -4,7 +4,7 @@ use std::thread;
|
|||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
use crossterm::event;
|
use crossterm::event;
|
||||||
use crossterm::event::Event as CrosstermEvent;
|
use crossterm::event::{Event as CrosstermEvent, KeyEventKind};
|
||||||
|
|
||||||
use crate::event::Key;
|
use crate::event::Key;
|
||||||
|
|
||||||
@@ -30,8 +30,12 @@ impl Events {
|
|||||||
.unwrap_or_else(|| Duration::from_secs(0));
|
.unwrap_or_else(|| Duration::from_secs(0));
|
||||||
if event::poll(timeout).unwrap() {
|
if event::poll(timeout).unwrap() {
|
||||||
if let CrosstermEvent::Key(key_event) = event::read().unwrap() {
|
if let CrosstermEvent::Key(key_event) = event::read().unwrap() {
|
||||||
let key = Key::from(key_event);
|
// Only process the key event if it's a press event
|
||||||
tx.send(InputEvent::KeyEvent(key)).unwrap();
|
// Source: https://ratatui.rs/faq/ Why am I getting duplicate key events on Windows?
|
||||||
|
if key_event.kind == KeyEventKind::Press {
|
||||||
|
let key = Key::from(key_event);
|
||||||
|
tx.send(InputEvent::KeyEvent(key)).unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user