From 4a8ad7c3b322951aa7d1fc57ba3c43fa9a80c9b7 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Sun, 15 Jun 2025 21:39:07 -0500 Subject: [PATCH] updates --- client/src/input/keyboard.rs | 14 ++++++++++++-- client/src/input/mouse.rs | 21 +++++++++++++++++---- server/src/main.rs | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/client/src/input/keyboard.rs b/client/src/input/keyboard.rs index 6e8e7df..d3dad3b 100644 --- a/client/src/input/keyboard.rs +++ b/client/src/input/keyboard.rs @@ -109,9 +109,19 @@ impl KeyboardAggregator { } fn send_report(&self, report: [u8; 8]) { - let _ = self.tx.send(HidReport { + let msg = HidReport { kind: Some(hid_report::Kind::KeyboardReport(report.to_vec())), - }); + }; + + match self.tx.try_send(msg.clone()) { + Ok(n) => { + tracing::trace!("queued → {} receiver(s)", n); + } + Err(e) => { + tracing::warn!("try_send dropped report ({e}); falling back to send()"); + let _ = self.tx.send(msg); + } + } } fn is_magic_chord(&self) -> bool { diff --git a/client/src/input/mouse.rs b/client/src/input/mouse.rs index 8afb259..9a6ffd1 100644 --- a/client/src/input/mouse.rs +++ b/client/src/input/mouse.rs @@ -76,10 +76,8 @@ impl MouseAggregator { } // whenever we changed something, emit: - let rep = [self.buttons, self.dx as u8, self.dy as u8, self.wheel as u8]; - let _ = self.tx.send(HidReport { - kind: Some(hid_report::Kind::MouseReport(rep.to_vec())), - }); + let report = [self.buttons, self.dx as u8, self.dy as u8, self.wheel as u8]; + self.send_report(report); // reset deltas so we send *relative* movement self.dx = 0; @@ -87,4 +85,19 @@ impl MouseAggregator { self.wheel = 0; } + fn send_report(&self, report: [u8; 4]) { + let msg = HidReport { + kind: Some(hid_report::Kind::MouseReport(report.to_vec())), + }; + + match self.tx.try_send(msg.clone()) { + Ok(n) => { + tracing::trace!("queued → {} receiver(s)", n); + } + Err(e) => { + tracing::warn!("try_send dropped report ({e}); falling back to send()"); + let _ = self.tx.send(msg); + } + } + } } diff --git a/server/src/main.rs b/server/src/main.rs index 5caa61c..096554d 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -28,6 +28,7 @@ impl Relay for Handler { &self, request: Request>, ) -> Result, Status> { + info!("▶️ new client stream from {:?}", request.remote_addr()); let mut in_stream = request.into_inner(); let kb = self.kb.clone(); let ms = self.ms.clone(); @@ -35,6 +36,7 @@ impl Relay for Handler { tokio::spawn(async move { while let Some(msg) = in_stream.next().await.transpose()? { + info!("📥 packet received"); match msg.kind { Some(hid_report::Kind::KeyboardReport(ref v)) if v.len() == 8 => { kb.lock().await.write_all(v).await?;