CNA-GAP-058: The native Win32 platform backend has no gamepad support, no IME composition events and no file drop
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
modules/platform/src/Win32/Win32Platform.cpp— capability set: ime, gamepad, joystick false; GetGamepad returns nullptrmodules/platform/src/Win32/Win32InputServices.cpp— device enumeration: keyboard and mouse onlymodules/platform/src/Win32/Win32Window.cpp— WM_INPUT raw input (present)modules/platform/src/Win32/Win32DpiSupport.cpp— per-window DPI (present)
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.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.