I've been having problems with both the default combined XInput/DirectInput mode and Steam's own input API, as described at: https://www.allegro.cc/forums/thread/618290 So I decided to try turning off XInput and just use pure DirectInput. However, I have a 100% reproducible bug when connecting a particular pair of controllers. One is an official Xbox 360 controller, the other is a cheap 3rd party Xbox 360 controller. If I start the game with both already connected, or if I connect them simultaneously, there is no problem. But if I connect one, then the other (the order doesn't matter), one of them will fail to respond to inputs - but if I press inputs on the other, it's as if I pressed the input on both that controller AND the newly connected controller. Here is some debug output after enabling DEBUGMODE. I turned off XInput by turning off ALLEGRO_CFG_XINPUT. dinput I wjoydxnu.cpp:1003 joystick_enum_callback [ 17.73569] Joystick 0 initialized, GUID: f8bd5190-fbd6-11e8-8014445535400 dinput I wjoydxnu.cpp:1136 joydx_merge [ 17.74460] Merged, num joysticks=1 dinput D wjoydxnu.cpp:889 joystick_enum_callback [ 18.83082] Device f8bd5190-fbd6-11e8-8014445535400 still exists dinput D wjoydxnu.cpp:889 joystick_enum_callback [ 21.93956] Device f8bd5190-fbd6-11e8-8014445535400 still exists dinput I wjoydxnu.cpp:1003 joystick_enum_callback [ 21.97031] Joystick 1 initialized, GUID: f8c25aa0-fbd6-11e8-8024445535400 dinput I wjoydxnu.cpp:1136 joydx_merge [ 21.98685] Merged, num joysticks=2 dinput D wjoydxnu.cpp:889 joystick_enum_callback [ 23.14051] Device f8bd5190-fbd6-11e8-8014445535400 still exists dinput D wjoydxnu.cpp:889 joystick_enum_callback [ 23.14371] Device f8c25aa0-fbd6-11e8-8024445535400 still exists