TapHaptic is a native macOS menu-bar app that adds a firm trackpad haptic to left-click events, including tap-to-click in other applications.
This implementation was physically validated on an Apple Silicon MacBook Air on 30 July 2026:
- Tap-to-click inside TapHaptic produces one felt haptic.
- Tap-to-click after switching to another application produces one felt haptic.
- The app continues running after its window is closed.
- The enhanced actuator is opened through the runtime-loaded private
MultitouchSupport.framework.
The focus-specific fix is a paired AppKit event-monitor design:
NSEvent.addGlobalMonitorForEventsobserves clicks delivered to other applications.NSEvent.addLocalMonitorForEventsobserves clicks delivered to TapHaptic.- Both feed one debounced
FeedbackCoordinator. - The coordinator calls the enhanced actuator directly.
A listen-only CGEventTap was tested first. It received cross-application events and MTActuatorActuate returned success, but the haptic was only felt while TapHaptic had focus. The paired global/local NSEvent monitors fixed that behavior.
- Launch TapHaptic.
- Grant Accessibility permission.
- Press Start TapHaptic.
- Close the window if desired; the menu-bar application remains active.
The current validated release:
- observes left mouse-down events without consuming or recreating them;
- produces a firm enhanced-actuator haptic;
- applies an 80 ms debounce;
- exposes a compact start/stop interface and menu-bar controls;
- logs whether each click came through the
localorglobalmonitor.
Current limitation: physical trackpad presses and external mouse left-clicks also receive the added haptic. Physical presses can therefore feel like a double click. Raw touch classification remains future work.
Apple Command Line Tools are sufficient:
./Scripts/build-debug-app.sh
./Scripts/install-dev-app.sh
open "$HOME/Applications/TapHaptic.app"The development build is installed at:
~/Applications/TapHaptic.app
Development builds are ad-hoc signed by default. Rebuilding changes their identity, so macOS may require removing and re-adding TapHaptic under Accessibility.
TapHaptic needs Accessibility permission to observe clicks delivered to other applications:
System Settings → Privacy & Security → Accessibility
Grant access to:
~/Applications/TapHaptic.app
TapHaptic processes click events locally. It does not read typed content, screenshots, application names, or window titles. Diagnostic records are kept in memory unless explicitly exported by future tooling.
The enhanced haptic backend dynamically resolves unsupported symbols from:
/System/Library/PrivateFrameworks/MultitouchSupport.framework
This is necessary for the currently validated haptic strength, but Apple may change or remove these symbols in a future macOS release.