Skip to content
avoidmemoriesPublic

About

SOCD: Snap Tap for any game

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SnapHook

SOCD: Snappy Tappy

Preview


Quick start

  1. Start SnapHook.exe from the published folder and accept the Windows elevation prompt. Elevation is required so the keyboard hook can also see input sent to elevated games.
  2. Add a game profile. You can select an executable from disk or choose a currently running process.
  3. Open the profile, add one or more key pairs, and choose an input method.
  4. Turn the master switch to ENABLED. A profile is active only while its matching process owns the foreground window.

The application can be hidden to the notification area; use its tray menu to enable/disable the engine, return to the window, or exit cleanly.

Input methods

Every profile has its own input method. Release is the default and should be tried first.

Release — recommended

Release preserves the real keyboard stream. Physical key presses and releases are delivered to the game normally. When opposite directions overlap, Snaphook only injects a release for the older direction; after the newer direction is released, it injects a press to restore the older one.

  • Best default for most games.
  • Real keyboard input reaches the game unchanged; SnapHook only adds the release and restore events needed for SOCD.

Hybrid — macro-friendly

Hybrid provides the same release-and-restore SOCD behaviour, but receives physical keyboard events through Windows Raw Input instead of installing a global low-level keyboard hook. This keeps SnapHook out of the hook chain used by AHK, macro pads, accessibility tools, virtual keyboards, and similar applications.

  • Use it when macros become unreliable while a SnapHook pair is configured or while one of the pair keys is held.
  • Real key presses still reach the game; SnapHook only sends the synthetic release and restoration of the opposite key.
  • It is intended for profiles that need macro compatibility.

Blocking — fallback

Blocking holds back the real key event and replaces it with a synthetic (SendInput) event. The game sees only the stream generated by SnapHook.

  • Use it only when a particular game does not react correctly in Release or Hybrid.
  • It depends on the game accepting synthetic input, so it can be less compatible with anti-cheat-protected games.

Building

dotnet publish SnapHook.csproj -c Release -r win-x64 --self-contained false -p:PublishSingleFile=false -p:DebugType=none -o publish

The native worker is compiled automatically when Native/SnapHookWorker.exe is missing. To force a rebuild:

dotnet build -p:RebuildNativeWorker=true

Requires the .NET 10 SDK and MSVC (Visual Studio 2022 or 2026 with the C++ workload). Native/build-worker.cmd locates VsDevCmd.bat on its own.

Where things are stored

User data lives in %APPDATA%\SnapHook\:

  • settings.json — profiles, key pairs, options

Limits worth knowing

  • Kernel-level anti-cheat (Vanguard, and EAC in kernel mode) filters injected events regardless of how they are produced, so no user-mode design can bypass that. The release-only model degrades gracefully there — movement keeps working, snap tap simply has no effect.
  • Extended keys (arrows, numpad enter, right Ctrl/Alt, Insert/Home/PgUp) need KEYEVENTF_EXTENDEDKEY. The worker sets it from the real event flags.
  • Left and right modifiers are kept apart by learning the virtual key from the genuine event rather than from MapVirtualKey, which is layout dependent.
  • Competitive rulesets in some titles treat snap tap as prohibited automation. That is a rules question, not a technical one: use it where you are actually allowed to.

About

SOCD: Snap Tap for any game

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages