updates
This commit is contained in:
parent
d7d6b3ab93
commit
4a8ad7c3b3
@ -109,9 +109,19 @@ impl KeyboardAggregator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn send_report(&self, report: [u8; 8]) {
|
fn send_report(&self, report: [u8; 8]) {
|
||||||
let _ = self.tx.send(HidReport {
|
let msg = HidReport {
|
||||||
kind: Some(hid_report::Kind::KeyboardReport(report.to_vec())),
|
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 {
|
fn is_magic_chord(&self) -> bool {
|
||||||
|
|||||||
@ -76,10 +76,8 @@ impl MouseAggregator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// whenever we changed something, emit:
|
// whenever we changed something, emit:
|
||||||
let rep = [self.buttons, self.dx as u8, self.dy as u8, self.wheel as u8];
|
let report = [self.buttons, self.dx as u8, self.dy as u8, self.wheel as u8];
|
||||||
let _ = self.tx.send(HidReport {
|
self.send_report(report);
|
||||||
kind: Some(hid_report::Kind::MouseReport(rep.to_vec())),
|
|
||||||
});
|
|
||||||
|
|
||||||
// reset deltas so we send *relative* movement
|
// reset deltas so we send *relative* movement
|
||||||
self.dx = 0;
|
self.dx = 0;
|
||||||
@ -87,4 +85,19 @@ impl MouseAggregator {
|
|||||||
self.wheel = 0;
|
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,
|
&self,
|
||||||
request: Request<tonic::Streaming<HidReport>>,
|
request: Request<tonic::Streaming<HidReport>>,
|
||||||
) -> Result<Response<Self::StreamStream>, Status> {
|
) -> Result<Response<Self::StreamStream>, Status> {
|
||||||
|
info!("▶️ new client stream from {:?}", request.remote_addr());
|
||||||
let mut in_stream = request.into_inner();
|
let mut in_stream = request.into_inner();
|
||||||
let kb = self.kb.clone();
|
let kb = self.kb.clone();
|
||||||
let ms = self.ms.clone();
|
let ms = self.ms.clone();
|
||||||
@ -35,6 +36,7 @@ impl Relay for Handler {
|
|||||||
|
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
while let Some(msg) = in_stream.next().await.transpose()? {
|
while let Some(msg) = in_stream.next().await.transpose()? {
|
||||||
|
info!("📥 packet received");
|
||||||
match msg.kind {
|
match msg.kind {
|
||||||
Some(hid_report::Kind::KeyboardReport(ref v)) if v.len() == 8 => {
|
Some(hid_report::Kind::KeyboardReport(ref v)) if v.len() == 8 => {
|
||||||
kb.lock().await.write_all(v).await?;
|
kb.lock().await.write_all(v).await?;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user