fix: long pressed keys on hidapi

pull/10977/head
Evgeniy Tatarkin 2025-02-20 13:53:32 +03:00
parent 8ec463a0f5
commit 88b1a0d3d8
1 changed files with 8 additions and 6 deletions

View File

@ -410,9 +410,9 @@ mod keyboard_state {
}
_ => (),
};
for i in 2..8 {
let hid_keycode = report[i];
let mut key = 0;
for i in 0..6 {
let hid_keycode = report[7 - i];
if hid_keycode == 0 {
continue;
};
@ -423,10 +423,12 @@ mod keyboard_state {
log::trace!(
"{device_name} hid_keycode: {hid_keycode} scancode: {scancode}"
);
k1.store(scancode, Ordering::Relaxed);
key = scancode;
break;
}
k1.store(key, Ordering::Relaxed);
k2.store(hid_modifier_to_scancode(&report[0]).unwrap_or(0), Ordering::Relaxed);
}
}));
@ -445,8 +447,8 @@ mod keyboard_state {
pub fn get_scancodes(&mut self) -> [u16; 2] {
[
self.codes[0].swap(0, Ordering::Relaxed), // key
self.codes[1].swap(0, Ordering::Relaxed), // modifier
self.codes[0].load(Ordering::Relaxed), // key
self.codes[1].load(Ordering::Relaxed), // modifier
]
}
}