CNA-VGAP-032: Input behaviour on real hardware is unverified: the 15-task manual hardware checklist is blocked, and the focus-loss keyboard test checks only the bridge's accumulator

CNA snapshot 009d40f5  ·  Known Issues › Verification gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

Controllers, touch, IME, non-US layouts, joysticks and host sensors are recorded as unverified on hardware, and the focus-loss keyboard test reads InputManager's legacy state through a local shim, not the public Keyboard::GetState.

Identifier
CNA-VGAP-032
Category
Verification gap
Subsystem
Testing & evidence
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
Keyboard::GetState across focus loss; GamePad, TouchPanel, text input/IME and device input on real hardware

Expected behaviour

Input semantics that depend on devices and window systems need evidence from those devices and window systems.

Actual behaviour at TARGET

plan_input.md Phase 11 (P11-001..015, the manual hardware checklist) is open, every task marked blocked, and the hardware matrix in input-manual-verification-results.md has every controller, touchscreen, IME and Czech-layout cell unchecked. WindowFocusLostDoesNotClearHeldKeysMatchingFna in SdlInputBridgeKeyboardTests.cpp reads a file-local Keyboard struct whose GetState is InputManager::GetKeyboardState(); the public Keyboard::GetState reads the platform keyboard snapshot (IPlatformKeyboard), and no test reads it across focus loss. Platform-level focus-loss release is pinned only for Wayland (WaylandProtocol.KeysHeldAtEnterAreStateNotEventsAndLeaveReleasesThemQuietly, in a suite no workflow runs) and, at event-mapper level, for Win32 (Win32EventMapping.TracksHeldKeysAndReleasesThemOnFocusLoss); X11 releases all keys on FocusOut and SDL3 reads SDL's keyboard state, with no focus-loss test for either.

Source locations

Evidence

Checked by reading at 009d40f5; not executed.

Independent re-verification: Checked by reading at 009d40f5; not executed. Platform focus-loss tests found by searching modules/platform/tests and modules/input/tests for FocusLost, FocusOut and KILLFOCUS.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

Headless unit tests cover the input state machine with canned platforms and synthetic events.

Regression test

Per-platform focus-loss tests through the public Keyboard::GetState; recorded hardware runs using the template in the results document.

Blast radius

Evidence only; controller mappings, rumble, touch gestures, IME composition and layouts may differ on real devices.

Workaround

No workaround is known.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.