• Advertisement
Sign in to follow this  

DirectInput8 instead of XInput

This topic is 1364 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Given that Xinput only accepts Xbox controllers(according to Microsoft), I am left with DirectInput8 to accept any type of generic joypad, or is there an alternative? Edited by gasto

Share this post


Link to post
Share on other sites
Advertisement

There's also Raw Input and Windows has a joystick API.  I believe that only DirectInput will give you effects such as force-feedback, but someone with more knowledge about this than me would have to provide further info.

Share this post


Link to post
Share on other sites

IMHO DirectInput still is the right way how to work with almost any game controller. But you still should first try to find XInput devices, because DirectInput has one small problem with the Xbox gamepad - it represents the two analog buttons (triggers) as a single analog axis and thus there's no difference between both buttons on 0 and both buttons fully held down.

Btw, there are many Xbox compatible controllers, I have one made by Logitech. So it doesn't have to be just the original controller for Xbox.

Share this post


Link to post
Share on other sites

DirectInput could be used for "legacy" gamepad, joystick, wheels, other game devices with force feedback, mouse and keyboard, whatever works with a HID driver..

For mouse and Keyboard imo is better to use the windows messages (and optionally raw input), however for most games DirectInput is just fine for mouse and keyboard too.

Xinput unfortunately support only xbox 360 controllers-like.

Starting from Windows 8 Microsoft added some new input API (sorta high-level win32 wrapper) for metro and desktop too, but they don't work on prior windows versions...

Edited by Alessio1989

Share this post


Link to post
Share on other sites

DirectInput can be used for mouse and keyboard, yep, but Microsoft itself doesn't recommend it.

So:

Mouse & keyboard - windows messages (or raw input, if you really want it).

Xbox compatible gamepads - Xinput (DirectInput works too, but with some limitations, so I don't recommend it).

All other game controllers - DirectInput.

Share this post


Link to post
Share on other sites

The problems with windows messages for mouse input are: (1) ballistics (you don't always want them and Microsoft's recommendation just blindly assumes that you do), (2) clipping the mouse pointer to the window rect, and (3) showing/hiding the cursor as appropriate.  These are all solvable, of course, but it would be nice to not have to worry about solving them.  Raw input solves (1) but not (2) and (3).  And as for the recommendation to run raw input in a hidden window on another thread which you periodically poll for status?  Put it all together and congragulations, you've just re-invented DirectInput.  So why would you re-invent DirectInput when DirectInput already exists?

 

The problem with DirectInput of course is that it's no longer updated, but if it otherwise meets your needs I don't see any issues with using it.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement