Skip to main content

Fluid / Continuous Gestures

Fluid gestures send movement updates to control volume, brightness, MIDI values or scripts. They work on built-in MacBook trackpads and Apple Magic Trackpads. Existing discrete gestures keep working alongside them.

For mouse buttons, see Continuous Mouse Drags.

Available gestures​

Choose Trackpad → Add Trigger → Fluid / Continuous Gestures. All 13 trackpad variants are available:

GestureMovement
3, 4 or 5 Finger Swipe (Continuous)Horizontal or vertical
2 Finger Pinch (Continuous)Fingers apart / together
2 Finger Rotation (Continuous)Counterclockwise / clockwise
1 Finger Slide Along … Edge (Continuous)Left, right, top or bottom edge
2 Finger Slide Along … Edge (Continuous)Left, right, top or bottom edge

Pinch and rotation require Zoom in or out / Rotate to be enabled in macOS Trackpad settings. For three-finger swipes, disable macOS three-finger dragging in Accessibility settings.

Fluid Gestures

Example: swipe up and down to adjust volume​

  1. Add 3 Finger Swipe (Continuous). Set Movement Axis to Vertical.
  2. Use Action For Trigger Category to add Actions Executed While Moving (Continuous).
  3. Add Set System Volume, click the link icon beside Volume, and enable Use the swipe value.
  4. Choose Increase / Decrease Value, Output range: 0 … 100, and Curve: Linear. Keep the range limit on and Wrap around off.
  5. Lift all fingers, then swipe: up raises volume, down lowers it. You can reverse without lifting.

New gesture bindings already default to Increase / Decrease Value; saved bindings keep their mode. Volume starts from the current system setting.

The same setup works for every gesture: use While Pinching or While Rotating for those gestures. Up/right, pinch out and counterclockwise rotation increase the value; the opposite directions decrease it.

When actions run​

CategoryUse it for
While Moving / Pinching / Rotating (Continuous)One action that responds in both directions, such as adjusting volume
Swipe Up / Down / Left / Right, Pinch Out / In, or a rotation directionDifferent actions for each direction
Gesture BeginAn action once the initial movement threshold is reached
Gesture EndAn action when fingers lift normally; interruptions do not run it

If both a general movement category and a matching direction category contain actions, both run. Edge slides offer only the two directions along their edge. Numeric bindings are available during movement and at End, not at Begin.

Adjusting the gesture​

SettingPurpose
Movement AxisFor swipes: Automatic locks to the first dominant axis. Choose Vertical or Horizontal for a dedicated control.
Movement Required To BeginInitial movement before actions start. Increase it to avoid accidental activation.
Maximum Update RateLimits action updates; default 60/second.
Binding: Movement for the full rangeSensitivity for Increase / Decrease Value. Larger values require more movement.

Increase / Decrease Value keeps adjusting a value through reversals. Set Value Directly maps progress within each stroke and restarts on reversal; its sensitivity comes from the trigger's Movement For Full Value Range. See Action Value Bindings for all modes and MIDI setup.

Screenshots: binding and trigger settings

The binding screenshot uses earlier labels; follow the names above.

Binding

Continuous gesture settings

Repeat a shortcut or discrete action by distance​

Under a continuous direction category, add Only Continue After Accumulating Movement / Value before your shortcut. A threshold of 5 runs it every additional 5% of trackpad travel; for rotation, 10 means 10 degrees. This depends on movement, unlike time-based Debounce. See threshold behavior.

Script variables​

Run Real JavaScript can read BTTTriggerValue (progress) and BTTTriggerValueDelta (signed movement), plus normalized, percentage and MIDI forms. Add the script to a continuous movement category. See the variable table and JavaScript example.

These are gesture inputs, not a bound field's accumulated output. They are shared variables; another trigger can change them while an asynchronous script runs.

Pinch, rotation and edge-slide details

Example: pinch or rotate to adjust a value​

Use the volume setup above with While Pinching or While Rotating. Keep exactly two fingers touching. Pinch measures magnification reported by macOS; rotation measures degrees.

GestureInitial movementFull-range default*
Swipe / edge slide2% of trackpad40% of trackpad
Pinch2 magnification percentage points50 magnification percentage points
Rotation3 degrees90 degrees

The trigger's progress range and the binding's adjustment sensitivity use the same initial default but are configured separately. Swipe movement uses the average finger position; more fingers do not multiply it.

Sliding along an edge​

Start at the chosen edge and slide along it; entering the edge from the middle does not start a gesture. For two-finger slides, at least one finger must start there and both must move. Lift all fingers to restart.

Touches must begin in the outer 6% of the edge. At least one finger must stay within 12% (one-finger slide) or 15% (two-finger slide). Avoid corners if adjacent edges are configured. Pointer movement and native scrolling remain active.

Compatibility and troubleshooting

Compatibility and troubleshooting​

  • Existing discrete gestures may also fire. Use modifiers, app assignments, conditions or different finger counts to separate actions when needed.
  • Matching three-/four-/five-finger swipes block native scrolling and momentum. Other macOS swipe assignments may still run; disable conflicting assignments if needed.
  • Matching pinch/rotation blocks the corresponding native zoom/rotation. Unmatched native gestures and ordinary two-finger scrolling remain available.
  • Keep the finger count stable. Lifting ends a swipe; adding a finger or clicking/force pressing can interrupt it. Lift all fingers before restarting. Thumb/accidental-touch filtering still applies.
  • Avoid duplicate eligible configurations of the same continuous gesture: an ambiguous match does not start. Different finger counts, different edges, and pinch plus rotation can coexist.
  • No link icon? Use a supported numeric field under a movement/direction category, not Gesture Begin.
  • Value restarts on reversal? Choose Increase / Decrease Value.