many fixes

This commit is contained in:
Brad Stein 2025-06-28 16:03:19 -05:00
parent 1c7640f979
commit 3eb14ef9ea
3 changed files with 12 additions and 7 deletions

View File

@ -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;

View File

@ -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<KeyboardReport>) -> 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<InputEvent> = match self.dev.fetch_events() {

View File

@ -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<InputEvent> = match self.dev.fetch_events() {