24 lines
3.8 KiB
Markdown
24 lines
3.8 KiB
Markdown
# Relative pointer edge audit (read-only)
|
||
|
||
Recommend the explicit wider **private headless** viewport experiment, retaining all existing pointer, focus, process, prefix and socket guards. Do not add a root-edge exception or pointer warp based on this audit.
|
||
|
||
## Evidence from the failed route
|
||
|
||
`/tmp/erri-game-profile/logs/logs_2026-09-19_19-01-19/input-proof.json` recorded nine successful+128px requests (1152px total), then refused the next request with `Relative pointer step leaves owned clipped bounds`. Native yaw advanced from−0.0231° to86.2074°, with per-step changes8.5586–10.3915°. No W event occurred. Individual pointer coordinates were not recorded, so neither the exact cursor X nor a clipping position is established by the report. In particular, the next event was **not sent**: this run says nothing about raw motion delivery at a root edge.
|
||
|
||
The same session's `display-ownership.json` proves game window29360129, exact same game PID400949 by window property and XRes, mapped InputOutput, existing focus on that window, geometry0,0–1280,720 and private root1019 with the same1280×720 bounds. No root-area gap appeared in that read-only observation. Per-event guards repeated ownership/focus/geometry checks.
|
||
|
||
## XTest evidence and limits
|
||
|
||
Installed packages: xorg-xwayland24.1.13-1, libxtst1.2.5-1, gamescope3.16.28-1. Installed `/usr/share/man/man3/XTestQueryExtension.3.gz` describes relative pointer offset simulation. It does **not** establish that unbounded requested deltas remain available to an XInput raw-motion consumer after cursor confinement/clipping. Its relative-motion synopsis includes an obsolete screen argument; installed `/usr/include/X11/extensions/XTest.h:77` is the correct four-argument ABI already used by the helper (`Display*,int,int,unsigned long`). This documentation must not justify changing the established ctypes signature.
|
||
|
||
No installed Xwayland/libXtst implementation source was found in `/usr/src/debug`, and the version-matched upstream Xserver source URL was not accessible through the browsing tool. Thus this audit has no source-backed conclusion about raw relative motion at the root edge. A future raw-motion experiment would require separate supported implementation evidence and explicit qualification; it is unnecessary for the current wider-viewport option.
|
||
|
||
## Wider private viewport
|
||
|
||
The version-matched official [Gamescope3.16.28 README](https://github.com/ValveSoftware/gamescope/blob/3.16.28/README.md#options) documents `-w/-h` as the game's virtual resolution and `-W/-H` as compositor output dimensions. Selecting both widths2560 while keeping both heights720 is supported. Retain headless backend, exact child launch,30Hz cap, and existing owned-session cleanup.
|
||
|
||
The private profile's `profile/.save/app1874880_user76561198020202999/settings/ReforgerEngineSettings.conf` has only `WindowPosX0` and `WindowPosY0` under VideoUserSettings; no saved resolution/fullscreen override is present. ReforgerGameSettings.conf has no matching resolution fields. Existing native console reports backbuffer1280×720 and the sole monitor1280×720. Therefore no inspected saved setting demonstrably prevents following the wider virtual monitor, but **2560×720 native game/window behavior remains untested**.
|
||
|
||
Use the next session's actual ownership report and renderer line to confirm the requested wider game window/root before claiming added pointer room. Keep current and projected pointer positions inside the exact owned focused clipped rectangle for every event. If the game remains smaller, or the pointer still lacks room, the unchanged guard should refuse; never fall back to a different display, move focus, warp, alter game input settings, or relax an edge bound. Larger dimensions are runtime test configuration, not performance evidence; same-run native yaw calibration remains mandatory because sensitivity is not guaranteed to be resolution independent.
|