Mac Latency Control is a native, open-source menu bar app for controlled and reversible macOS input-latency experiments. It keeps each change independent, records exact preference snapshots before mutations, and avoids private system hooks.
It is an experimental tuning and measurement tool, not a promise of Windows latency parity. A user-space app cannot bypass WindowServer or remove the physical display pipeline.
| Control | Behavior | Scope |
|---|---|---|
| Native mouse acceleration off | Writes com.apple.mouse.linear after a snapshot |
Cursor trajectory, not click timestamps |
| LinearMouse active | Starts or stops LinearMouse | Never edits LinearMouse configuration |
| Light trackpad click | Sets the two click thresholds to 0 |
Physical actuation pressure |
| Cursor shake magnification off | Writes CGDisableCursorLocationMagnification |
Cursor visibility behavior |
| Silent audio primer | Runs a silent 48 kHz AudioQueue with 128-frame app buffers | Keeps the output path active; does not set a device or Logic Pro buffer |
| Launch at login | Uses SMAppService.mainApp |
Official macOS login item |
The benchmark panel can open Normal Chrome or an isolated Direct Present profile with one targeted experiment:
--disable-features=VSyncAlignedPresentationForScrolling
VSync and Chrome's frame limiter remain enabled. The app never adds
--disable-gpu-vsync, --disable-frame-rate-limit,
--run-all-compositor-stages-before-draw, GamePolicy, or taskpolicy.
Mac Latency Control does not restart or modify Dock, Finder, SystemUIServer, WindowServer, display modes, display arrangement, AWDL, private WindowServer defaults, or CoreAudio device buffer sizes. Logic Pro remains the owner of its I/O buffer.
Every managed preference change creates a JSON restore point first. Multi-key changes use rollback-on-failure transactions. Event-tap inspection is explicit because reading Core Graphics tap statistics resets their measurement window.
See Safety and Technical Audit.
- macOS 13 Ventura or newer
- Xcode Command Line Tools for source builds
- Google Chrome only for the browser benchmark buttons
- LinearMouse only for its optional process switch
No third-party runtime dependencies are bundled.
git clone https://github.com/Neekzu/MacLatencyControl.git
cd MacLatencyControl
make verify
make installThe app is installed at:
~/Applications/Mac Latency Control.app
The installer verifies the app before replacing an existing installation. It
also migrates the legacy external audio primer only after the in-process primer
confirms that it is running. A timestamped migration backup is retained under
~/Library/Application Support/MacLatencyControl/MigrationBackups.
Release archives are currently ad-hoc signed and not Apple-notarized. Building from source is the most transparent installation path.
- Click the bolt icon in the macOS menu bar.
- Change one switch at a time.
- Run alternating benchmark sets under the same hardware and display state.
- Use Restore latest to restore the most recent captured preference state.
The audio primer is off for a fresh installation. Existing legacy users retain their active primer state during migration.
For a defensible test protocol, use Benchmarking.
The app stores only local logs, audits, state, and restore snapshots:
~/Library/Application Support/MacLatencyControl/
There is no analytics, telemetry, account, update checker, or background network request. Benchmark buttons open their destinations in Chrome. See Privacy.
make test # Swift unit tests
make icon # regenerate the original app icon
make app # release .app bundle
make archive # .app plus ZIP and SHA-256
make verify # tests, bundle checks, safety scan, privacy scanThe project is a dependency-free Swift Package using AppKit, CoreGraphics, AudioToolbox, and ServiceManagement. Architecture notes are in Architecture.
make uninstallSnapshots and audits are preserved. To remove local data and app defaults too:
./Scripts/uninstall.sh --purge-dataUninstalling does not silently rewrite input preferences. Restore a snapshot in the app first when that is the desired outcome.
Version 1.0.1 packages the proven-safe subset of a longer macOS input-latency
investigation. The remaining OS-wide compositor floor is not fixable through a
supported public user-space API. Reports with controlled A/B data are welcome.
The project originated from a community investigation in r/macOS.
Contributions are welcome under the MIT License. Please read Contributing and the Code of Conduct.