TASEmulators / BizHawk

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
http://tasvideos.org/BizHawk.html
Other
2.2k stars 385 forks source link

"Accept background input" does not work with Xbox One controllers #2777

Closed Klades closed 3 years ago

Klades commented 3 years ago

Summary

Using either my Xbox One Elite 2 controller or my 8bitdo Pro 2 controller in xinput mode (which presents itself to Windows as an Xbox One controller), I can play just fine while the window is in focus but if the window loses focus I get nothing, regardless of whether the "Accept background input" option is set or not. If I switch the 8bitdo controller to Dinput mode, it works when the window is out of focus as expected. I've disabled Steam input xbox controller support in case that was causing a problem, but it didn't change anything.

Repro

  1. Connect an Xbox One controller
  2. Start the emulator
  3. Ensure that Accept Background Input is checked
  4. Load a ROM, observe that input is accepted only when the window is in focus
  5. Disconnect Xbox One controller
  6. Connect Dinput controller
  7. Remap controls
  8. Observe that input is accepted regardless of window focus

Host env.

hugh4life commented 3 years ago

I'm having/had the same kind of issues.

It sort of works for me if you do not manually rebind the keys. The X1 rather than the J1 bindings seem to work. I am mostly playing NES randomizers and I prefer B and A binded to the XBox's Y and B buttons rather than X and A. That's easy to work around by manually editing the config file, but I play Final Fantasy 1 randomizer which does a lot of hard and soft resets for encounter manipulation and I prefer those bound to the stick buttons.

I found a reddit thread entitled "Does an Xinput to Dinput converter exist?" and the top commented recommended a program called XInput Plus.

Select EmuHawk.exe as the Target Program. Accept a dialogue box noting that EmuHawk.exe is a 64-bit program. Click the DirectInput tab and check "Enable DirectInput Output". Click Apply at the bottom.

ghost commented 3 years ago

Doesnt work with DS5 aswell, only analog controls do work

YoshiRulz commented 3 years ago

Obviously CNR, but that's to be expected with the amount of variation in gamepads. Have any of you tried background input with Config > Customize... > General > Input Method set to "OpenTK"?

Klades commented 3 years ago

Obviously CNR, but that's to be expected with the amount of variation in gamepads. Have any of you tried background input with Config > Customize... > General > Input Method set to "OpenTK"?

That appears to solve the problem for Xbox One controllers, as best as I can tell.

Klades commented 3 years ago

Update: I decided to see if I could figure anything out since I happen to have two controllers causing the problem, and with a the issue seems to be absent for both my actual Xbox One controller and my 8bitdo in xinput mode.

ghost commented 3 years ago

Adding to this aswell after checking: OpenTK doesnt fix the issue for DS5 controllers, in fact only analog inputs will still work on OpenTK as background input wether or not the "accept background input" is enabled or disabled at all, both the general one and the specification for "only for controller inputs" check

YoshiRulz commented 3 years ago

Calling this solved then. @AleMastroianni Please open a new issue.