server mouse fix
This commit is contained in:
parent
08c5230df3
commit
8eee550e61
@ -37,19 +37,18 @@ impl Relay for Handler {
|
|||||||
request: Request<tonic::Streaming<HidReport>>,
|
request: Request<tonic::Streaming<HidReport>>,
|
||||||
) -> Result<Response<Self::StreamStream>, Status> {
|
) -> Result<Response<Self::StreamStream>, Status> {
|
||||||
let mut in_stream = request.into_inner();
|
let mut in_stream = request.into_inner();
|
||||||
let hid = self.hid.clone();
|
let kb = self.kb.clone();
|
||||||
|
let ms = self.ms.clone();
|
||||||
let (tx, rx) = tokio::sync::mpsc::channel(32);
|
let (tx, rx) = tokio::sync::mpsc::channel(32);
|
||||||
|
|
||||||
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()? {
|
||||||
match msg.kind {
|
match msg.kind {
|
||||||
Some(navka::hid_report::Kind::KeyboardReport(ref v)) if v.len() == 8 => {
|
Some(navka::hid_report::Kind::KeyboardReport(ref v)) if v.len() == 8 => {
|
||||||
let mut f = kb.lock().await;
|
kb.lock().await.write_all(v).await?;
|
||||||
f.write_all(v).await?;
|
|
||||||
}
|
}
|
||||||
Some(navka::hid_report::Kind::MouseReport(ref v)) if v.len() == 4 => {
|
Some(navka::hid_report::Kind::MouseReport(ref v)) if v.len() == 4 => {
|
||||||
let mut f = ms.lock().await;
|
ms.lock().await.write_all(v).await?;
|
||||||
f.write_all(v).await?;
|
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
error!("bad packet len={}", msg.data.len());
|
error!("bad packet len={}", msg.data.len());
|
||||||
@ -70,14 +69,24 @@ impl Relay for Handler {
|
|||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
tracing_subscriber::fmt::init();
|
tracing_subscriber::fmt::init();
|
||||||
|
|
||||||
let file = OpenOptions::new()
|
let kb = OpenOptions::new()
|
||||||
.write(true)
|
.write(true)
|
||||||
.read(true)
|
.read(true)
|
||||||
.custom_flags(libc::O_NONBLOCK)
|
.custom_flags(libc::O_NONBLOCK)
|
||||||
.open("/dev/hidg0")
|
.open("/dev/hidg0")
|
||||||
.await?;
|
.await?;
|
||||||
let hid = Arc::new(tokio::sync::Mutex::new(file));
|
|
||||||
let handler = Handler { hid };
|
let ms = OpenOptions::new()
|
||||||
|
.write(true)
|
||||||
|
.read(true)
|
||||||
|
.custom_flags(libc::O_NONBLOCK)
|
||||||
|
.open("/dev/hidg1")
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let handler = Handler {
|
||||||
|
kb: Arc::new(Mutex::new(kb)),
|
||||||
|
ms: Arc::new(Mutex::new(ms)),
|
||||||
|
};
|
||||||
|
|
||||||
println!("🌐 navka-server listening on 0.0.0.0:50051");
|
println!("🌐 navka-server listening on 0.0.0.0:50051");
|
||||||
Server::builder()
|
Server::builder()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user