summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpm100 <paulmoore100@hotmail.com>2023-05-11 18:02:59 +0200
committerextrawurst <776816+extrawurst@users.noreply.github.com>2023-05-14 14:01:25 -0600
commitaa4266cd1f8ffda4c38b86e342ae3b9b38300f25 (patch)
treead81fe7993fca54745a1625e0b0ac2817a26dc4d
parentd6f33532bb1c3dade60d0d67af74c5f3211dcb7c (diff)
fix double key input on windows due to crossterm 0.26
-rw-r--r--src/input.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/input.rs b/src/input.rs
index c42f6256..6c794955 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -1,7 +1,7 @@
use crate::notify_mutex::NotifyableMutex;
use anyhow::Result;
use crossbeam_channel::{unbounded, Receiver, Sender};
-use crossterm::event::{self, Event};
+use crossterm::event::{self, Event, Event::Key, KeyEventKind};
use std::{
sync::{
atomic::{AtomicBool, Ordering},
@@ -113,6 +113,12 @@ impl Input {
arc_current.store(true, Ordering::Relaxed);
if let Some(e) = Self::poll(POLL_DURATION)? {
+ // windows send key release too, only process key press
+ if let Key(key) = e {
+ if key.kind != KeyEventKind::Press {
+ continue;
+ }
+ }
tx.send(InputEvent::Input(e))?;
}
} else {