diff options
author | pm100 <paulmoore100@hotmail.com> | 2023-05-11 18:02:59 +0200 |
---|---|---|
committer | extrawurst <776816+extrawurst@users.noreply.github.com> | 2023-05-14 14:01:25 -0600 |
commit | aa4266cd1f8ffda4c38b86e342ae3b9b38300f25 (patch) | |
tree | ad81fe7993fca54745a1625e0b0ac2817a26dc4d | |
parent | d6f33532bb1c3dade60d0d67af74c5f3211dcb7c (diff) |
fix double key input on windows due to crossterm 0.26
-rw-r--r-- | src/input.rs | 8 |
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 { |