many fixes
This commit is contained in:
parent
1c7640f979
commit
3eb14ef9ea
@ -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;
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user