Skip to content

feat: in-app controller test screen - #127

Merged
nextestudios merged 1 commit into
mainfrom
feature/78-controller-test-screen
Sep 27, 2026
Merged

nextestudios merged 1 commit into
mainfrom
feature/78-controller-test-screen

Conversation

@nextestudios

Copy link
Copy Markdown
Owner

Summary

Lets the maintainer run the #78 hardware matrix on Windows without installing the .NET SDK (previously dotnet run tools/ControlFS.InputProbe).

  • Menu → "Teste de controles…" (new ControllerTestModal, AppController.ControllerTest.cs):
    • lists every connected device from the input layer (new IControllerDiagnostics, implemented by InputHost): name, SDL gamepad type, detected ControllerFamily, VID:PID, gamepad or raw joystick (with saved profile, if any), virtual, active, and devices that disconnected during the session;
    • shows live each press as physical control → InputAction (e.g. South (Botão A) → Confirm). InputHost brackets each routed control with BeginTestInput/EndTestInput, so the action the real InputRouter emits is paired with the press; presses that produce nothing (other device active, raw joystick without profile) show "no action". Raw joysticks show the raw input (button 3, hat 1 ↑, axis 2 +), and with a profile the raw input and the translated control together. Nothing repeats and nothing executes on this screen.
    • Copy report: hold Confirm 1 s (or Enter, or tap the button) copies a plain-text English report: app version, Windows version, SDL version, confirm convention, each device's fields and all result lines. No user names, device paths, GUIDs or serial numbers.
    • Leave: hold Back 1 s on the controller (short Back is being tested) or Esc.
  • Clipboard write lives in MainWindow (DataPackage + Flush), exposed to the controller as AppController.CopyText. UI additions are limited to one modal builder in ModalView and two lines in MainWindow.
  • Docs: docs/controller-compatibility.md and docs/TESTING.md now have a step-by-step for the maintainer (which controllers, what to press, expected actions, paste the report as a comment on test: validate the controller matrix on real hardware #78); GUIDE pair and both changelogs updated.

Tests

  • CI: ControllerTestJourneyTests drives the screen through the menu with the real InputRouter: short presses only log (South → Confirm, East → Back, Start → OpenAppMenu), raw unprofiled input logs with no action, holding Confirm copies a report that contains the results and VID:PID but not the device path/serial or GUID, holding Back 1 s (not 0.5 s) closes.
  • Manual (needs real hardware, listed in docs/TESTING.md): the actual matrix run, clipboard on real Windows, hot-plug and active-device display.

Refs #78 (stays open: the hardware matrix needs the maintainer's controllers)

🤖 Generated with Claude Code

Menu → "Teste de controles…" lists every connected device (name, SDL type,
family, VID:PID, gamepad or raw joystick, active) and shows each physical
press with the semantic action it produced. Holding Confirm copies a
plain-text report (no paths, GUIDs, serials or user names); holding Back
or Esc leaves. The maintainer can run the #78 matrix without the .NET SDK.

Refs #78

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nextestudios
nextestudios merged commit 57a9f60 into main Sep 27, 2026
1 check passed
@nextestudios
nextestudios deleted the feature/78-controller-test-screen branch September 27, 2026 03:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant