STEAM GROUP
Steam Client Beta SteamBeta
STEAM GROUP
Steam Client Beta SteamBeta
17,534
IN-GAME
74,880
ONLINE
Founded
8 January, 2013
All Discussions > Bug Reports > Topic Details
XDeadzX 11 Jul, 2022 @ 4:50pm
Steam client is stealing dualsense controller inputs /forcing blank playstation support.
ISSUE

While the steam client is running, the playstation 5 controller will not be read as a valid input device in steam games (and a few non-steam games) wired or wireless.

OS
Windows 10 22h1

STEPS

Open the steam menu
Head to options
Under controller settings, disable playstation support.
Load games with dinput support but not dualsense support
(tested games include Monster Sanctuary, Totally Reliable delivery service(TRDS), Katamari Damacy REROLL, and Outer Wilds for broken games on steam. Non-steam games include Totally Reliable delivery Service, and Outer Wilds on microsoft store)
Exhibit the games not responding to controller inputs 1-2 seconds after the game starts.

If running a game not on steam that is only dinput and not dualsense enabled (TRDS), the game will not read the controller as long as steam is running.


Another tell is with playstation support disabled, the dualsense controller will read as player 1 instead of blank player numbers. Without the steam client running, the player numbers will remain blank and the controller will operate as expected.

RESULTS

Controller is non-functional for majority of games while running the steam client.

EXPECTED

Controller works like it did prior to the june 17th(?) build. Enables dinput in games, recognized as a playstation controller, etc.
____

I noticed this at the beginning of july, having last played at the end of may. I've fiddled around a bit to figure out what the cause was, but the ultimate fix was to turn off steam. This is obviously a no-go for the games I own on steam... Enabling playstation support solves it but limits me to using steam's desktop profiles, xbox button prompts, and xbox limitations in the games (eg. no native touchpad.)
< >
Showing 16-30 of 58 comments
tintingaroo 28 Sep, 2022 @ 3:47am 
What I know (and what I think I know xD) about this stuff comes from trying to help, wanting to figure things out and get to do stuff not offered on the surface ;) :steamthumbsup: I don't truly understand, but get some idea, speculate and learn little by little.

With the PS controllers I wasn't saying they should be seeing Define Layout when they're running in DInput mode.
Originally posted by tintingaroo:
You're generally seeing Define Layout for generic, unknown/yet to have official support controllers. I think devices they only support via DirectInput get the Define Layout option.
On Windows they provide the layout for 1st party/official controllers, third party depending how they spoof the official, Xinput devices.

With "I think devices they only support via DirectInput get the Define Layout option", I was meaning if the only way the device is supported in Steam is by DInput. PS controllers have additional/alternative support, they don't get Define Layout & it's the intended behaviour.
If the user sets a variable to opt the controller out of HIDAPI support then they can get Define Layout for PS controllers. I've done this with a DS5 and I would say it applies to the DS4. The official Sony DS3 I don't know, don't know if they are +DInput devices / how things are working for them.

I will update the other thread later how you can set the use HIDAPI setting.
Balderick 28 Sep, 2022 @ 12:37pm 
Thanks bro. Look forward to checking that out.
tintingaroo 8 Oct, 2022 @ 4:32pm 
So I learned what settings I was supposed to use when compiling the SDL file so it would be OK with Steam, and then got to play about with things...
I believe that SDL is fine and that the issue is from Steam. I can't see the client code to actually know, so this is my thinking & reasoning...:

The client is setting the value of SDL_JOYSTICK_HIDAPI_PS5_RUMBLE to 1 (a variable that controls whether the controller should be switched into enhanced mode or not) as part of the DS5 FW comparison check, whereas this variable would normally be controlled via the PS Config Support/Steam Input setting.

