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.
Found out GameOverlayRenderer likes to post very specific messages
Now, instead of memory reading some value from some address, which changes in updates, examine the messagequeue of the process to get overlay status
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
this significantly reduces input-lag while keeping cpu usage at a minimum
also removed any of the vsync / framerate options as we now always render the overlay with 60fps
this reduces cpu usage and unnecessary overhead if playing with the default option of vsync on high refresh rate displays