From 3eb14ef9ea526a67f1f0675e0bf4bccd00703ae4 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Sat, 28 Jun 2025 16:03:19 -0500 Subject: [PATCH] many fixes --- client/src/input/inputs.rs | 8 ++++---- client/src/input/keyboard.rs | 7 +++++-- client/src/input/mouse.rs | 4 +++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/client/src/input/inputs.rs b/client/src/input/inputs.rs index d97a83a..87d63c7 100644 --- a/client/src/input/inputs.rs +++ b/client/src/input/inputs.rs @@ -129,12 +129,12 @@ impl InputAggregator { fn toggle_grab(&mut self) { if self.released { - for k in &mut self.keyboards { k.dev.grab().ok(); } - for m in &mut self.mice { m.dev.grab().ok(); } + for k in &mut self.keyboards { k.grab(); } + for m in &mut self.mice { m.grab(); } tracing::info!("🧙 magic chord - restricting devices 🪄 IMPERIUS!!! 🎮🔒"); } else { - for k in &mut self.keyboards { k.dev.ungrab().ok(); } - for m in &mut self.mice { m.dev.ungrab().ok(); } + for k in &mut self.keyboards { k.ungrab(); } + for m in &mut self.mice { m.ungrab(); } tracing::info!("🧙 magic chord - freeing devices 🪄 EXPELLIARMUS!!! 🔓🕊️"); } self.released = !self.released; diff --git a/client/src/input/keyboard.rs b/client/src/input/keyboard.rs index ec38bb5..d5e9102 100644 --- a/client/src/input/keyboard.rs +++ b/client/src/input/keyboard.rs @@ -3,7 +3,7 @@ use std::{collections::HashSet, sync::atomic::{AtomicU32, Ordering}}; use evdev::{Device, EventType, InputEvent, KeyCode}; use tokio::sync::broadcast::Sender; -use tracing::{debug, error, warn, trace}; +use tracing::{debug, error, trace}; use lesavka_common::lesavka::KeyboardReport; @@ -23,9 +23,12 @@ static SEQ: AtomicU32 = AtomicU32::new(0); impl KeyboardAggregator { pub fn new(dev: Device, dev_mode: bool, tx: Sender) -> Self { let _ = dev.set_nonblocking(true); - Self { dev, tx, dev_mode, pressed_keys: HashSet::new(), released: false} + Self { dev, tx, dev_mode, pressed_keys: HashSet::new()} } + pub fn grab(&mut self) { let _ = self.dev.grab(); } + pub fn ungrab(&mut self) { let _ = self.dev.ungrab(); } + pub fn process_events(&mut self) { // --- first fetch, then log (avoids aliasing borrow) --- let events: Vec = match self.dev.fetch_events() { diff --git a/client/src/input/mouse.rs b/client/src/input/mouse.rs index f2abc3a..e1644f7 100644 --- a/client/src/input/mouse.rs +++ b/client/src/input/mouse.rs @@ -7,7 +7,7 @@ use tracing::{debug, error, warn, trace}; use lesavka_common::lesavka::MouseReport; -const SEND_INTERVAL: Duration = Duration::from_micros(10); +const SEND_INTERVAL: Duration = Duration::from_millis(1); pub struct MouseAggregator { dev: Device, @@ -28,6 +28,8 @@ impl MouseAggregator { } #[inline] fn slog(&self, f: impl FnOnce()) { if self.dev_mode { f() } } + pub fn grab(&mut self) { let _ = self.dev.grab(); } + pub fn ungrab(&mut self) { let _ = self.dev.ungrab(); } pub fn process_events(&mut self) { let evts: Vec = match self.dev.fetch_events() {