Exercise ordinary input in private display and retain inventory UI failure diagnosis

This commit is contained in:
2026-09-19 17:06:04 +02:00
parent 5a24eea2f5
commit 5c7719c19c
65 changed files with 9092 additions and 12 deletions
+1 -1
View File
@@ -48,6 +48,6 @@ The helper additionally reports `input_target_verified`, `input_target` and boun
An input target requires an exact verified game's native window with Xlib `InputOutput` class and `IsViewable` map state, the same private root, positive protocol-bounded dimensions and a nonempty rectangle clipped to the actual root geometry. Positions come from `XTranslateCoordinates`, not the requested Gamescope dimensions. Existing `XGetInputFocus` must identify that window or a maximum32-level descendant path back to it. Every path node must be mapped, share the original game's server-reported native PID and private root, and retain a nonempty visible intersection through its ancestors. None/PointerRoot, another client, another window tree, a cycle, an overlong path or unavailable attributes fails the separate check. Focus and top-window geometry are sampled again at the end; native game PID/start and the full display binding are also rechecked. Ambiguous owned targets do not qualify; an exact focused owned window takes precedence over its owned ancestors.
The recorded geometry includes actual window/root dimensions, translated origin and clipped bounds; the focus evidence includes existing focus ID, revert mode and the verified owned path. No other client titles are added. This is a bounded point-in-time snapshot, **not** an atomic guarantee for a later input operation, a proof of native UI focus/absence of dialogs, an occlusion test, or proof that Wine consumes XTest/raw mouse events. A future input helper must revalidate immediately before each operation. No such helper is present here.
The recorded geometry includes actual window/root dimensions, translated origin and clipped bounds; the focus evidence includes existing focus ID, revert mode and the verified owned path. No other client titles are added. This is a bounded point-in-time snapshot, **not** an atomic guarantee for a later input operation, a proof of native UI focus/absence of dialogs, an occlusion test, or proof that Wine consumes XTest/raw mouse events. A future input helper must revalidate immediately before each operation. The separate [opt-in keyboard experiment](headless-input-proof.md) now performs those repeated checks; this display helper remains read-only.
The adapter uses installed `XWindowAttributes`, `XGetWindowAttributes`, `XGetInputFocus` and `XTranslateCoordinates` declarations. Its ABI test compiles a tiny program against installed Xlib headers, comparing struct size and every field offset with ctypes and checking the three function signatures. That program only prints sizeof/offsetof constants; it does not link X11 or open a display. Fake adapters test direct/descendant focus, foreign clients, wrong roots, InputOnly/unmapped windows, zero/oversized dimensions, root/ancestor clipping, transient focus/geometry/process changes and depth limits. Tree, geometry and focus queries share a1024-operation structural budget; existing1024-window,16-target, three-second worker and30-second maximum observation bounds remain. All APIs are read-only; focus, raise, pointer, keyboard and mouse mutation functions remain absent.