Skip to content

tsogtoodev/rub-me

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rub-me

rub-me is a small Go + cgo project that listens to macOS private MultitouchSupport events and detects a two-finger rubbing gesture on Apple Silicon trackpads.

Requirements

  • macOS on Apple Silicon (darwin/arm64)
  • Go 1.26.1+
  • CGO_ENABLED=1 (enabled by default on macOS)

MultitouchSupport is a private framework, so behavior can change across macOS versions.

Run

go run ./cmd/rub-me

Options:

  • -cooldown (default 900ms): minimum delay between detections
  • -min-relative-speed (default 0.08): required relative finger speed
  • -min-flips (default 3): required back-and-forth direction changes
  • -debug (default false): print periodic raw frame diagnostics
  • -audio (default audio.mp3): play this file on detection (set empty to disable)

Example:

go run ./cmd/rub-me -debug -min-relative-speed 0.06 -min-flips 2 -audio ./audio.mp3

How It Works

  • internal/multitouch/shim.m subscribes to contact frame callbacks using MTRegisterContactFrameCallback.
  • internal/multitouch/multitouch_darwin_arm64.go bridges each native frame into Go structs.
  • internal/rubbing/detector.go recognizes rubbing when two fingers:
    • maintain a reasonable spacing,
    • move mostly opposite each other,
    • keep low center-of-mass drift,
    • flip relative motion direction multiple times in a short window.

Test

go test ./...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors