djlastnight / KeyboardSplitterXbox

Creates up to 4 virtual xbox 360 controllers and feeds them via one or more keyboards.
515 stars 45 forks source link

Requesting SOCD resolution options #136

Open Zuftry opened 2 years ago

Zuftry commented 2 years ago

Hello. I've been playing fighting games with this program, and found out theres a really annoying input one gets when left and right dpad buttons are pressed at the same time. Keyboardsplitter inputs a left-down command when that happens, you can check this in the windows controller settings. Unexpectedly, when up and down are pressed simultaneously one gets a neutral input, which is good and how it should be when one presses left-right too. This input problem especially affects the experience of oldies fgs that dont have any in-game SOCD resolution. Adding some SOCD settings would be nice for this great program, something that allows us to decide which dpad direction gets inputted when opposing directions are pressed simultaneously, be it neutral, last pressed or first pressed direction, etc.

gdelaguar commented 2 years ago

Adding to this, when holding two same opposite cardinal directions (Left and Right for example) and those imputs are being done through a dpad (as in, the input the emulator is receiving is an xbox directional pad left and right press), the inputs get stuck and no new inputs will process, the input lag will increase until no new inputs are done and then all inputs made during that time will be processed at once. It seems to be an error on the part of the xbox drivers, would it be possible for the emulator to add a layer to process socd imputs to prevent this issue from arising?

djlastnight commented 1 year ago

Well guys, I believe I implemented everything as it is on the xbox 360 controller. It uses combination of this flags originally: https://github.com/djlastnight/KeyboardSplitterXbox/blob/e11039d9df959971408bb418351721ae485fec44/VirtualXbox/Enums/XboxDpadDirection.cs

I believe it is possible to have behaviour different from the original one, but it should be coded of course.

neel-bp commented 8 months ago

i also have used this program for fighting games extensively, depending on game, you can in a lot of times get around this problem by binding your keyboard's directional keys to left stick instead of dpad, i encountered this problem in the king of fighters 2002 um, when i was pressing right while holding left and down, i was getting a 3 simultaneous inputs, but when i did the same thing while my directional keys bound to left stick instead of dpad, it was working as expected, its not exactly socd cleaning but exactly how keyboard work, in older fighting games if you use keyboard do this test, they will behave like this too, if you are playing a much older game through fightcade, i would recommend using stick and checking "fix dropped inputs" on fightcade fbneo emulator, this way your half circles won't miss even if you go directly from down left to down right, it will add a down input by itself, hope that helps, also if you want a quick fix, keyboard splitter version 1.2.0.2 dpad has kind of last input wins cleaning, at least that's what i observed on kof 02 um, which according to my various tests doesn't do any socd cleaning by itself when using anything other than keyboard, lots of fixes are in place for that game when using actual keyboard. like half circles never missing.