SteamGridDB / steam-rom-manager

An app for managing ROMs in Steam
GNU General Public License v3.0
1.89k stars 120 forks source link

An option to add a default controller configuration #13

Closed ghost closed 1 year ago

ghost commented 7 years ago

An option to add a default configuration for the Steam Controller Example: ml7botc

FrogTheFrog commented 7 years ago

I'll include this in 1.3 release. Currently doing some restructurization to Basic and Advanced modes which will include some new features. I'm also kinda busy right now so can't really tell the expected release date.

ghost commented 7 years ago

@FrogTheFrog Ok thank you :)

FrogTheFrog commented 7 years ago

@PirhanaPlant The best I can do is to place that vdf file in controller template directory or personal (local) configuration directory. However I can't seem to find a way to actually make steam use said controller configuration. Thus, it makes your suggested option useless, as you would have to select configuration within Steam itself anyway.

I'll try to search files again, but if I can't any solution, I will probably close this as won't fix, because I just can't find a way to make this to work :/

kencinder commented 6 years ago

Currently Steam stores controller configurations in Steam\userdata\<userid>\241100\remote and saves each change to a new file. It then updates Steam\userdata\<userid>\config\localconfig.vdf to point to the newest used config in Steam\userdata\<userid>\241100\remote.

Eg; in Steam\userdata\<userid>\config\localconfig.vdf

            "controller_ps4"
            {
                "DEFAULT_FOR_TYPE"
                {
                    "metal gear solid"
                    {
                        "selected"        "1215928759"
                    }

points to 1215928759_controller_config.vdf in Steam\userdata\<userid>\241100\remote

I tested saving a "Local Only Binding" for the same game and it created Steam\userdata\<userid>\241100\remote\controller_config\metal gear solid\dualshock 4 11_0.vdf with the VDF corresponding to what I had named the config in Steam for the PS1 title. The config was automatically used for the GBA title of the same name, so Steam doesn't have to be told to use it.

There are 2 options here then, and both are "Messy" or "Hackish" in how they would need to be guaranteed unique titles, and that would be to edit Steam\userdata\<userid>\config\localconfig.vdf to add entries for EVERY title added by a parser, OR to create a folder named for every title in Steam\userdata\<userid>\241100\remote\controller_config\. I think the 2nd option is easier, as with the first you would have to know(or provide an option) for the controller type in use, or at least pull it from a provided config. The 2nd option the user would just provide an already saved controller VDF to apply.

Either option will have to have something added to a Title to make it unique however, or for instance the above example will apply to both the PS1 version of Metal Gear Solid AND the GBA version in my case, as my titles only have the name of the game. Any instance of this will net the same result, and most certainly is not desirable.

I suggest being able to add something like {category} to ones glob or title modifier to accomplish this. Or at least noting if it's implemented, to add something to make the title unique to the system/parser.

HEspoke commented 6 years ago

@FrogTheFrog @kencinder with the latest steam update this issue may no longer be necessary. Steam now allows for a default controller config for non steam games. Example: If you use a Xbox controller (Xbox one or 360) then it will use a Xbox Template for all Non-Steam games.

kencinder commented 6 years ago

Possibly, but allowing to change this per-parser would allow you to set defaults per system, for different controllers. Whereas Steam's change still only allows a global default...better, but not good enough IMO I don't use the same controller for every emulator, so being able to provide a config per-parser would still be nice.

HEspoke commented 6 years ago

Ya , I agree with you . Per parser would be very powerful.

On May 22, 2018, at 3:30 PM, kencinder notifications@github.com wrote:

Possibly, but allowing to change this per-parser would allow you to set defaults per system, for different controllers. Whereas Steam's change still only allows a global default...better, but not good enough IMO I don't use the same controller for every emulator, so being able to provide a config per-parser would still be nice.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

MrScopi commented 2 years ago

Looking forward to seeing this implemented, per-game controller config is not a fun experience on the Steam Deck at this time, so being able to make one config per emulator and apply to all games would be wonderful.

dragoonDorise commented 2 years ago

Hi! I’m the creator of EmuDeck, first of all I’m really thankful for SRM to even exist :)

We could really use this functionally on EmuDeck since we have special Steam Input templates made for some systems like 3DS to use the back buttons on the Steam Deck so having the possibility to add Steam Input templates when adding the games using SRM would be really really cool and help both our users :)

cbartondock commented 2 years ago

Okay I'll prioritize work on this as soon as I add the last two platform parsers I had planned, Origin and Battle.net. In the meantime if anyone wants to submit a PR on this I will prioritize merging it.

KingIzzymon commented 1 year ago

@dragoonDorise @cbartondock

The set controller for each game/application is inside the configset file:

~/.steam/steam/steamapps/common/Steam Controller Configs/<steamuserID>/config/configset_controller_neptune.vdf

The entries are made under each game's steamappID or, if no steamappID exsists, it uses the steam shortcut name in lower case. Includes special characters except :

Example: Steam Shortcut Name: Xbox Cloud Gaming (xCloud)

    "xbox cloud gaming (xcloud)"
    {
        "template"      "emudeck_cloud_controller_config.vdf"
    }

Note: the lookup name used can be checked while in game mode, access the controller config menu and, without changing the default-selected controller profile, click the settings cog and check the default layout details. The URL will show the lookup name of that game/application.

With the referenced templates being in the steam templates folder:

~/.steam/steam/controller_base/templates

Please note that in steam game mode, the templates shown are ordered based on the template file name and only the templates that match a connected device are shown.

Examples:

KingIzzymon commented 1 year ago

So one possible option for adding this feature is:

cbartondock commented 1 year ago

Added in 2.3.41