SteamInput to DSU wrapper
This utility connects to SteamWorks and serves a controller recognized by SteamInput as a DSU/CemuHook server, while also launching the DSU client executable. It enables motion controls integration for Steam controller/Dualshock 4 in programs like Cemu/Citra/Dolphin, requiring only the steam client as the driver. Because it uses SteamInput, it also works over Steam Link/RemotePlay/In-Home-Streaming.
Currently it is Windows-only as it relies on Winsock and the CreateProcess Win32 API, which would have to be replaced with normal sockets and fork()/execve()
- Choose a sacrificial steam game for SI2DSU to steal controller input from. (For example Super Hexagon)
- Find out the game's Steam AppID using SteamDB (SuperHexagon = 221640)
- Go to your Steam client installation directory, and if it doesn't already exist, create a folder named "controller_config" inside it.
- Copy the file "game_actions_480.vdf" from SI2DSU release to the "controller_config" folder.
- Change the filename to correspond to your sacrificial SteamID ("game_actions_221640.vdf")
- Go to your sacrificial game's install directory, where the main exe which steam launches is located (SteamInstallDirectory/steamapps/common/Super Hexagon/)
- Create a folder named "dsu" in that directory, and move all the game's original files which were here in there
- Copy "sidsu.exe", "dsusettings.txt" and "steam_api64.dll" from the SI2DSU release into the game's folder (beside "dsu")
- Rename "sidsu.exe" to whatever the game's executable was called ("superhexagon.exe")
- Open dsusettings.txt and change the first line to point to your client ("Cemu.exe"), and the second line to be the sacrificial AppID
- At this point, the sacrificial game should work fine, other than the controller input
- Add the renamed "sidsu.exe" as a non-steam game shortcut into steam
- Inside steam, set the shortcut's launch options to "-dsumode" and whatever launch options you want your client to have (-dsumode -f -g "Path\To\Game.rpx" to launch a fullscreen game in cemu)
- Launch the shortcut from Steam's big picture mode (You need to launch some game in the client/emulator, because Steam Overlay only binds to OpenGL/Vulkan/DirectX windows)
- Press the home/PS/Steam/Xbox button on your controller to open the steam overlay
- In the overlay bind all the controller buttons to corresponding DSU actions
- In your client open input settings, set the protocol to DSU/CemuHook and bind all DSU actions to corresponding client actions.