Im using Xbox One Controller for playing Pokemon Ultra Sun with Citra Nightly 1152. My controller has bluetooth, also works with usb.
First, I use usb connect to my laptop and configure ācontrolā in Citra, all works well.
Then, I pull out usb, use bluetooth connect to laptop and re-recognize the controller (because change usb mode to bluetooth mode re-recognize the device is necessary), but all buttons and sticks of controller no respond even if configures look like correct in Citra setting window.
I must reconfigure all buttons and sticks, then works well.
System Information
Operating System: Windows 10 Professional 1803 17134.471
CPU: i7-6700HQ
GPU: NVIDIA GTX 960M
Citra Version (found in title bar): 1152
Game: Pokemon Ultra Sun
Screenshot of Issue (include the full Citra window including titlebar):

I have try all XInput Controller config at http://www.jannikvogel.de/scratchpad/citra-input-map/ (total 3 for xinput).
First I close Citra, then I copy into qt-config.ini and save it like this:

Then, I run Citra again, but it overwrite config to this:

Now, I run Citra and run game, all buttons and sticks no response.
So, I manual re-configure it downheartedly inside Citra control setting window, and it overwrite to this:

Now, it works well.
I also have this problem but in a different variation. If I run Citra from Visual Studio and then a normal build (or the other way round), I also need to reconfigure my controller even though the settings display all buttons as if they are mapped properly. This didn't happen before the "input rewrite".
1. Now Im in usb mode.
When I remove all guid paramaters, it not works.

2. But when I recover it, it works well.

3. I change to bluetooth mode.
As my description previously, it become not work.
Now, I manual reconfigure in Citra control setting window, and I open qt-config.ini, the guid was changed to 03000000000000000000000000007801(guid of bluetooth mode) from 030000005e040000ff02000000007801(guid of usb mode).
Ok, now works.

4. I disconnect bluetooth and connect usb. I use usb guid replace of the bluetooth guid in qt-config.ini and save.
Run Citra and game, works well for changing mode !
So, the guid paramater seems like necessary ? But configs at the website http://www.jannikvogel.de/scratchpad/citra-input-map/ all havenāt guid paramater.
This is related to my issue : https://github.com/citra-emu/citra/issues/4485
Citra binds controls to specific hardware id's for some reason, it'd be a lot easier if it were hardware agnostic and just checked buttons and axis without having to check the guid. It already checks the port number so I don't know why guid is necessary.
So, in theory, this could be fixed by the hidapi drivers introduced by SDL2.0.9, as the controller would report with the same guid.
Can you test with any of the nightly versions from 1431 to 1436 (curernt)?
The SDL2 version was updated to 2.0.10 by citra-emu/build-environments#22.
The problem is, the hidapi drivers are causing problems with other controllers, so they'll probably need to be disabled partially or completely. If it fixes this issue though it might be worth to keep the drivers for xbox360 and xboxOne controllers.
Most helpful comment
This is related to my issue : https://github.com/citra-emu/citra/issues/4485
Citra binds controls to specific hardware id's for some reason, it'd be a lot easier if it were hardware agnostic and just checked buttons and axis without having to check the guid. It already checks the port number so I don't know why guid is necessary.