GRUPO DE STEAM
Steam Client Beta SteamBeta
GRUPO DE STEAM
Steam Client Beta SteamBeta
16,419
JUGANDO
69,707
ONLINE
Fundado
8 de enero de 2013
Todas las discusiones > Beta Feedback > Detalles del tema
Kaldaien 29 ABR 2021 a las 15:31
How to disable Steam Input globally?
None of my games where a developer has enabled Steam Input have working input because Steam Input disables XInput, DirectInput and HID and then handles all of this stuff in a separate process.

I cannot use that, you just severed the connection between the game and input devices by doing this. It's been this way for years, but now that there's no system-wide way to disable Steam Input, I have a lot of games that are busted until I manually disable Steam Input.
< >
Mostrando 1-15 de 59 comentarios
TheOddsBodkins 30 ABR 2021 a las 2:38 
There's no option to disable it globally, but you can disable it for each controller.

There's an option to "hide" your device from Steam Input in the controller options. When you select a detected controller in the controller options screen, there should be a "hide device" button at the bottom of the screen, click that and restart Steam for the change to take effect.
Última edición por TheOddsBodkins; 30 ABR 2021 a las 2:39
austinp_valve 30 ABR 2021 a las 15:02 
Steam Input defaults to disabled for both players and developers, so if a game has Steam Input enabled by the developer they've gone into Steamworks settings and turned it on. We do no provide an option to players to globally override developer's choices to Steam Input because it would silently break input in many games. If you want to force it off in a specific game you can in the per-game settings.
Kaldaien 11 MAY 2021 a las 2:52 
Publicado originalmente por Bananarama:
You can deactivate the Steam in-game overlay globally. If deactivated, Steam Input et al. won't be initialized/called.
This isn't true. The Steam client DLL exports an HID interface that activates for anything using SteamAPI, whether the overlay's active or not.

Publicado originalmente por austinp_valve:
Steam Input defaults to disabled for both players and developers, so if a game has Steam Input enabled by the developer they've gone into Steamworks settings and turned it on. We do no provide an option to players to globally override developer's choices to Steam Input because it would silently break input in many games. If you want to force it off in a specific game you can in the per-game settings.
You should really consider an option to turn it off completely, because you broadly kill all gamepad input APIs and make it much more difficult to get them working correctly when they're misbehaving. You actually do the opposite of what you're intending to do :-\

I know in 100% of cases that I do not want Steam Input screwing up my game, and would rather translate the input APIs myself. XInput, DirectInput, WinMM Joystick... whatever the game wants, I'm happy to translate it myself and don't want to be hassled with disabling this on a per-game basis. There's 0 chance I ever want Steam Input.
Última edición por Kaldaien; 11 MAY 2021 a las 2:55
Kaldaien 11 MAY 2021 a las 3:13 
Steam Input does not work cooperatively with any other add-on software that wants to use and fix issues related to gamepad input.

I can obviously just hook SteamAPI and intercept Steam Input myself, but that's abstracted around game-specific tasks. By blocking XInput and DirectInput, you've really made life extremely difficult.

----
Anyway, I know this is never going to change. But you did at one point have a default preference, I have no idea where it went and am basically assured that input in games only works correctly for native Xbox controllers, since you interfere with those the least. </frustration>
Kaldaien 11 MAY 2021 a las 3:50 
For context, this https://steamcommunity.com/sharedfiles/filedetails/?id=2465720809 is exacerbated by Steam Input. It's so much easier to fix these problems in games when there's not ... Steam in the way.

Game runs fine when Steam Input is disabled and I can directly manipulate the bad Direct Input code that's the cause of that.

https://steamcommunity.com/sharedfiles/filedetails/?id=2483847560

Games are not as well tested as you think they are. Steam Input's just being a giant nuisance.
Última edición por Kaldaien; 11 MAY 2021 a las 3:53
Kaldaien 11 MAY 2021 a las 12:27 
Incidentally, among said game's input processing nightmares, it uses a Keyboard Hook and does not stop processing input from said hook when the Steam overlay is active.

I fixed the issue of keyboard input leaking through to the game by bypassing the keyboard hook when the overlay is active. I don't know if this is a common occurrence, it's certainly the first time I've ever had to fix this.

