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) { fn toggle_grab(&mut self) {
if self.released { if self.released {
for k in &mut self.keyboards { k.dev.grab().ok(); } for k in &mut self.keyboards { k.grab(); }
for m in &mut self.mice { m.dev.grab().ok(); } for m in &mut self.mice { m.grab(); }
tracing::info!("🧙 magic chord - restricting devices 🪄 IMPERIUS!!! 🎮🔒"); tracing::info!("🧙 magic chord - restricting devices 🪄 IMPERIUS!!! 🎮🔒");
} else { } else {
for k in &mut self.keyboards { k.dev.ungrab().ok(); } for k in &mut self.keyboards { k.ungrab(); }
for m in &mut self.mice { m.dev.ungrab().ok(); } for m in &mut self.mice { m.ungrab(); }
tracing::info!("🧙 magic chord - freeing devices 🪄 EXPELLIARMUS!!! 🔓🕊️"); tracing::info!("🧙 magic chord - freeing devices 🪄 EXPELLIARMUS!!! 🔓🕊️");
} }
self.released = !self.released; self.released = !self.released;

View File

@ -3,7 +3,7 @@
use std::{collections::HashSet, sync::atomic::{AtomicU32, Ordering}}; use std::{collections::HashSet, sync::atomic::{AtomicU32, Ordering}};
use evdev::{Device, EventType, InputEvent, KeyCode}; use evdev::{Device, EventType, InputEvent, KeyCode};
use tokio::sync::broadcast::Sender; use tokio::sync::broadcast::Sender;
use tracing::{debug, error, warn, trace}; use tracing::{debug, error, trace};
use lesavka_common::lesavka::KeyboardReport; use lesavka_common::lesavka::KeyboardReport;
@ -23,9 +23,12 @@ static SEQ: AtomicU32 = AtomicU32::new(0);
impl KeyboardAggregator { impl KeyboardAggregator {
pub fn new(dev: Device, dev_mode: bool, tx: Sender<KeyboardReport>) -> Self { pub fn new(dev: Device, dev_mode: bool, tx: Sender<KeyboardReport>) -> Self {
let _ = dev.set_nonblocking(true); 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) { pub fn process_events(&mut self) {
// --- first fetch, then log (avoids aliasing borrow) --- // --- first fetch, then log (avoids aliasing borrow) ---
let events: Vec<InputEvent> = match self.dev.fetch_events() { 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; use lesavka_common::lesavka::MouseReport;
const SEND_INTERVAL: Duration = Duration::from_micros(10); const SEND_INTERVAL: Duration = Duration::from_millis(1);
pub struct MouseAggregator { pub struct MouseAggregator {
dev: Device, dev: Device,
@ -28,6 +28,8 @@ impl MouseAggregator {
} }
#[inline] fn slog(&self, f: impl FnOnce()) { if self.dev_mode { f() } } #[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) { pub fn process_events(&mut self) {
let evts: Vec<InputEvent> = match self.dev.fetch_events() { let evts: Vec<InputEvent> = match self.dev.fetch_events() {