Skip to content

feat: choose the active controller and flag virtual duplicates - #136

Merged
nextestudios merged 1 commit into
mainfrom
feature/80-active-controller
Sep 27, 2026
Merged

nextestudios merged 1 commit into
mainfrom
feature/80-active-controller

Conversation

@nextestudios

Copy link
Copy Markdown
Owner

Summary

  • Menu → Controle ativo… lists every connected device (name, family, SDL type, VID:PID, physical/virtual). South/A on one calls InputRouter.SelectActiveDevice, which now locks the router: only that device is routed, no other device takes over (not even while idle). "Automático" unlocks; if the chosen device disconnects the router unlocks and the bottom bar says so.
  • Duplicate diagnosis (ControllerDuplicates in Core): SDL virtual joysticks, Steam Virtual Gamepad (28DE:11FF) and — as likely — a wired Xbox 360 (045E:028E) next to a PlayStation/Nintendo pad (DS4Windows/BetterJoy via ViGEm). Uses VID/PID only, never names. The bottom bar warns once per copy; the menu item detail says which device it may repeat; the controller test screen (feat: in-app controller test screen #127) report shows virtual (Steam Input) / likely virtual (DS4Windows/ViGEm).
  • Sensitive dialogs keep blocking automatic takeover (unchanged AllowAutomaticActivation); a locked device is unaffected by it.
  • Docs: GUIDE (both languages), controller-compatibility, TESTING manual checks, both changelogs.

Tests

  • CI: InputRouterTests.Explicitly_selected_device_is_the_only_one_routed_until_automatic_or_removed (lock, unlock, disconnect) and ActiveControllerJourneyTests (Steam virtual + DualSense: warning, menu, choosing the virtual one routes only it, back to automatic).
  • Manual (docs/TESTING.md → "Controle ativo e duplicatas (feat: switch the active controller explicitly and diagnose duplicate devices #80)"): real Steam Input / DS4Windows setups, disconnecting the chosen pad, sensitive dialog with a locked pad.

Closes #80

🤖 Generated with Claude Code

@nextestudios
nextestudios force-pushed the feature/80-active-controller branch from 0fe190e to 34c0765 Compare September 27, 2026 04:35
Menu → "Controle ativo" lists connected controllers (family, type,
VID:PID, physical or virtual). South/A on one locks the router to it:
no other device takes over, even idle, until "Automático" is chosen
or the device disconnects. Steam Input (28DE:11FF), SDL virtual pads
and a likely ViGEm Xbox 360 next to a PlayStation/Nintendo pad are
flagged as virtual copies; the bottom bar warns once per copy and the
controller test report marks them.

Closes #80

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nextestudios
nextestudios force-pushed the feature/80-active-controller branch from 34c0765 to 7922d8b Compare September 27, 2026 04:38
@nextestudios
nextestudios merged commit b1ea7a1 into main Sep 27, 2026
1 check passed
@nextestudios
nextestudios deleted the feature/80-active-controller branch September 27, 2026 04:40
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.

feat: switch the active controller explicitly and diagnose duplicate devices

1 participant