I don't think there's a good general purpose defense against this unless you install your own kb hook when activating the Steam overlay and remove it when deactivating. GeForce Experience does this, Steam doesn't.
Última edición por Kaldaien; 11 MAY 2021 a las 12:34
AL2009man 12 MAY 2021 a las 17:18 
Publicado originalmente por Kaldaien:
For context, this https://steamcommunity.com/sharedfiles/filedetails/?id=2465720809 is exacerbated by Steam Input. It's so much easier to fix these problems in games when there's not ... Steam in the way.

Game runs fine when Steam Input is disabled and I can directly manipulate the bad Direct Input code that's the cause of that.

https://steamcommunity.com/sharedfiles/filedetails/?id=2483847560

Games are not as well tested as you think they are. Steam Input's just being a giant nuisance.

This reminds me of Death Stranding's PC Port at launch, but even after disabling Steam Input (and/or Steam Input API support) completely, there's still performance issues (I think Rumbles can cause the hit) regardless. Both Valve and Kojima Production/505 already fixed the issues since then.

Thankfully, Death Stranding can still do Windows.Gaming.Input/XInput/etc, we can still use Legacy Input as a fallback. (hey Kaldaien, WGI is a thing Microsoft is trying to replace XInput)

At this rate, NieR and bad PC Ports is becoming a running theme here, *sigh* at least we aren't dealing with Horizon Zero Dawn-levels of badly implemented input. /Despair emote/
Última edición por AL2009man; 12 MAY 2021 a las 17:58
Kaldaien 13 MAY 2021 a las 18:52 
Yeah, pirates get the superior version free from problems caused by Steam Input. It's ludicrous.

I'm deadset on nuking Steam Input out of the water in all of my mods, so my users don't have to deal with these performance problems. I initially liked Steam Input, but now I detest it. I've grown to hate the Steam platform in its entirety :-\

For @#$% sake, when I'm actively fixing bugs in the Steam overlay and can't get the time of day from Valve, there's a problem. I'm done fixing their crap.
Última edición por Kaldaien; 13 MAY 2021 a las 18:54
austinp_valve 14 MAY 2021 a las 2:40 
I'm not aware of any overlay related input bugs that have been reported. Can you link me to a thread with repro steps?
Kaldaien 14 MAY 2021 a las 13:25 
Publicado originalmente por austinp_valve:
I'm not aware of any overlay related input bugs that have been reported. Can you link me to a thread with repro steps?
https://steamcommunity.com/groups/SteamClientBeta/discussions/3/3123786356703008701/?tscn=1620985240#c3144053275983735077

NieR: Replicant uses a Windows Keyboard Hook for its keyboard input processing (WH_KEYBOARD).

It _does_ have an Overlay Activation callback that it uses to -kinda- pause the game (goes into a menu screen). However, because of that keyboard hook, it continues receiving keyboard input while the Steam overlay is active :)

I fixed the problem by adding my own WH_KEYBOARD hook when the Steam overlay is activated that doesn't pass the messages down to the game. The Steam overlay continues working with keyboard input as designed and the game stops activating random menu functions when you type anything in the overlay.
Kaldaien 15 MAY 2021 a las 5:07 
I apologize for the brash language, but please if you're still reading this...

SteamInput is a source of countless headaches and agitates me greatly due to the way it's implemented.

When it engages, it sabotages XInput, DirectInput and HID. So that no other code running in the game's process can communicate with gamepads in any capacity. That means, my overlay cannot use gamepad to do anything, it also means I cannot block gamepad input to make my overlay work cooperatively with the game (e.g. when overlay is active, don't pass input through to the game underneath).

You must understand the importance of being able to hook gamepad input APIs and do so in a way that's not game-specific. (i.e. poll face buttons, not hook into SteamAPI and ♥♥♥♥ around with action sets).

My only possible recourse would be to move all input processing out of the game itself and into a separate process, and while that's doable, it actually makes Special K's game fixing features less functional. Being able to block input APIs conditionally is very important to fix performance problems and various other issues, and as things stand Steam Input is playing by its own set of rules creating a ton of problems.

    Can you please consider what I'm saying?

Some compromise is needed such that I can intercept input before it goes through Steam Input and allow interaction with my software's overlay. I do not wish to disable Steam Input in any way, I just need it to work more cooperatively as all other input APIs in the HID stack do (i.e. w/ low-level hooks, window focus, etc.) to work harmoniously with the framework I've developed for fixing problems in games. It's ironic that Steam Input itself has become one of said problems.
Última edición por Kaldaien; 15 MAY 2021 a las 5:09
Lulu Rainsong 18 MAY 2021 a las 21:17 
Please see Post #3. You cannot force the Steam Controller OR Remote Play off. If it does not go through Steam FIRST, and the game is installed & played THROUGH Steam (you can check this with ANY game that supports ANY controller input - DInput/XInput/Steam, et al.), and alt-tab out of the game, any inputs sent will not be read by the game.

