Skip to content

fL0P1337/StrafeHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StrafeHelper

StrafeHelper Showcase 1

Motivation

Stop paying for macro apps that do one simple thing. StrafeHelper is a transparent, open-source utility for the movement community — free, auditable, and built to stay that way.


Features

Feature Description
Lurch Strafing Automates rapid A↔D cycling while airborne to exploit Apex's momentum system for tight directional strafes — the core of Lurch Tech movement. Delay and hold-duration configurable.
SnapTap / SOCD Last-input-wins axis filtering — press both A+D and only the most-recent registers.
Turbo Loot Auto-repeats a loot key at configurable speed while held.
Turbo Jump Auto-repeats a jump key at configurable speed while held.
Superglide One-press automation of the Jump → (1 frame) → Crouch sequence with sub-millisecond QPC timing.
Dual Input Backends WH_KEYBOARD_LL hook (default) or Interception kernel driver, hot-switchable at runtime.
ImGui GUI Tabbed interface: Config, State Monitor, Console. All binds rebindable in-app.

A Superglide is an instant 1-frame acceleration out of a Mantle. It combines the speed of a Slide and a Jump simultaneously — because you leave the ground mid-mantle, you don't hit friction and keep all the velocity.

What the game requires:

  • You must be sprinting into a mantle.
  • In the last 0.15 seconds of the mantle animation, execute the input package:
    • Jump (Space)
    • Exactly 1 frame laterCrouch (Left Ctrl)

The mantle timing is the human element — StrafeHelper removes hardware timing variance from the input package entirely.

What StrafeHelper automates:

  1. Press your designated Superglide bind (suppressed — the game never sees it).
  2. StrafeHelper instantly injects:
    • Jump (Space)
    • Waits exactly 1 frame at your configured FPS using sub-millisecond QPC timing
    • Crouch (Left Ctrl)

You still need to time the mantle window yourself — StrafeHelper guarantees the Jump→Crouch interval is pixel-perfect every time.

Timing precision:
Frame duration = freq / targetFPS in QPC ticks (no integer truncation). Hybrid wait: coarse Sleep(1) + QPC busy-spin for the final 0.5 ms. Achieves <10 µs accuracy at any frame rate.

Config options (in-app or config.cfg):

Key Default Description
enable_superglide false Master toggle
superglide_bind 192 (tilde ~) VK code of the trigger key
target_fps 60.0 Game frame rate — determines the 1-frame delay

A 500 ms cooldown after each execution prevents accidental re-trigger from key-hold auto-repeat.


Input Backends

Both backends are selectable from the Config tab at runtime without restarting.

WinHook (default)

WH_KEYBOARD_LL low-level keyboard hook. No driver required.

Driver required
Physical key suppression ✗ (passthrough only)

Interception (optional)

Kernel-mode filter driver via Interception. Operates below the Windows input stack.

Driver required Interception driver
DLL required interception.dll next to the exe
Physical key suppression

Setup: Install the driver, place interception.dll next to the exe, launch StrafeHelper. The Config tab shows a live status badge:

Badge Color Meaning
[ OK ] Green Driver ready
[ X ] Red interception.dll not found
[ ! ] Amber DLL present, driver not running

Technical Details

  • Language: C++20 (MSVC v143)
  • GUI: Dear ImGui · Win32 + DirectX 11 backend · Inter font
  • Threading: One Win32 thread + auto-reset event per feature; atomic config shared across threads
  • Timing: QueryPerformanceFrequency / QueryPerformanceCounter for frame-accurate sleep; timeBeginPeriod(1) for coarse sleep resolution
  • Injection: SendInput with KEYEVENTF_SCANCODE; synthetic events tagged with NEO_SYNTHETIC_INFORMATION to avoid re-entrant processing

Architecture

InputBackend (abstract)
├── KbdHookBackend   — WH_KEYBOARD_LL hook thread → event queue → PollEvents
└── InterceptionBackend — Interception driver polling thread → event queue → PollEvents

Application
├── DispatchKeyEvent  — routes Interception events to feature handlers
├── KeyboardProc      — routes WinHook events to feature handlers
└── Feature threads (Win32 HANDLE + Event)
    ├── SpamLogic
    ├── TurboLogic (Loot + Jump)
    └── SuperglideLogic

Gui::GuiManager  — ImGui render loop (Config / Monitor / Console tabs)
Config namespace — atomic<T> vars + LoadConfig / SaveConfig (key=value file)

Build

  1. Open Visual Studio 2022 (v143 toolset).
  2. Open StrafeHelper.sln.
  3. Set configuration to Release | x64.
  4. Build — output at x64/Release/StrafeHelper.exe.

Or from PowerShell:

$msbuild = Get-ChildItem "C:\Program Files\Microsoft Visual Studio\*\Community\MSBuild" -Recurse -Filter "MSBuild.exe" | Select-Object -First 1 -ExpandProperty FullName
& $msbuild StrafeHelper.sln /p:Configuration=Release /p:Platform=x64 /m

Previews

Config Tab State Monitor

Disclaimer

For educational and personal use only. Respect the terms of service of the games you play. The author are not responsible for any consequences arising from use of this software.

License

MIT — see LICENSE.txt.