Emulator Issues #11463
Hotkeys Regression since 5.0-9122
All games. Universal. Doesn't matter if it is GameCube, Wii or Virtual Console.
Game ID? (right click the game in the game list, properties, info tab)
All games. Universal. Doesn't matter if it is GameCube, Wii or Virtual Console.
MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)
Not relevant since it applies to all games.
What's the problem? Describe what went wrong.
Sooo... This is an interesting and annoying bug.
The issue is that the hotkeys get removed when loading a game (through they are restored and functional while in the main window of Dolphin, aka no game emulating). I have my hotkeys stored in a profile using Keyboard keys and a few XInput buttons. Loading a profile does restore the hotkeys when running a game (but are removed when re-launching Dolphin) but they still don't work.
While Dolphin recognizes my XInput controller (Xinput/0/Gamepad) and Keyboard (DInput/0/Keyboard Mouse) Dolphin can not refresh to my Keyboard device, it always simply resets to my Gamepad device. Since my hotkeys are bound to the Keyboard input (and since Dolphin is unable to refresh to the Keyboard device) the hotkeys won't work.
What steps will reproduce the problem?
- Open Dolphin.
- Boot a game of your choice.
- Use a hotkey that you have assigned to an action of your choice.
- Watch Dolphin fail to execute said hotkey.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Yes. Tested on 5.0-9155.
Is the issue present in the latest stable version?
No. Dolphin 5.0 works fine.
If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)
5.0-9122 refers to -> Core: Switch controller interface to render surface on booting (begäran nr 7519 från stenzek)
If your issue is a graphical issue, please attach screenshots and record a three frame fifolog of the issue if possible. Screenshots showing what it is supposed to look like from either console or older builds of Dolphin will help too. For more information on how to use the fifoplayer, please check here: https://wiki.dolphin-emu.org/index.php?title=FifoPlayer
No graphical issue.
What are your PC specifications? (CPU, GPU, Operating System, more)
Windows 10 x64
Intel Core i5-8600k 3.6 GHz
Nvidia Geforce GTX 1070, 8 GB VRAM
32 GB RAM, DDR4, 2400 MHz
Xbox One Wireless Controller (V3) with Wireless Windows Adapter, Keyboard & Mouse
Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)
See attached files for my hotkeys profile.
Thanks for the bisect. I'm not sure if the underlying problem here was caused by my changes, and more just the fact that the extra refresh was causing Qt to reset the default device, breaking your bindings. I've cleaned that up in a pull request, so if my understanding of what is going on is correct, it may fix your problem.
Could you please try this branch: https://github.com/dolphin-emu/dolphin/pull/7590 ( prebuilt binary at https://dl.dolphin-emu.org/prs/pr-7590-dolphin-latest-x64.7z )
I tried your prebuilt 7590 PR, but sadly it still doesn't work. At least nothing seems to have changed.
I tested some more with the latest development build. And it was getting weirder. Suddenly today I managed to get the hotkeys to be working. But as soon as I open the hotkeys tab and load my Main profile during a game (DInput/0/Keyboard Mouse) Dolphin locks my device to my Gamepad and my hotkeys no longer work and I need to restart Dolphin in order to restore my hotkeys or stop emulating a game, open the hotkeys tab, load the main profile and then boot my game again. For some reason Dolphin only prevents locking my device to my Gamepad when not booting a game.
I should probably take a look at it again, which revision actually broke it.
It still is weird. I was really sure that a few days ago I could not even use my hotkeys without opening the hotkeys tab and 5.0-9122 seemed to be the issue then. I don't recall a system update or anything and I am still still the same development build.
Ok... I have messed up my organization a bit I think.
I turned out my previous comment reflected to 5.0-9117 which still worked, except for refreshing a profile a mentioned. An separate issue being part of Dolphin longer than 5.0.
5.0-9155 is still broken. And so is 5.0-9122. The PR 5.0-9158 does not fix the issue.
The closest thing I can seem to reproduce is:
- Set bindings using the keyboard device.
- Change the (default) device to the xbox pad.
- Set a binding to force the config to save (not necessary on my PR, changing the device will force the config to save).
- Keyboard hotkeys no longer work.
I think this is expected, as the keyboard bindings are not absolute (don't include the device name), so it tries to attach them to the pad, and fails.
Using the "all devices" option in my PR forces any new bindings to use absolute expressions, so this specific problem should not occur.
Sadly using "All Devices" doesn't work.
I tried setting a new key binding to the "All Devices" setting.
The issue is when booting a game, all my hotkeys are suddenly removed. So I have to reload my profile. Prior to 5.0-9122 my hotkeys still were present when loading a game. On top of that Dolphin wants to use the Gamepad device and refuses to refresh to the Keyboard Mouse device.
If I open my hotkeys tab prior to booting a game and then boot a game and then open the hotkeys tab again the hotkeys are still there, except being locked to the Gamepad device. The difference with your PR is that Dolphin can now also refresh to the "All Devices" device except of only the Gamepad.
Just to test.
I set the Pause hotkey to exactly
DInput/0/Keyboard Mouse:PAUSE using the "All Devices" device, re-saved my profile. Closed Dolphin, re-opened Dolphin, booted a game, pressed the Pause key. Nothing happens. It does work on 5.0-9117 but not on 5.0-9122 or afterwards or on your PR.
If I then open my hotkeys tab during a game, re-load my profile (since my hotkeys are gone) I still can not use the Pause hotkey which was set to
I'm experiencing this issue too, though not across all games. This is only happening for me on games where I have a
PadProfile1 specified in my user config for the game. If I comment that line out, hotkeys work fine. Even weirder, this only occurs with
PadProfile1; I have no issues with
WiimoteProfile1, etc. This also appears to be completely unaffected by whether a controller is even connected in port 1.
Yes, I can confirm that as well. It seems that when the line PadProfile1 is included in the game's user config ini that my hotkeys are being removed and disabled. I tend to use PadProfile1 for almost every game that is capable of using the GameCube controller (often with slight variations in the profile). As soon as I remove PadProfile1 from the game's user config ini the game can use hotkeys as usually. Leaving a GameCube Controller connected to port 1 (Standard Controller) does not affect the issue and hotkeys will still work.
Did 5.0-9122 change something regarding PadProfile1?
No, it changed nothing to do with hotkeys, let alone profiles. The change switches the input from dolphin's main window to the render window, so that the center of the IR is relative to the render window, not the main window.
But, doing this has the side-effect of causing a input device refresh, which I suspect is the real underlying issue here. When I get a chance I'll see if I can reproduce it with game profiles, because outside of what was aforementioned, I haven't been able to reproduce the issue to debug it.