This also refactors target configuration storage to reduce the redundancy in copying the same set of files for every target. Each configured entry now instead uses a .ini file with the name of the entry stored in ./targets. SteamTarget can accept the path to a .ini file as a command line argument.
This also fixes the UI so that inputs are ordered the same as the visual order so that tab behavior isn't confusing.
done by mid function hooking a function in steamclient.dll
the function appears to be setting the appId of the new controller bindings
inject/hook right after the target launched
switch focus -> binding gets changed to shortcut bindings -> hook function grabs appid
hook function replaces desktop-config appid with the one grabbed everytime steam tries to active desktop-config
glosc_gamelauncher unloads dll when the target closes; unloading dll patches steamclient.dll back to original