Suspicion confirmed. I think I've got a brute force workaround as well. Note this took a lot longer then I was expecting because I ended up chasing another unrelated issue (which I'll write up shortly).
First off, I'm using 10132 as a base. In this version, input assignment works until the refresh button is clicked a game is launched, in which case inputs stop working again.
What I'm seeing is this: My Keyboard/Mouse is *definitely* being picked up as multiple devices, and post PR7776 it looks like the code isn't accounting that multiple keyboard/mice as a possibility. Inputs work on Dolphin Init by accident; Dinput:
opulateDevices() is getting invoked twice and picks up the second device input the second time through. Once a game is started OR the refresh button is hit, Dinput:
opulateDevices() only gets invoked once and the second keyboard/mouse device never gets detected again.
I revoked some of the PR changes, and initial testing shows the problem is resolved, though likely breaking the intent of the PR for DirectInput devices in the process. I made the following changes:
ControllerInterface.ccp: Remove the entirety of PR7776.
DinputKeyboardMouse.ccp: Remove the check for duplicate devices (all instances of the use of bool s_keyboard_mouse_exists).
Note there is still a difference between an init and device refresh; on init two separate Dinput device entries are listed (Dinput/0/Keyboard Mouse and Dinput/1/Keyboard Mouse), but after a refresh only the first is listed. Inputs still work though, but I dislike an init and refresh are giving different results.
Someone smarter then me is going to have to come up with a *proper* solution. I can test whatever they come up with to confirm it works.
First off, I'm using 10132 as a base. In this version, input assignment works until the refresh button is clicked a game is launched, in which case inputs stop working again.
What I'm seeing is this: My Keyboard/Mouse is *definitely* being picked up as multiple devices, and post PR7776 it looks like the code isn't accounting that multiple keyboard/mice as a possibility. Inputs work on Dolphin Init by accident; Dinput:
opulateDevices() is getting invoked twice and picks up the second device input the second time through. Once a game is started OR the refresh button is hit, Dinput:
opulateDevices() only gets invoked once and the second keyboard/mouse device never gets detected again.I revoked some of the PR changes, and initial testing shows the problem is resolved, though likely breaking the intent of the PR for DirectInput devices in the process. I made the following changes:
ControllerInterface.ccp: Remove the entirety of PR7776.
DinputKeyboardMouse.ccp: Remove the check for duplicate devices (all instances of the use of bool s_keyboard_mouse_exists).
Note there is still a difference between an init and device refresh; on init two separate Dinput device entries are listed (Dinput/0/Keyboard Mouse and Dinput/1/Keyboard Mouse), but after a refresh only the first is listed. Inputs still work though, but I dislike an init and refresh are giving different results.
Someone smarter then me is going to have to come up with a *proper* solution. I can test whatever they come up with to confirm it works.
