Jump to content
ducon2016

Simulate X360 controllers when you just have a keyboard

Recommended Posts

hace 1 hora, ducon2016 dijo:

 

SFV the PC version or the Arcade version with JConfig?

 

pc version.

 

In my regular pc all ok, any game with the correct of your dll (32/64 bit).  And "xinput test.exe" with your 1_3.dll 32bit all ok

 

But in my arcade cabinet, your dll loads and capture inputs from keyboard logitech connected and ipac (arcade control connected like another keyboard) but with insane delay and controls tends to stuck.

 

In this same arcade with original x360kb and with vjoy + x360ce no problems

 

Is somenthing in this new dlls that enters in conflict with somthing, dll activates and capture inputs but useless due to lag and stock problem

 

Thanks for the help

Edited by huntsman360

Share this post


Link to post
Share on other sites

1. Which version of the dll did you use for SFV x86 or x64?

2. In which folder did you put the dll and x360kb.ini?

 

I just tested and it works here, I also have an ipac and a keyboard connected with no lag. Did you make sure that vjoy is disabled? double click the vjoy icon and untick the enabled box

Edited by ducon2016

Share this post


Link to post
Share on other sites
hace 6 horas, ducon2016 dijo:

1. Which version of the dll did you use for SFV x86 or x64?

2. In which folder did you put the dll and x360kb.ini?

 

I just tested and it works here, I also have an ipac and a keyboard connected with no lag. Did you make sure that vjoy is disabled? double click the vjoy icon and untick the enabled box

Yes, dll works. I put 64 version of 1_3

 

The problem is not that dll not work, it does and captures the input keys but......  with a lot of delay and controls stuck in a position or button pressed

 

Dll is operative but for some reason on my arcade cabinet with 2 keyboards (1 normal  + ipac) response is with much delay and stuck problem

 

Original dll and vjoy+x360ce not have this problem

 

I already have disabled vjoy and no luck

Edited by huntsman360

Share this post


Link to post
Share on other sites
13 minutes ago, huntsman360 said:

Yes, dll works. I put 64 version of 1_3

 

The problem is not that dll not work, it does and captures the input keys but......  with a lot of delay and controls stuck in a position or button pressed

 

Dll is operative but for some reason on my arcade cabinet with 2 keyboards (1 normal  + ipac) response is with much delay and stuck problem

 

Original dll and vjoy+x360ce not have this problem

 

I already have disabled vjoy and no luck

 

I understand the problem, just trying to find out what it could be. Where did you put the dll and config file? Which folder?

Share this post


Link to post
Share on other sites
hace 3 horas, ducon2016 dijo:

 

I understand the problem, just trying to find out what it could be. Where did you put the dll and config file? Which folder?

 

Hi, is not a folder problem.

 

I'm testin with xinputtest.exe and in my regular pc all ok, but lag and stuck in arcade cabinet

 

I uploaded a zip with the files, if you launch xinputtest.exe you can move left analog with arrow keys and all ok, but in my arcade the problem mentioned

test.zip

Share this post


Link to post
Share on other sites

Hi all,

 

Great little utility, I had to make a few changes to prevent Injustice 2 from displaying "Debugging tools and cheat engines are not allowed on Injustice 2".

 

Here are the specific settings:

 

  1. X64 XInput9.DLL
  2. HIdeDLL = 0 (Not Necessary)
  3. Steam = 0 (Key setting, when this is enabled, Injustice 2 detects a cheat engine) 
Edited by coolspot

Share this post


Link to post
Share on other sites
7 hours ago, huntsman360 said:

 

Hi, is not a folder problem.

 

I'm testin with xinputtest.exe and in my regular pc all ok, but lag and stuck in arcade cabinet

 

I uploaded a zip with the files, if you launch xinputtest.exe you can move left analog with arrow keys and all ok, but in my arcade the problem mentioned

test.zip

 

Your config has log=1 and padcount=2 when you only have one defined. Try to set log=0 and padcount=1. I tested your files and everything works fine. Also try with all the options to see if it makes a difference

 

