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