Instalar Steam
iniciar sesión
|
idioma
简体中文 (chino simplificado)
繁體中文 (chino tradicional)
日本語 (japonés)
한국어 (coreano)
ไทย (tailandés)
Български (búlgaro)
Čeština (checo)
Dansk (danés)
Deutsch (alemán)
English (inglés)
Español de Hispanoamérica
Ελληνικά (griego)
Français (francés)
Italiano
Bahasa Indonesia (indonesio)
Magyar (húngaro)
Nederlands (holandés)
Norsk (noruego)
Polski (polaco)
Português (Portugués de Portugal)
Português-Brasil (portugués de Brasil)
Română (rumano)
Русский (ruso)
Suomi (finés)
Svenska (sueco)
Türkçe (turco)
Tiếng Việt (vietnamita)
Українська (ucraniano)
Comunicar un error de traducción
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.
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.
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>
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.
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.
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/
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.
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.
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.
In short: It's impossible. Even with the very first builds of Steam that supported controllers.
It's trivial to disable this, I just shouldn't have to do it by manually bypassing Steam's hooks.
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.
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.
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?