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:
Alex Clarke
2025-04-07 12:01:14 -06:00
committed by GitHub
+7 -3
View File
@@ -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();
}
} }
} }