From 76fca58569dc8a9a11cd7c7ed8a3707d7ec41ec3 Mon Sep 17 00:00:00 2001 From: pm100 Date: Thu, 11 May 2023 18:02:59 +0200 Subject: [PATCH] fix double key input on windows due to crossterm 0.26 --- src/input.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/input.rs b/src/input.rs index c42f62569b..6c794955b1 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 {