This commit is contained in:
Brad Stein 2025-06-15 21:39:07 -05:00
parent d7d6b3ab93
commit 4a8ad7c3b3
3 changed files with 31 additions and 6 deletions

View File

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

View File

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

View File

@ -28,6 +28,7 @@ impl Relay for Handler {
&self,
request: Request<tonic::Streaming<HidReport>>,
) -> Result<Response<Self::StreamStream>, 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?;