opentk/opentk — pull request #161 by thefiddler (2014-07-30 09:53:14+00:00)
Title: [Win] HID-based IJoystickDriver2; improve XInput2 IGamePadDriver

This PR replaces the WinMM-based IJoystickDriver2 with a new, HID-based implementation.

Features:
- Avoids the WinMM / DirectInput limitation where XInput-compatible controllers report incorrect values for L/RTriggers.
- Avoids the use of deprecated WinMM APIs.
- Adds the capability to retrieve device GUIDs in a manner compatible to SDL2 (important for the GamePad configuration database).
- Shares large amounts of code with the Mac OS X HID implementation.
- Improves performance compared to WinMM.
- Opens the way for a haptics implementation (see https://github.com/opentk/opentk/issues/81).

Known issues:
- Collection elements are not currently parsed. This may result in missing buttons on specific joysticks, and needs to be fixed before merging.

If you are interested in joystick support, please test your joystick devices and post:
- if all buttons are available
- if LR triggers are correctly reported
- if both GamePad and Joystick return valid results
- any crashes or other issues you encounter

You can use `GameWindow States` from OpenTK.Examples as a test program.