From 8bfe17e45c6b97bfe4cff9cdabdaef01a08cdf72 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Thu, 26 Jun 2025 04:07:22 -0500 Subject: [PATCH] client server hid stream fix --- client/src/input/keyboard.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/input/keyboard.rs b/client/src/input/keyboard.rs index 4b89cc9..355cf84 100644 --- a/client/src/input/keyboard.rs +++ b/client/src/input/keyboard.rs @@ -1,6 +1,6 @@ // client/src/input/keyboard.rs -use std::collections::HashSet; +use std::{collections::HashSet, sync::atomic::{AtomicU32, Ordering}}; use evdev::{Device, EventType, InputEvent, KeyCode}; use tokio::sync::broadcast::Sender; use tracing::{debug, error, warn}; @@ -16,6 +16,10 @@ pub struct KeyboardAggregator { pressed_keys: HashSet, } +/*───────── helpers ───────────────────────────────────────────────────*/ +/// Monotonically‑increasing ID that can be logged on server & client. +static SEQ: AtomicU32 = AtomicU32::new(0); + impl KeyboardAggregator { pub fn new(dev: Device, dev_mode: bool, tx: Sender) -> Self { let _ = dev.set_nonblocking(true); @@ -44,11 +48,10 @@ impl KeyboardAggregator { } let report = self.build_report(); - if self.dev_mode { debug!(?report, "kbd"); } - static COUNTER: AtomicU32 = AtomicU32::new(0); - let id = COUNTER.fetch_add(1, Ordering::Relaxed); + // Generate a local sequence number for debugging/log‑merge only. + let id = SEQ.fetch_add(1, Ordering::Relaxed); + if self.dev_mode { debug!(seq = id, ?report, "kbd"); } let _ = self.tx.send(KeyboardReport { - seq: id, data: report.to_vec() });