fix: Ensure key events are only processed on key press to avoid duplicates
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user