fix: skip auto-repeat only (value=2), not real key presses
- skip_count=3 applied only to auto-repeat events, never to press/release - Prevents rrrrrrrrr while letting spacebar and real typing through - Reverted broken drain approach that corrupted source file
This commit is contained in:
parent
4c9acfe772
commit
ebfff3db11
1 changed files with 4 additions and 8 deletions
|
|
@ -831,11 +831,6 @@ fn run_with_evdev(
|
||||||
}
|
}
|
||||||
|
|
||||||
for event in events {
|
for event in events {
|
||||||
// Skip auto-repeat events that piled up during injection
|
|
||||||
if skip_count > 0 {
|
|
||||||
skip_count -= 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if let evdev::InputEventKind::Key(key) = event.kind() {
|
if let evdev::InputEventKind::Key(key) = event.kind() {
|
||||||
let value = event.value();
|
let value = event.value();
|
||||||
let keycode = key.0;
|
let keycode = key.0;
|
||||||
|
|
@ -908,7 +903,7 @@ fn run_with_evdev(
|
||||||
consumed_keys.insert(keycode);
|
consumed_keys.insert(keycode);
|
||||||
execute_commands(&*injector, &commands, false);
|
execute_commands(&*injector, &commands, false);
|
||||||
// Skip upcoming auto-repeat pile-up from injection delay
|
// Skip upcoming auto-repeat pile-up from injection delay
|
||||||
skip_count = 10;
|
skip_count = 3;
|
||||||
} else if is_vn_control_key(&daemon.config.input_method, ch) {
|
} else if is_vn_control_key(&daemon.config.input_method, ch) {
|
||||||
// Tone/mark key with no effect — consume silently
|
// Tone/mark key with no effect — consume silently
|
||||||
consumed_keys.insert(keycode);
|
consumed_keys.insert(keycode);
|
||||||
|
|
@ -919,8 +914,9 @@ fn run_with_evdev(
|
||||||
injector.send_key_event(keycode, 1);
|
injector.send_key_event(keycode, 1);
|
||||||
}
|
}
|
||||||
} else if value == 2 {
|
} else if value == 2 {
|
||||||
// Auto-repeat: skip if consumed, else forward
|
// Auto-repeat: skip if consumed or during injection drain
|
||||||
if consumed_keys.contains(&keycode) {
|
if consumed_keys.contains(&keycode) || skip_count > 0 {
|
||||||
|
if skip_count > 0 { skip_count -= 1; }
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
injector.send_key_event(keycode, 2);
|
injector.send_key_event(keycode, 2);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue