CNA-GAP-058: The native Win32 platform backend has no gamepad support, no IME composition events and no file drop

CNA snapshot 009d40f5  ·  Known Issues › Functional 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.

Win32Platform reports gamepad, joystick, haptics and IME as deliberately unsupported, handles no WM_IME_* message or Imm* call, and never raises GameWindow's FileDropEXT; raw mouse input and per-monitor DPI are implemented.

Identifier
CNA-GAP-058
Category
Functional gap
Subsystem
Platforms
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
CNA_PLATFORM=WIN32: GamePad, text input composition, GameWindow::FileDropEXT

Expected behaviour

The capability set states what the backend supports; the missing pieces are recorded as future work in CNA's Win32 plan.

Actual behaviour at TARGET

Win32Platform.cpp leaves ime, gamepad, joystick, rumble, haptics, sensors, tray and camera false (“each with its remaining work recorded”) and returns no gamepad service. Win32InputServices.cpp enumerates keyboards and mice only. No Win32 source calls ImmGetContext, handles WM_IME_COMPOSITION, calls XInputGetState, DragAcceptFiles or handles WM_DROPFILES. Raw input (WM_INPUT, RegisterRawInputDevices in Win32Window.cpp) and per-window DPI (GetDpiForWindow, WM_DPICHANGED in Win32DpiSupport.cpp) are present.

Source locations

Evidence

Checked by reading at 009d40f5; not executed.

The candidate also listed raw input and per-window DPI as missing; both exist in files other than Win32Platform.cpp, so they are excluded here.

Focused reproduction

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

Current tests

The standalone Win32 platform harness covers windows, events and DPI; no gamepad, IME or drop test applies.

Regression test

When implemented: an XInput-backed gamepad test, IME composition events, and a WM_DROPFILES-to-FileDropEXT test.

Blast radius

Games built with CNA_PLATFORM=WIN32 instead of SDL3: no controllers, no in-progress IME text, no drag and drop. The SDL3 platform on Windows is unaffected.

Workaround

Use the SDL3 platform on Windows.

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