Hello there, I just wanted to leave huge thanks for the C# library at https://github.com/ViGEm/ViGEm.NET Originally, I stumbled upon this project when I looked up how to use a Steam Controller outside of Steam. Another project called "GloSC" makes use of ViGEm. I had big troubles to use a Steam Controller in conjunction with Steam's Remote Play Together feature, as it leaves me unable to make any controller configuration on my own. So I tried to see if it works (with my limited programming knowledge) to make a program that sends and receives controller input over network.
Basically, there is a client running in a virtual machine that has Steam running in offline mode and the Steam Controller attached to the virtual machine (in VMware Player). The WPF application written in C# is started through Steam, so that the controller input is recognized by my program. Luckily it works since WPF uses DirectX and Steam believes the program is a game. The controller inputs are sent to the host computer over the local network, where the program I made then receives these commands and tells the ViGEm library to execute these. That way, it works to use the Steam Controller 1. over network, 2. theoretically forever even if Steam decides to ditch support for Steam Controllers, 3. with games that didn't work with the Steam Controller through Steam, 4. games that only accept inputs from a Xbox Controller, and 5. well, probably even a few use cases I can't think of right now. Like using normal Xbox Controllers through the program. Edit: Number 6 would be that this uses much less CPU power compared to GloSC!
Once my program is mature enough, I could release it to the public if anyone of you would find it handy. And it would be awesome if the C# library of ViGEm stays supported, because otherwise this wouldn't have been possible! Also a friendly shoutout to this here, this helped me making the first steps: https://forums.vigem.org/topic/6/use-vigem-to-create-xbox-360-controller-in-c/19
Hope everyone has a nice day!