Skip to content

feat: add per-app gamepad type override in web UI#4863

Open
edgar-simao wants to merge 2 commits intoLizardByte:masterfrom
edgar-simao:feat/gamepad-override
Open

feat: add per-app gamepad type override in web UI#4863
edgar-simao wants to merge 2 commits intoLizardByte:masterfrom
edgar-simao:feat/gamepad-override

Conversation

@edgar-simao
Copy link

Description

Add ability to override the gamepad type per app. The user can now select a controller type on each app to override the default option chosen in the Input tab. This can be left as default, and the option selected in the Input tab controls the input type as before.

  • Web UI (Apps page): Added a per-app “Gamepad” dropdown so users can choose the gamepad type (x360, ds4, xone, ds5, switch, or auto/default) for each application. The control is shown on Windows, Linux, and FreeBSD; it is hidden on macOS. New locale keys (apps.gamepad, apps.gamepad_default, apps.gamepad_desc) were added and wired in all locale files.

  • Backend:

    • Process: Extended app config with a gamepad field and documented allowed values (xone, ds5, switch, x360, ds4, or empty/auto for global config).
    • Input: Updated input::alloc() to accept an optional gamepad_override and pass it through so the chosen gamepad type is used for that app’s stream.
    • Platforms: Adjusted Windows, Linux (inputtino), and macOS input code to use the per-app override when present.

Result: each app can have its own gamepad type instead of relying only on the global setting.

Screenshot

Screenshot 2026-03-16 234945 image

Issues Fixed or Closed

Roadmap Issues

Type of Change

  • feat: New feature (non-breaking change which adds functionality)
  • fix: Bug fix (non-breaking change which fixes an issue)
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semicolons, etc.)
  • refactor: Code change that neither fixes a bug nor adds a feature
  • perf: Code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies
  • ci: Changes to CI configuration files and scripts
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit
  • BREAKING CHANGE: Introduces a breaking change (can be combined with any type above)

Checklist

  • Code follows the style guidelines of this project
  • Code has been self-reviewed
  • Code has been commented, particularly in hard-to-understand areas
  • Code docstring/documentation-blocks for new or existing methods/components have been added or updated
  • Unit tests have been added or updated for any new or modified functionality

AI Usage

  • None: No AI tools were used in creating this PR
  • Light: AI provided minor assistance (formatting, simple suggestions)
  • Moderate: AI helped with code generation or debugging specific parts
  • Heavy: AI generated most or all of the code changes

Copy link
Member

@ReenigneArcher ReenigneArcher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the PR!

Instead of only allowing one config option to work per app, I think we should address this entire roadmap item in one PR. LizardByte/roadmap#31

I also notice your PR modifies localization files other than the default language (en). We do not accept contributions on GitHub for these files, but you can contribute on Crowdin. Please see https://docs.lizardbyte.dev/latest/developers/contributing.html#localization for more information.

@edgar-simao
Copy link
Author

Thank you for the PR!

Instead of only allowing one config option to work per app, I think we should address this entire roadmap item in one PR. LizardByte/roadmap#31

I also notice your PR modifies localization files other than the default language (en). We do not accept contributions on GitHub for these files, but you can contribute on Crowdin. Please see https://docs.lizardbyte.dev/latest/developers/contributing.html#localization for more information.

Hey, I have been asking for this feature for more than a year but it got no attention, so I decided to add these to use on my own build of Sunshine, hence why it may not be fully polished.

I will remove the changes to the localization files and commit that as soon as I can, and if any further changes are needed feel free to reach out! although it seems that the roadmap issue you liked is stale for almost a year now... :(

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
2 New issues
2 New Code Smells (required ≤ 0)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@ReenigneArcher
Copy link
Member

It isn't stale, I'm just one person. I created the roadmap last April and have completed 40 items so far, 50 remaining.

@edgar-simao
Copy link
Author

It isn't stale, I'm just one person. I created the roadmap last April and have completed 40 items so far, 50 remaining.

I meant it didn't have any code contributions since it was created. Nothing about you, if anything, you are a powerhouse that keeps building one of my most (if not the most) used tools for gaming, and I thank you dearly for it!

PS: since i already started messing with the code, I will try to add some more stuff to the broader issue you linked.

@ReenigneArcher
Copy link
Member

PS: since i already started messing with the code, I will try to add some more stuff to the broader issue you linked.

If it's too much, this is actually one of the things I was planning on tackling soon. But probably after LizardByte/roadmap#35

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.

2 participants