It's like it doing:
Is Dualsense? -> PS5_RUMBLE=1 (now it'll be switched to enhanced mode) -> Firmware_Version* < Latest_Firmware? -> Display FW message is enabled? -> Show message
*not necessarily the controller's actual firmware version

When it could be doing:
Dualsense? -> 'Display FW message' is enabled? -> (Firmware_Version != 0) and (Firmware_Version < Latest_Firmware)? -> Show message
Then those in enhanced mode will see the message if they are not on the latest firmware, simple/Dinput mode sees no message, the controller doesn't get mode switched.

Or if they wish to auto-usher all Dualsense, including those connecting in DInput mode (& so the user has PS Config Support disabled), to the true firmware comparison check (the controller's actual firmware version is read & compared):
Dualsense? -> 'Display FW message' is enabled? -> PS5_RUMBLE=1 -> Firmware_Version < Latest_Firmware? -> Show message
Then the user would disable 'Display FW message' and it would no longer affect the operation of the controller.

And that's some of my pondering :)
Last edited by tintingaroo; 8 Oct, 2022 @ 4:33pm
tintingaroo 8 Oct, 2022 @ 4:50pm 
On Windows, I learned that we can set SDL_JOYSTICK_HIDAPI_PS5_RUMBLE as an environment variable and control whether the DS5 can be switched to enhanced mode or not (can also set the variable on Linux/MacOS but I haven't looked into how), so now one can again use the controller with Steam's functionality while in Dinput mode.
When it's a system environment variable the change of that setting will apply even while Steam is running, when it was set as a user environment variable I found for the change of that setting to take affect it requires quitting and re-launching Steam.
Don't forget to Unhide the controller if you hid it if you want to try this...

You can create, edit or delete environment variables with a visual interface via: Control Panel > right-click System > Open > select Advanced system settings > Environment Variables...
(Or can tap Windows key and start typing environment and it should display 'Edit the system environment variables, or could type advanced to get 'View advanced system settings')

Create a new System variable
variable name:SDL_JOYSTICK_HIDAPI_PS5_RUMBLE
value = 0 (remain Dinput/don't switch to enhanced mode), or 1 (switch to enhanced mode)
OK > OK
Power cycle controller to change modes after changing the variable value
Delete the variable & restart Steam for things to go back to regular operation.

You can also set the variable in batch files. This is for the system environment variable:
1. Create a new text file,
save it with this content:
SETX SDL_JOYSTICK_HIDAPI_PS5_RUMBLE 0 /M
close the file
rename it DinputMode.bat

2. Create another text file,
save it with this content:
SETX SDL_JOYSTICK_HIDAPI_PS5_RUMBLE 1 /M
close the file
rename it EnhancedMode.bat

Since these are editing the system environment variable, they need to be run as admin. Good way to automate that is to create a shortcut for the batch file > right-click the shortcut > Properties > Advanced... > tick 'Run as administrator' > OK > OK
Use the shortcuts to trigger the batch files then power cycle the controller to switch modes.

Now the behaviour with Steam running will be:
  • run DinputMode and thereafter the controller wont be switched to enhanced mode by the Steam client, no matter the settings (PS Config Support/Steam Input can be enabled or disabled).
  • run EnhancedMode and thereafter it'll be switched to enhanced mode each time you power on the controller


I went further with the set-up and attached the batch files to the taskbar so they could be activated by e.g. Windows key + 8, Windows key + 9.
Then set those keyboard commands in Steam's Chord config alongside the command to turn off the controller.
So, I press PS + Square: it runs DinputMode & switches off the controller. From then onwards, when I power on the controller, Steam won't switch it to enhanced mode. (If PS Config Support/Steam Input is enabled, it still performs the emulation but it's just Dinput > Xinput).
I press PS + Cross: it runs EnhancedMode & switches off the controller. From then onwards, when I power on the controller, Steam will switch it to enhanced mode.
I'd use those chord commands when wanting to switch modes, the regular command PS+Triangle for just turning it off (not too important though).
I'll add instructions some other time.

Setting things with the environment variable loses out the auto-switch to enhanced mode, (i.e. controller is connected in Dinput mode > enable PS Config Support > controller is auto-switched to enhanced mode), it requires the controller be powered off/on for the first switch. This method gains a working 'opt-out of Steam Input on a per-game basis' setting functionality for BT connected PS controllers though ;)
So I leave PS Config Support enabled, then for Steam games I wish to use their native Dinput Dualsense support, I can disable Steam Input.
Last edited by tintingaroo; 25 Oct, 2022 @ 4:44am
tintingaroo 18 Oct, 2022 @ 5:09pm 
As I posted earlier, between Steam and Windows I have things such that pressing PS+Square runs a batch file & turns off the controller, then powering on results in Dinput-mode only (no Steam setting has any affect on this). Then a similar case where PS+Cross then powering-on results in Steam switching the controller to enhanced mode.

For those interested in setting up a similar thing:
1. THE BATCH FILES
- Create a new text file somewhere you're happy to leave it
- save it with this content: SETX SDL_JOYSTICK_HIDAPI_PS5_RUMBLE 0 /M
- close the file
- rename it DinputMode.exe

- Create another text file
- save it with this content: SETX SDL_JOYSTICK_HIDAPI_PS5_RUMBLE 1 /M
- close the file
- rename it EnhancedMode.exe

- Pin both of the files to the taskbar (right-click the file > Pin to taskbar)

- Change the filename extension of both files to .bat
(now you have: DinputMode.bat, EnhancedMode.bat)


2. THE SHORTCUTS PINNED TO THE TASKBAR
For both of the shortcuts on the taskbar:
- Shift + Right-click > Properties
- In the Target text box change the filename extension from .exe to .bat
- set Run to 'Minimised'
- click Advanced... > tick 'Run as administrator' > OK > OK


Positioning the shortcuts on the taskbar:
The shortcuts pinned to the taskbar can be opened with a keyboard command (Windows key + a number, 1 through to 9).

We want the shortcuts to be in one of the first 9 places on the taskbar. Drag them into one of those positions if need be. (May want to close open programs that are displayed on the taskbar to get the correct position for these two shortcuts.)

My Taskbar with the shortcuts in 8th and 9th position
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=2872887181&fileuploadsuccess=1


3. THE STEAM CHORD CONFIG
Here we use the Chord config to execute the keyboard command that will run the batch file and then the Steam command to turn off the controller. It can be assigned to different controller inputs but I use Square and Cross, so final command to switch mode would be PS+Square or PS+Cross.

- Steam > Settings > Controller > Guide Button Chord Configuration

(Vid of steps below: https://drive.google.com/file/d/1GtYQQDuLky1G4ApTaNlSHoMdcBLlkgJq/view?usp=sharing )
- Select the face buttons > select Square > Show Activators
- Click Binding > Toggle Multi-Button On > select the Windows key and the number key for the position of the first shortcut > Back
- Click Add Activator > set Activation Type to Release Press > click Binding > select the Power icon > OK ('Turn off controller' is already selected) > Back

Follow steps for Cross, set the keyboard command for the other shortcut on the taskbar
- click Done

:)


To revert to regular Steam behaviour, delete the variable:
- Control Panel > right-click System > Open > select Advanced system settings > Environment Variables...
(Or can tap Windows key and start typing environment and it should display 'Edit the system environment variables, or could type advanced to get 'View advanced system settings')
- Under 'System variables', select SDL_JOYSTICK_HIDAPI_PS5_RUMBLE and click Delete.
XDeadzX 18 Oct, 2022 @ 7:38pm 
Insane levels of workaround, very impressive and thank you for doing so.

My only question atm, is does this prevent PS5 mode/reactive triggers from working in the few games that have it on PC? I've dabbled a little bit, so far metro exodus is the only game that I've tried that will still engage PS5 mode with steam's currently broken support. Borderlands 3 doesn't engage it, and I don't have Riftbreaker anymore but that one wouldn't engage post-steam's breaking of it as well.

Just bringing back ps prompts and dinput for dinput games is wonderful, I'll likely leave it in that state for a while. Just disappointing that after games are implementing full DS/ps5 support on PC steam still hasn't fixed what they've broken.
tintingaroo 19 Oct, 2022 @ 5:30pm 
It could only prevent PS5 mode if the game uses SDL to support the controller and we had the environment variable PS5_RUMBLE set to 0. If they don't use SDL that variable would mean nothing to the game and it's operation.

I'm not a pro but I can't think how Steam doing what it's currently doing would have an affect on games that support PS5 mode. Steam is switching the controller to enhanced/PS5 mode, the games would also switch the controller to PS5 mode if not already there. I'm thinking as long as PS Config Support/Steam Input is disabled then it's over to the game's native support.
You'd have to explain what you mean by engaging PS5 mode (switching it from Dinput to PS mode and working or judging things by adaptive triggers/Dualsense features, or other?) if my explanation below doesn't cover what you meant.
If the controller can vibrate/have different lights than Dinput mode, then it's using PS5 mode. So if that's happening and there is control but no adaptive triggers (and Steam Input stuff is disabled) then it may be adaptive triggers are not supported (or if you're trying via BT then perhaps only supported via USB).

I haven't seen a confirmation that Borderlands 3 has adaptive triggers on PC. In my searches people have said it's in the menu but it's not a feature in the PC version. I didn't come across any comments saying they got it to work.

This guy from Aug 2021 re the triggers:
https://steamhost.cn/steamcommunity_com/app/397540/discussions/0/5167301764839609999/#c4737210531947495101

Comments in this thread:
https://steamhost.cn/steamcommunity_com/app/397540/discussions/0/3052859736123202466/

I have Borderlands 3 downloading from EGS so will see how things go with that version.

BUUUT the Riftbreaker experience is breaking my conclusions - so more to figure out.
XDeadzX 19 Oct, 2022 @ 9:47pm 
Originally posted by tintingaroo:
I haven't seen a confirmation that Borderlands 3 has adaptive triggers on PC. In my searches people have said it's in the menu but it's not a feature in the PC version. I didn't come across any comments saying they got it to work.

I have Borderlands 3 downloading from EGS so will see how things go with that version.

BUUUT the Riftbreaker experience is breaking my conclusions - so more to figure out.

Oh that's a good point, I have borderlands 3 as well on both to try without steam's interference. I gave it a go and I actually can't get the EGS version to detect dinput at all, regardless of steam's status. So it's more than likely borderlands 3, not an issue elsewhere. Your threads seem to say as much too, predating the steam bug.

My list of supported games is pretty short so I can't dabble too much.

Originally posted by tintingaroo:
I'm not a pro but I can't think how Steam doing what it's currently doing would have an affect on games that support PS5 mode. Steam is switching the controller to enhanced/PS5 mode, the games would also switch the controller to PS5 mode if not already there.

I'll give the workaround a go and complain some more if it's not working as expected. :happymeat: Thanks for the great efforts you've put in.
tintingaroo 20 Oct, 2022 @ 4:36am 
Yeah, same experience and conclusion as you for Borderlands 3. Looks like its Xinput only.

Originally posted by XDeadzX:
I'll give the workaround a go and complain some more if it's not working as expected. :happymeat: Thanks for the great efforts you've put in.
:steamthumbsup: :D
stili 2 Nov, 2022 @ 2:56pm 
Originally posted by tintingaroo:
What is happening for you @stili? Steam is still detecting and displaying the DS5 on the Controller Settings screen?
Also after deactivation, steam stals access to my ps5 controler in Desktop mode
GOLDEN COIN$ 19 Nov, 2022 @ 9:37am 
In july Steam Input API (which developers don't use) got support for Adaptive Triggers
https://steamhost.cn/news/group/4145017/view/3404176654594249092

Maybe this is related.
tintingaroo 27 Nov, 2022 @ 7:01am 
Originally posted by stili:
Also after deactivation, steam stals access to my ps5 controler in Desktop mode
I believe I've got you now. If you're not already aware of it, you can try the system environment variable way (I assume you're on Windows): https://steamhost.cn/steamcommunity_com/groups/SteamClientBeta/discussions/0/3409804429012214734/?ctp=2#c3390672107131659280
rubyred 27 Nov, 2022 @ 10:45am 
Originally posted by tintingaroo:
Originally posted by stili:
Also after deactivation, steam stals access to my ps5 controler in Desktop mode
I believe I've got you now. If you're not already aware of it, you can try the system environment variable way (I assume you're on Windows): https://steamhost.cn/steamcommunity_com/groups/SteamClientBeta/discussions/0/3409804429012214734/?ctp=2#c3390672107131659280

Your workaround not worked for me :( I'm still have to use dsx or built-in steam support for my dualsense with the games that already have dualsense support but only on wireless.
wagazz 27 Nov, 2022 @ 11:59am 
Originally posted by tintingaroo:

You can create, edit or delete environment variables with a visual interface via: Control Panel > right-click System > Open > select Advanced system settings > Environment Variables...
(Or can tap Windows key and start typing environment and it should display 'Edit the system environment variables, or could type advanced to get 'View advanced system settings')

Create a new System variable
variable name:SDL_JOYSTICK_HIDAPI_PS5_RUMBLE
value = 0 (remain Dinput/don't switch to enhanced mode), or 1 (switch to enhanced mode)
OK > OK
Power cycle controller to change modes after changing the variable value
Delete the variable & restart Steam for things to go back to regular operation.

This worked perfectly.
< >
Showing 16-30 of 58 comments
Per page: 1530 50

All Discussions > Bug Reports > Topic Details
Date Posted: 11 Jul, 2022 @ 4:50pm
Posts: 58