Hide the free cursor after idle (ac6_cursor_hide_seconds, 3 s)
The free cursor now disappears after N seconds without motion and
returns instantly on motion or a button. Never hides while an overlay
is on screen (new DialogsVisible presence flag). Default 3 s, 0 = never, live.
GetAsyncKeyState can wedge "down" without a real press (Alt-Tab residue);
a phantom held Tab forwarded as held Y and killed the camera on both
keyboard and pad. Keys now count as held only after an observed up->down
since startup/focus gain.
KB+M's flight heartbeat only came from the main force step, which never
runs on the ground, keyboard flight controls were dead until takeoff.
Fire it from every state's provider: the alternate ground step (rolling)
plus the master updates and ground-state maintainer (standstill).
Config presets now run after the toml loads: the ac6_fix_* switches and
their scale gates finally honor user settings. The settings save persists
only user-set values, with toml escaping - no leaked presets, and a saved
Windows path can no longer void the whole config. Runtime-forced values
(performance mode) can no longer overwrite the user's saved choices.
Menu: wrapped tooltips, "(set by <cvar>)" on driven entries, a developer
toggle; AC6-added cvars grouped under the AC6 node as AC6/Fixes and
AC6/Enhancements, with true restart/live lifecycles.
Interacting with the overlays also drove the game (clicks fired
weapons, scroll cycled them, keys leaked), and hovering one silenced a real
pad. Input now follows window-manager rules, mouse to the window under the
cursor, keyboard to the focused window, real pads never suppressed, via
ImGui capture flags conjoined with overlay visibility, published as atomics.
Keyboard/mouse state is injected at the guest XamInput wrapper boundary, so
every layer of the input stack sees KB+M exactly as a connected pad, and a
real pad keeps working alongside. Menu and flight key sets (AC7-style
defaults) switch automatically via a flight-sim heartbeat; the mouse steers
pitch/roll with a velocity model, or pans the camera while the camera-control
key is held. With no controller connected, a synthetic pad is presented on
slot 0. Bindings and mouse feel live in ac6_input.toml (auto-created on first
run, hot-reloaded ~1x/s). Everything is off unless ac6_kbm_enabled is set.