[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

 

Edited by ducon2016

Share this post


Link to post
Share on other sites
2 hours ago, coolspot said:

UPDATE: I got it to work, here are my settings:

 

  1. X64 XInput9.DLL
  2. HIdeDLL = 0 (Not Necessary)
  3. Steam = 0 (Key setting, when this is enabled, Injustice 2 detects a cheat engine) 

 

Glad you got it to work. Yes HideDLL might not work on all games, it works for DOA6. And Steam=1 is only for games which require steam actions, most games do not need it. Can you edit your post to only keep the working part? The initial question is not necessary anymore.

Share this post


Link to post
Share on other sites
hace 1 hora, ducon2016 dijo:

 

Your config has log=1 and padcount=2 when you only have one defined. Try to set log=0 and padcount=1. I tested your files and everything works fine. Also try with all the options to see if it makes a difference

 


[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

 

i do it and nothing.

 

Is not in config files. Is someyhing on dll that conflicts with my arcade cabinet. On my other pcs no problem

 

But original x360kb and vjoy+x360ce works on my arcade cabinet, so is something like how this new x360kb (all dlls) is capturing keyboard inputs

Edited by huntsman360

Share this post


Link to post
Share on other sites
1 hour ago, huntsman360 said:

i do it and nothing.

 

Is not in config files. Is someyhing on dll that conflicts with my arcade cabinet. On my other pcs no problem

 

But original x360kb and vjoy+x360ce works on my arcade cabinet, so is something like how this new x360kb (all dlls) is capturing keyboard inputs

 

Not sure what it is, try this https://cdn.discordapp.com/attachments/401433952239484929/738126213700255825/xinput1_3.7z

Share this post


Link to post
Share on other sites
6 minutes ago, huntsman360 said:

 

It wooooooorks!!!!!

 

What you have done?

 

Can you do the same to all other dll (32bit and 64bit)?

 

Thanks

 

I tried something in the code. There is a known performance issue with the keyboard hooks, the code assumed a case would never happen but unfortunately it did, so cleaning it up. Will publish all dlls later today.

Share this post


Link to post
Share on other sites
hace 3 minutos, ducon2016 dijo:

 

I tried something in the code. There is a known performance issue with the keyboard hooks, the code assumed a case would never happen but unfortunately it did, so cleaning it up. Will publish all dlls later today.

 

thanks, really appreciate your help

Share this post


Link to post
Share on other sites
1 hour ago, huntsman360 said:

it works.

3 games of 64bit tested an all ok

 

Awesome, glad we could find it and fix it. Thanks for reporting the issue.

Share this post


Link to post
Share on other sites

Mortal Kombat Komplete Collection has an issue with x360kb with detecting two button presses (i.e. X + A).

 

I'm using a 6 button setup so I would like to use the shortcuts to do actions like throw (FP (X)  + FK (A)).

 

With x360kb, I noticed the commands are coming into Mortal Kombat Komplete training mode as A... B... in quick succession (nearly instanteous but it's clear the game is recognizing two key presses), rather than as a simulatenous press.

 

If I use a real XInput controller (i.e. Logitech F710), X + A will perform the proper move, and the input data looks to be AB.

 

If I use a keyboard, the move is performed fine as well (i.e. press two keyboard key simultaneously). 

 

Any ideas how to fix this one - is it the way the driver hooks into the keyboard it doesn't handle true simultaneous key presses (i.e. chording?).

 

Thanks.

 

Share this post


Link to post
Share on other sites
5 minutes ago, coolspot said:

Mortal Kombat Komplete Collection has an issue with x360kb with detecting two button presses (i.e. X + A).

 

I'm using a 6 button setup so I would like to use the shortcuts to do actions like throw (FP (X)  + FK (A)).

 

With x360kb, I noticed the commands are coming into Mortal Kombat Komplete training mode as A... B... in quick succession (nearly instanteous but it's clear the game is recognizing two key presses), rather than as a simulatenous press.

 

If I use a real XInput controller (i.e. Logitech F710), X + A will perform the proper move, and the input data looks to be AB.

 

If I use a keyboard, the move is performed fine as well (i.e. press two keyboard key simultaneously). 

 

Any ideas how to fix this one - is it the way the driver hooks into the keyboard it doesn't handle true simultaneous key presses (i.e. chording?).

 

Thanks.

 

 

It does work with combinations, I use them all the time. You can even set a combination as an input for example I used stuff like DPad Left=C&Left. In the config turn on the log, press the two buttons and send me the log please.

Share this post


Link to post
Share on other sites
44 minutes ago, ducon2016 said:

 

It does work with combinations, I use them all the time. You can even set a combination as an input for example I used stuff like DPad Left=C&Left. In the config turn on the log, press the two buttons and send me the log please.

 

Other games like SF IV, SF V seem to recognize multi inputs fine, it's just Mortal Kombat Komplete Collection. 

 

I did not realize the .ini can handle combination input ... I gave it a try and the game is now recognizing X, A, LB, in sequence. Essentially MKK is reading all three keys,

 

Attached is a screenshot and two log files:

 

  1. Log File 1: Using combination keys in the config file, game is still detecting X / A even though X+A is mapped to LB
  2. Log File 2: No combination keys, game is detecting X / A in sequence not simultaneously like with a real gamepad or keyboard.

 

Both logs start around 40s on wards when MKK goes into practice mode:

 

From Log File 1:

2020-07-30 18:22:35.009 (  48.259s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:35.019 (  48.269s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A2
2020-07-30 18:22:35.019 (  48.269s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A2
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:35.025 (  48.276s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:35.026 (  48.276s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed

From Log File 2:

 

2020-07-30 18:27:26.226 (  41.678s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:27:26.226 (  41.678s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:27:26.238 (  41.690s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A0
2020-07-30 18:27:26.238 (  41.690s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A0
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:27:26.243 (  41.695s) [                ]             x360kb.cpp:59    INFO| X button pressed

Here is my config file (without combo keys):

 

[Options]
UseInitBeep=1
Log=1
PadCount=2
HookAllXInputDLLs=0
BlockRawInput=1
BlockKeys=1
BlockKeysDelay=0
CloseProcess=1
CloseWindow=1
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

[PAD1]
Start=1
Back=5
Left Analog Left=Left
Left Analog Down=Down
Left Analog Right=Right
Left Analog Up=Up
X=Left Control
Y=Left Alt
A=Left Shift
B=Z
Right Trigger=X
;Left Trigger=Z
Right Shoulder=Space
;Left Shoulder=Left Control&Left Shift

[PAD2]
Start=2
Back=6
Left Analog Up=R
Left Analog Down=F
Left Analog Left=D
Left Analog Right=G
X=A
Y=S
Right Shoulder=Q
;Left Shoulder=X&W
A=W
B=I
Right Trigger=K

 

 

I LOVE YOUR APP THOUGH :fiesta:

IMG_8695.jpg

Log File 1 - Combination Buttons.log

Log File 2 - No Combination Buttons.log

Edited by coolspot

Share this post


Link to post
Share on other sites

Looking at Log1. Thanks @coolspot

 

You press X at 2020-07-30 18:22:28.236, the game reads xinput 6 milliseconds later at 2020-07-30 18:22:28.242 and it is recognized. Then you keep X pressed and press A at 2020-07-30 18:22:28.253, the game reads xinput at 2020-07-30 18:22:28.259 and finds both X and A pressed! Then you keep those pressed and the game those are kept pressed until 2020-07-30 18:22:28.865.

 

What is possible is because the game polls the control at intervals of 16ms, it is expecting both inputs should be pressed within the same strict window. Sorry yes if you reuse the same buttons it will trigger the individual buttons, maybe I should add an option for that.

 

Can you try v15 I just posted today, this could be related to what I fixed for @huntsman360, I was waiting 16ms in some cases which seems to be the exact interval your log exhibits. So I might have fixed it already.

2020-07-30 18:22:28.236 (  41.486s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A2
2020-07-30 18:22:28.236 (  41.486s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A2
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.242 (  41.493s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.253 (  41.503s) [                ]             config.cpp:343   INFO| [HookCallback] Key pressed A0
2020-07-30 18:22:28.253 (  41.503s) [                ]             config.cpp:360   INFO| [HookCallback] Key blocked A0
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.259 (  41.510s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.280 (  41.531s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.292 (  41.543s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.309 (  41.559s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| X button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:59    INFO| Left Shoulder button pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:84    INFO| Left Analog Right axis pressed
2020-07-30 18:22:28.309 (  41.560s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 1
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:37    INFO| XInputGetState Pad 0
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:59    INFO| A button pressed
2020-07-30 18:22:28.325 (  41.576s) [                ]             x360kb.cpp:59    INFO| X button pressed

 

 

Edited by ducon2016

Share this post


Link to post
Share on other sites
2 hours ago, ducon2016 said:

Looking at Log1. Thanks @coolspot

 

You press X at 2020-07-30 18:22:28.236, the game reads xinput 6 milliseconds later at 2020-07-30 18:22:28.242 and it is recognized. Then you keep X pressed and press A at 2020-07-30 18:22:28.253, the game reads xinput at 2020-07-30 18:22:28.259 and finds both X and A pressed! Then you keep those pressed and the game those are kept pressed until 2020-07-30 18:22:28.865.

 

What is possible is because the game polls the control at intervals of 16ms, it is expecting both inputs should be pressed within the same strict window. Sorry yes if you reuse the same buttons it will trigger the individual buttons, maybe I should add an option for that.

 

Can you try v15 I just posted today, this could be related to what I fixed for @huntsman360, I was waiting 16ms in some cases which seems to be the exact interval your log exhibits. So I might have fixed it already.

 

 

It's fixed with v15 - throws now work in MKK - game is recognizing X+A as a combined input! :very-good: I will continue to test with other games.

 

I also got it configured with Dragon Ball Fighter Z today, but it took a bit of work due to EasyAntiCheat. For others,to use x360kb with DBFZ, the following needs to be done:

  • Disable Easy Anti Cheat (go into DBFZ Steam local files and run the EAC setup.exe and uninstall)
  • Option A: Manually create a shortcut, add the following parameter to the end of the shortcut: "-eac-nop-loaded"
  • Option B: Use DBFZ Mod Manager and patch .EXE (https://gamebanana.com/tools/6357)

After patching or disabling, not sure if the game can go online anymore - I plan to play offline.

Edited by coolspot

Share this post


Link to post
Share on other sites

Did anyone test on teknoparrot for racing games?

Edited by Caos Gamer

Share this post


Link to post
Share on other sites
37 minutes ago, Caos Gamer said:

Did anyone test on teknoparrot for racing games?

 

Yes I use it with Teknoparrot too it works. You need to put xinput1_4.dll and x360kb.ini in the teknoparrot folder, NOT in the game folder.

Share this post


Link to post
Share on other sites
En 31/07/2020 a las 19:33, ducon2016 dijo:

 

Sim, eu uso com Teknoparrot também funciona. Você precisa colocar xinput1_4.dll e x360kb.ini na pasta teknoparrot, NÃO na pasta do jogo.

Thank you Bro.

Share this post


Link to post
Share on other sites

Pac-Man 256 has some some comments about trouble with x360kb, probably the old version not this one. I got it configured today, required a bit of trial and error:

 

  • Use X-Input 1.3, 32-bit, DLL
  • Use the following options:
[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=0 ;If blocking is set to any other value, the simulated x-input device will not register properly
BlockKeys=0
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

That's pretty much it along with the proper control mapping of course.

Share this post


Link to post
Share on other sites
1 hour ago, coolspot said:

Pac-Man 256 has some some comments about trouble with x360kb, probably the old version not this one. I got it configured today, required a bit of trial and error:

  • Use X-Input 1.3, 32-bit, DLL
  • Use the following options:

[Options]
UseInitBeep=1
Log=0
PadCount=1
HookAllXInputDLLs=0
BlockRawInput=0 ;If blocking is set to any other value, the simulated x-input device will not register properly
BlockKeys=0
BlockKeysDelay=0
CloseProcess=1
CloseWindow=0
CloseKey=Esc
FilterOtherPads=0
FakeXInputPads=0
HookFastProx=0
SetPropertySuccess=0
DisableDI8Keyboard=0
DI8Range=0
RemapMethod=0
HideMouse=0
HideTaskBar=0
HideDLL=0
Steam=0
AnalogRange=1.0

That's pretty much it along with the proper control mapping of course.

 

It works with PadCount=2 or 3 or 4 if you have the controls. I use it with two players on my setup, works really well.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×