In short: It's impossible. Even with the very first builds of Steam that supported controllers.
Última edición por Lulu Rainsong; 18 MAY 2021 a las 21:18
Kaldaien 19 MAY 2021 a las 3:04 
I can check this with Special K much quicker. The Steam client DLL installs hooks for XInput, DirectInput, RawInput, WinMM Joystick, HID and then disconnects them from the Windows DLL and instead routes these things through the Steam client.

It's trivial to disable this, I just shouldn't have to do it by manually bypassing Steam's hooks.
Última edición por Kaldaien; 19 MAY 2021 a las 3:04
Kaldaien 2 JUN 2021 a las 22:03 
I've more or less given up on this.

For anyone who might arrive here from Google, for the two things Steam both refers to as "Steam Input," the following solutions exist:


1) "Steam Input" that is just translating to XInput, prevent Steam from loading ordinal 100 from XInput*.dll, which it does hundreds of thousands of times.

* It then becomes possible to actually read gamepad input using a normal input API without Steam breaking stuff.


2) "Steam Input" that re-invents the input wheel completely, very much different.

#include <steamapi/isteamcontroller.h> #include <SpecialK/input/input.h> #define SK_STEAM_READ(type) SK_Steam_Backend->markRead (type); #define SK_STEAM_WRITE(type) SK_Steam_Backend->markWrite (type); #define SK_STEAM_VIEW(type) SK_Steam_Backend->markViewed (type); using SteamAPI_ISteamController_GetDigitalActionData_pfn = ControllerDigitalActionData_t (S_CALLTYPE *)(ISteamController *, ControllerHandle_t, ControllerDigitalActionHandle_t); using SteamAPI_ISteamController_GetAnalogActionData_pfn = ControllerAnalogActionData_t (S_CALLTYPE *)(ISteamController *, ControllerHandle_t, ControllerAnalogActionHandle_t); SteamAPI_ISteamController_GetDigitalActionData_pfn SteamAPI_ISteamController_GetDigitalActionData_Original = nullptr; SteamAPI_ISteamController_GetAnalogActionData_pfn SteamAPI_ISteamController_GetAnalogActionData_Original = nullptr; ControllerDigitalActionData_t SteamAPI_ISteamController_GetDigitalActionData_Detour (ISteamController *This, ControllerHandle_t controllerHandle, ControllerDigitalActionHandle_t digitalActionHandle) { static ControllerDigitalActionData_t neutralized = { false, false }; if (SK_Input_GamepadCapture ()) return neutralized; SK_STEAM_READ (sk_input_dev_type::Gamepad); return SteamAPI_ISteamController_GetDigitalActionData_Original (This, controllerHandle, digitalActionHandle); } ControllerAnalogActionData_t SteamAPI_ISteamController_GetAnalogActionData_Detour (ISteamController *This, ControllerHandle_t controllerHandle, ControllerAnalogActionHandle_t analogActionHandle) { static ControllerAnalogActionData_t neutralized = { k_EControllerSourceMode_None, 0.0f, 0.0f, false }; if (SK_Input_GamepadCapture ()) return neutralized; SK_STEAM_READ (sk_input_dev_type::Gamepad); return SteamAPI_ISteamController_GetAnalogActionData_Original (This, controllerHandle, analogActionHandle); }

The second problem is ludicrously complicated to solve, but the only way to keep games from processing input they should not be when they use this API. There really should be a kill switch, all other APIs could simply be told the window doesn't have focus and they'd stop.
Última edición por Kaldaien; 3 JUN 2021 a las 2:12
Voyant 13 FEB 2022 a las 13:12 
Did we ever get an option on this its been an ongoing issue since 2018. Sitting here in 2022 still looking for a way to disable Steam Input so I can play my games.

Disabling them individually doesn't do anything you still get the dreaded "gamepad config loaded" and are screwed. Even if you turn forced off, disable every option under the sun it still appears.

Main reason not to buy a SteamDeck for those considering, what good is having controllers that don't work?
< >
Mostrando 1-15 de 59 comentarios
Por página: 1530 50

Todas las discusiones > Beta Feedback > Detalles del tema