mirror of https://github.com/helix-editor/helix
fix: long pressed keys on hidapi
parent
8ec463a0f5
commit
88b1a0d3d8
|
@ -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
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue