libretro/RetroArch — pull request #288 by pinumbernumber (2013-08-25 17:08:14+00:00)
Title: Add XInput support (and misc fixes)

Added proper support for XInput joypads (that is, 360 pads). Although said pads have some support for DirectInput, XInput is needed for independent triggers and guide button support.

The driver has been added first in the list, so if there are any 360 pads connected, it will take over and act as a proxy for any remaining DInput devices.

Note that 360 pad configurations made with phoenix will no longer have even vaguely correct triggers and right stick, as the axis numbers are no longer the same. This is unavoidable, and still better than broken support (with DInput it is not possible to press both L2 and R2 simultaneously). If that's a deal-breaker though, just nudge it further down the joypad_drivers array and it can at least be kept for those who manually specify the driver (I will write a friendly guide for that if needed.)

retroarch-joyconfig still works correctly. The MSVC build has been fixed, and the check in dinput.c for a Win32 window has been removed to allow using joyconfig from the command line.

(360 pad support could be improved further in the future by writing an "input" driver as opposed to a "joypad" one, which would be able to remove the need for configuration since it knows the button layout.)