Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

148 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 feature trigger binds are 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. Hybrid wait: coarse Sleep(1) plus QPC busy-spin for the final 0.5 ms. Targets sub-millisecond scheduling accuracy; actual in-game receipt still depends on Windows scheduling and the game input pipeline.

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

The Superglide trigger is rebindable. Injected Jump and Crouch remain Apex defaults: Space and Left Ctrl.

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 Yes, at the user-mode hook layer

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 Yes, at the kernel filter layer

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 std::jthread + condition variable 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 → synchronous dispatch
└── InterceptionBackend — driver polling thread → synchronous dispatch/pass-through

Application
├── DispatchKeyEvent — backend-neutral key routing
├── SwitchBackend    — joined runtime backend replacement + state reconciliation
└── Feature workers (`std::jthread` + condition variable)
    ├── 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

Tests

StrafeHelperTests covers configuration validation, key conversion, Superglide sequencing, physical edge tracking, duplicate-bind reporting, and first-press behavior after rebinding.

Build and run Debug | x64 or Release | x64; assertions remain enabled in both test configurations.


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.

About

Movement macroing tool for Apex legends

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages