4

I'm having an issue getting a gamepad to work properly. Windows' input-devices system has always confused me, but after some research I've gathered the following:

  • XInput is the latest/most widely used API in DirectX for gamepad input
  • DirectInput is an older API that isn't as popular/used (thanks to XInput being easier and faster to set up)
  • XInput ONLY supports the Xbox controllers (Xbox 360 and probably Xbox One as well)
  • DirectInput supports all types of input devices, including generic HID-compliant gamepads and Xbox controllers (although with less features than through XInput, like headset support)

My issue involves getting a Bluetooth gamepad (Amazon Fire TV Game Controller) to work in games on Windows. Obviously since it isn't an Xbox 360 controller, getting it to work on an XInput-only game is going to require a work-around. This project seems to do the trick almost perfectly, as it enables all input devices to emulate Xbox360 input and therefore make them compatible with XInput.

However, I've run into a few snags and I can't really tell whose fault they are, or how to fix them. One issue is that the L/R triggers are not detected at all. Going into the "Devices and Printers" menu and clicking on the "Game controller settings" for my controller allows me to test the inputs via this familiar screen:

enter image description here

Pressing the triggers does not do anything at all. Furthermore, if you notice, there are 15 input buttons. This is correct, as the controller I'm testing does have 15 buttons, however 4 of those buttons are media buttons that control the OS on their own. For example, pressing the home button on the controller will open my internet browser and take me to my homepage. Pressing the other media buttons seemingly does nothing.

My questions are:

  1. How do I get the triggers to work? Is this a driver issue? I thought HID-compliant devices were supposed to just work. If Windows detected all 15 buttons, two analog sticks and one D-Pad, why couldn't it detect the two triggers? Do HID-compliant gamepads not support analog triggers, or is this a bug/issue either with the controller itself or Windows' gamepad driver?

  2. How can I take control of the 4 media buttons on the device? Having a button on a gamepad that takes me to my internet browser is pretty useless and annoying.

  3. If a custom driver is absolutely required for this, would it be possible to write one myself, having no connection with or help from the manufacturer?

Thanks!

2 Answers 2

2

You are correct about what directInput is vs Xinput, though one could argue that the directInput api allows for more diverse controls. If you have a controller that registers as a directInput device and you have a game that only accepts Xinput, I suggest x360ce (@ http://www.x360ce.com/ ). This converts directInput into Xinput for the game while masking the controllers actual input. Simply run x360ce.exe inside the game directory and follow the x360ce website's instructions. Unfortunately it is not compatible with all games, and also may not be compatible with your controller. It's worth a shot though, just be sure to leave feedback for the developers of x360ce afterward. I hope this helps!

0

I know that the original posters are long gone, but I wanted to add to this.

The main issue with the Fire Gamepad, and indeed a large number of generic Bluetooth Gamepads originally built to interface with Android systems, is that the drivers at the Windows end for DirectInput just don't represent the pad inputs accurately. See here for an example

I believe the generic Windows driver only includes 4 of the potential 6 analog axes needed (in the case of the Nyko Playpad, the triggers take an axis each). Short of finding a tool that interfaces the raw API that the likes of the HTML5 Gamepad API can read (Such as Gamepad tester), x360ce and similar won't be able to do the job, as they take their view of the controller from the DirectInput instance.

1
  • 2
    Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Mar 1, 2023 at 9:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .