If you need to use WINE to play some Windows games, the lack of Xinput support might get on your nerves. WINE maps joystick devices to Dinput. That works for some older games, but buttons need to be mapped manually, and many newer games don’t detect the controllers at all because they expect Xinput.
I tried to get by this issue using x360ce, but this is a fickle beast already when run natively on Windows; even more so in WINE. But what worked really well for me was dumbxinputemu. Sometimes dumb things are the best.
To use it, determine if you’re running a 64-bit or a 32-bit WINE for the particular game you’re playing, then copy the matching
xinput1_3.dll from the latest release to the same directory as the game’s binaries. So if you’re trying a Steam game inside WINE, that’s probably somewhere inside Steam/steamapps/common. Then make sure your WINE is set to prefer the native version of the DLL via winecfg:
In the “New override for library” dropdown select “xinput1_3”, then “Edit…” that entry to set it to “native” only. If you have a very new game, you might need to do repeat all these steps for
xinput9_1_0.dll. This worked surprisingly reliably for me, no more double-detection of joysticks, no more wrong labels for buttons inside games, no more fiddly x360ce that works sometimes but then mysteriously breaks. Everything behaves as it shoud. Thank you, kozec.