Simple, lightweight SOCD resolver and tester in C and AHK
SOCD stands for Simultaneous Opposite Cardinal Directions. It refers to the situation where 2 opposing movement keys are pressed at the same time, for instance A and D. This typically results in no (neutral) movement.
This is the act of “resolving the conflict” between 2 opposing movement keys; which key should take priority?
There are a few resolution methods, but in this specific repository, the SOCD resolution is based on “last input wins”.
For example, that means that if you press A and then D, A will be de-activated immediately when D is pressed, and until D is released.
This specific example allows immediate strafing in games such as Counter-Strike 2 and Overwatch 2. This software is especially powerful in Overwatch due to immediate character acceleration and model shifting animations.
Caution
The use of automation software is generally forbidden in competitive FPS titles. Use this at your own risk.
| Game | Detection system | Side-effects |
|---|---|---|
| Overwatch | Warden | No confirmed detections |
| Marvel Rivals | NetEase GS | No confirmed detections |
| CS2 | VAC | May cause a kick if used consistently in a match |
| Valorant | Vanguard | Kernel anti-cheat filters/ignores injected key events |
There are 2 SOCD resolvers included, along with their source code. All of them have been compiled for convenience.
AHK stands for AutoHotKey, an interpreted scripting engine to automate actions. This version’s source code is very minimal.
Simply run the “SOCD_AHK.exe” file and it will run in the background. It can be closed by opening the system tray (^ in your taskbar) and right-clicking the program.
AHKv2 uses GetKeyState to read keyboard events and SendInput to inject synthetic input events
Since AHK is interpreted, the parsing complexity and amount affects the performance. If you wish to only have A-D strafing, remove the lines associated with W and S.
Only supports A & D. Injects 1 event per required state correction by maintaing a list of what's physically pressed and what applications should be seeing.
Simply run the “SOCD_AD_C.exe” file. It will spawn a window that you can minimise. Closing this window will close the program.
Creates a message-only window (an invisible window) to receive keyboard messages and SendInput to inject synthetic input events.
This is a complementary program that displays what WASD keys are pressed, and how fast the SOCD pairs were released. This can be used to ensure SOCD is working.
Simply run the “SOCD_tester.exe” file.