Skip to content
ProjectXsentPublic
forked from samuelgr/Xidi

About

DirectInput interface for SDL controllers

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

622 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xidi SDL

Xidi improves the gameplay experience when using modern SDL-based controllers (such as Xbox, PlayStation, Switch, Google Stadia, 8BitDo, GameSir, Amazon Luna, Steam Controller, etc.) with older games that use DirectInput or WinMM to communicate with game controllers. In more technical terms, Xidi provides both DirectInput and WinMM interfaces for games to use and communicates with SDL-based game controllers natively using SDL, translating between the two interfaces as needed.

Xidi is implemented as a library that games should load instead of the system-supplied versions. As such, it is a very localized fix: no installation is required, and no persistent system-wide changes are made.

This build is based on Xidi v5.0.0. See Xidi SDL CMake for v4.3.1.

Key Features

  • Fixes issues encountered in older games, such as broken analog controls, phantom button presses, or complete failure to commmunicate with the controller. Without Xidi these issues can come up in DirectInput-based or WinMM-based games when used with an SDL controller.

  • Enables customization of game controller behavior, including simulating keyboard key presses. This can help make controls more intuitive and bring full controller support to games that only implement partial controller support.

  • Allows controllers to be changed while a game is running. Older games do not normally support this, but with Xidi controllers can be plugged in, unplugged, and swapped seamlessly during gameplay. Without Xidi this would require exiting and restarting the game.

Limitations

Xidi is not useful if:

  • A game already uses the XInput API to communicate with controllers. These games would not benefit from Xidi.

  • The problem arises with controllers that are not registered in the SDL controller database. Use the SDL Controller Test to create a controller mapping and save it in gamecontrollerdb.txt.

  • The problem arises from an older non-XInput controller being used with an XInput-based game. This is the inverse of the problem Xidi solves, for which solution like the Xbox 360 Controller Emulator or the XInput SDL Wrapper is needed.

Further Reading

See the Wiki for complete documentation.

Credits

About

DirectInput interface for SDL controllers

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages