mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-15 02:11:27 +03:00
ignore double press / release events (#71)
This should fix most of the remaining issues with stuck keys in KDE
This commit is contained in:
committed by
GitHub
parent
767fc8bd6b
commit
d54b3a08e1
@@ -720,6 +720,7 @@ impl Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
State::Receiving => {
|
State::Receiving => {
|
||||||
|
let mut ignore_event = false;
|
||||||
if let Event::Keyboard(KeyboardEvent::Key {
|
if let Event::Keyboard(KeyboardEvent::Key {
|
||||||
time: _,
|
time: _,
|
||||||
key,
|
key,
|
||||||
@@ -735,15 +736,21 @@ impl Server {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
if state == 0 {
|
if state == 0 {
|
||||||
client_state.pressed_keys.remove(&key);
|
// ignore release event if key not pressed
|
||||||
|
ignore_event = !client_state.pressed_keys.remove(&key);
|
||||||
} else {
|
} else {
|
||||||
client_state.pressed_keys.insert(key);
|
// ignore press event if key not released
|
||||||
|
ignore_event = !client_state.pressed_keys.insert(key);
|
||||||
let _ = timer_tx.try_send(());
|
let _ = timer_tx.try_send(());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// consume event
|
// ignore double press / release events to
|
||||||
consumer.consume(event, handle).await;
|
// workaround buggy rdp backend.
|
||||||
log::trace!("{event:?} => consumer");
|
if !ignore_event {
|
||||||
|
// consume event
|
||||||
|
consumer.consume(event, handle).await;
|
||||||
|
log::trace!("{event:?} => consumer");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
State::AwaitingLeave => {
|
State::AwaitingLeave => {
|
||||||
// we just entered the deadzone of a client, so
|
// we just entered the deadzone of a client, so
|
||||||
|
|||||||
Reference in New Issue
Block a user