Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrackPadPlus / TapHaptic

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.

Validated Working State

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.addGlobalMonitorForEvents observes clicks delivered to other applications.
  • NSEvent.addLocalMonitorForEvents observes 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.

Current Behavior

  1. Launch TapHaptic.
  2. Grant Accessibility permission.
  3. Press Start TapHaptic.
  4. 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 local or global monitor.

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.

Build and Install

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.

Permissions

TapHaptic needs Accessibility permission to observe clicks delivered to other applications:

System Settings → Privacy & Security → Accessibility

Grant access to:

~/Applications/TapHaptic.app

Privacy

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.

Private API Disclosure

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.

About

TrackPad features you wished was in built in on MacOS, nicely packaged into an easy to use app

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages