daemon: add diagnostics logging + guard VNI control key consumption behind engine.is_enabled()
- Add 'Event loop started' log at beginning of run_with_evdev - Add reason for non-interrupted fetch_events errors - Log each injected key with engine state, character, buffer length, and commands - Fix VNI control digits being silently consumed when engine is disabled
This commit is contained in:
parent
fcd465c2b0
commit
8f8b4abf6d
1 changed files with 14 additions and 1 deletions
|
|
@ -1148,6 +1148,7 @@ fn run_with_evdev(
|
||||||
let mut last_event_time = std::time::Instant::now();
|
let mut last_event_time = std::time::Instant::now();
|
||||||
let mut last_key_time = std::time::Instant::now();
|
let mut last_key_time = std::time::Instant::now();
|
||||||
|
|
||||||
|
log_info("[vietc] Event loop started");
|
||||||
loop {
|
loop {
|
||||||
// Check for signal (Ctrl+C, SIGTERM) — release grab before exit
|
// Check for signal (Ctrl+C, SIGTERM) — release grab before exit
|
||||||
if SIGNAL_EXIT.load(Ordering::SeqCst) {
|
if SIGNAL_EXIT.load(Ordering::SeqCst) {
|
||||||
|
|
@ -1180,6 +1181,10 @@ fn run_with_evdev(
|
||||||
// SIGINT/SIGTERM received — loop back to signal check
|
// SIGINT/SIGTERM received — loop back to signal check
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
log_info(&format!(
|
||||||
|
"[vietc] fetch_events error (non-interrupted): {:?} — exiting",
|
||||||
|
e
|
||||||
|
));
|
||||||
return Err(e.into());
|
return Err(e.into());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -1399,6 +1404,13 @@ fn run_with_evdev(
|
||||||
let buf_before = daemon.engine.buffer().chars().count();
|
let buf_before = daemon.engine.buffer().chars().count();
|
||||||
let commands = daemon.process_key(ch);
|
let commands = daemon.process_key(ch);
|
||||||
if !commands.is_empty() {
|
if !commands.is_empty() {
|
||||||
|
log_info(&format!(
|
||||||
|
"[vietc] inject: engine={} ch='{}' buf={} cmds={:?}",
|
||||||
|
if daemon.engine.is_enabled() { "VN" } else { "EN" },
|
||||||
|
ch,
|
||||||
|
buf_before,
|
||||||
|
commands
|
||||||
|
));
|
||||||
consumed_keys.insert(keycode);
|
consumed_keys.insert(keycode);
|
||||||
execute_commands(&*injector, &commands, false);
|
execute_commands(&*injector, &commands, false);
|
||||||
// Flush chars: forward raw key after injection.
|
// Flush chars: forward raw key after injection.
|
||||||
|
|
@ -1411,7 +1423,8 @@ fn run_with_evdev(
|
||||||
}
|
}
|
||||||
// Skip upcoming auto-repeat pile-up from injection delay
|
// Skip upcoming auto-repeat pile-up from injection delay
|
||||||
skip_count = 3;
|
skip_count = 3;
|
||||||
} else if is_vn_control_key(daemon.app_state.effective_method(), ch)
|
} else if daemon.engine.is_enabled()
|
||||||
|
&& is_vn_control_key(daemon.app_state.effective_method(), ch)
|
||||||
&& daemon.engine.buffer().chars().count() <= buf_before
|
&& daemon.engine.buffer().chars().count() <= buf_before
|
||||||
{
|
{
|
||||||
// Tone/mark key truly absorbed with no effect (no
|
// Tone/mark key truly absorbed with no effect (no
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue