From 89cf0e66a68ddc616371db7eb173ebcd3528b25c Mon Sep 17 00:00:00 2001 From: Connor Welsh Date: Sun, 6 Apr 2025 17:29:06 -0400 Subject: [PATCH] fix: Ensure key events are only processed on key press to avoid duplicates --- src/event/input_event.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/event/input_event.rs b/src/event/input_event.rs index da6b7e4..9626979 100644 --- a/src/event/input_event.rs +++ b/src/event/input_event.rs @@ -4,7 +4,7 @@ use std::thread; use std::time::{Duration, Instant}; use crossterm::event; -use crossterm::event::Event as CrosstermEvent; +use crossterm::event::{Event as CrosstermEvent, KeyEventKind}; use crate::event::Key; @@ -30,8 +30,12 @@ impl Events { .unwrap_or_else(|| Duration::from_secs(0)); if event::poll(timeout).unwrap() { if let CrosstermEvent::Key(key_event) = event::read().unwrap() { - let key = Key::from(key_event); - tx.send(InputEvent::KeyEvent(key)).unwrap(); + // Only process the key event if it's a press event + // 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(); + } } }