updates
This commit is contained in:
parent
d7d6b3ab93
commit
4a8ad7c3b3
@ -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 {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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?;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user