Skip to main content

Scroll Modifiers

Scroll Modifiers (available since BetterTouchTool 5.780) let you change the scrolling behavior of any mouse or trackpad on the fly.

Set Up a Scroll Modifier:​

To set up a scroll modifier, go to the "Normal Mouse" section in BetterTouchTool, add a new trigger with the + button and pick a modifier from the "Scroll Behavior Modifiers" group. You can configure each modifier with:

  • Device Type Conditions: Apply the modifier only to specific devices ("Only Apply To Regular Mice", "Only Apply To Touch Devices (Trackpad + Magic Mouse)", "Only Apply To Magic Mouse", "Only Apply To Trackpad")
  • Axis Conditions (for many modifiers): "Only Modify Horizontal Axis" / "Only Modify Vertical Axis"
  • Modifier Key Conditions: Apply the modifier only when specific modifier keys are pressed (Shift, Control, Option, Command, Function)

Advanced trigger conditions are only checked once, at the start of a scroll.

You can set up multiple scroll modifiers, and they're chained automatically. For some combinations, the order in which they appear in the UI matters.

alt text

App Specific Scroll Modifiers​

If you want some scroll modifiers to be active only in specific apps, don't add them at the "All Apps" level. Assign them to those specific apps instead.

If you want the scroll modifiers enabled in most apps but not in a few, use a Conditional Activation Group.

Detailed Scroll Modifier Description:​

Smooth Scrolling (like Trackpad)​

Adds trackpad-like smooth scrolling to mouse wheels using 60 FPS interpolation, so the step-by-step scrolling of a mouse wheel feels as smooth as a trackpad. New Smooth Scrolling modifiers have "Only Apply To Regular Mice" enabled.

Configurable Values:

ParameterRangeDefaultDescription
Vertical Speed0.1 - 103.0Speed multiplier for vertical scrolling
Horizontal Speed0.1 - 103.0Speed multiplier for horizontal scrolling
Smoothness0 - 30.5How smooth the scrolling feels. 0 = snappy/responsive, 1 = the previous maximum smoothing, values above 1 add extra smoothing
Fixed Distance Per Tick0 - 10Removes macOS's built-in scroll acceleration for normal mouse wheels. 0 = keep the system behavior, 1 = every wheel tick scrolls exactly the configured Distance Per Tick. Values in between blend the two
Distance Per Tick (px)1 - 1008The distance one wheel tick should travel (before the speed multipliers are applied)
Acceleration Strength0 - 20Adds extra acceleration on top of the curve macOS already applies. 0 = BTT adds none
Simulate Trackpad ScrollingOn/OffOnEmits trackpad phase events for apps that need them (Messages, Calendar, Safari)
Simulate Trackpad Scrolling Only For Horizontal ScrollsOn/OffOffOnly emit the trackpad phase events for horizontal scrolling
Discrete Line Mode (for line-by-line selection)On/OffOffDelivers small scroll ticks immediately without smoothing, preserving the "tick" nature needed for line-by-line item selection

Acceleration Strength can't remove the system acceleration. For that, use Fixed Distance Per Tick or the separate "Disable / Reduce Scroll Acceleration" modifier (see below).


Vertical & Horizontal Scroll Speed Modifier​

Multiplies scroll deltas by the specified values to speed up or slow down scrolling.

Configurable Values:

ParameterRangeDefaultDescription
Vertical Multiplierany number1.0Multiplier for vertical scrolling
Horizontal Multiplierany number1.0Multiplier for horizontal scrolling

Value Guide:

  • 1.0: No change (default)
  • > 1.0: Faster scrolling (e.g., 2.0 = twice as fast)
  • < 1.0: Slower scrolling (e.g., 0.5 = half speed)
  • < 0: Reverses direction

Typical range: 0.1 to 5.0


Block Horizontal Scrolling​

Completely suppresses left/right scrolling.

Use Cases:

  • Preventing accidental horizontal scrolling in vertical-only content
  • Applications where horizontal scroll causes unwanted behavior
  • Mice with sensitive horizontal scroll wheels

No configurable values. It just blocks all horizontal scroll events.


Block Vertical Scrolling​

Completely suppresses up/down scrolling.

Use Cases:

  • Preventing accidental vertical scrolling in horizontal-only content
  • Spreadsheet applications when editing horizontally
  • Timeline or carousel interfaces

No configurable values. It just blocks all vertical scroll events.


Scroll Acceleration Curve​

Applies an acceleration curve that makes fast scrolling even faster while keeping slow scrolling precise.

Formula: output = input × (1 + strength × √(|input|/4))

Configurable Values:

ParameterRangeDefaultDescription
Horizontal Strength0 - 21.0Acceleration strength for horizontal scrolling
Vertical Strength0 - 21.0Acceleration strength for vertical scrolling

Value Guide:

  • 0.0: No acceleration (linear)
  • 1.0: Default macOS-like acceleration
  • 2.0: Strong acceleration

Useful for large documents where you want quick navigation with fast scrolls but precise control with slow scrolls.


Reverse Scroll Direction​

Inverts the scroll direction for the selected axes (natural vs traditional scrolling).

Configurable Values:

ParameterOptionsDefaultDescription
Reverse HorizontalOn/OffOffInvert horizontal scroll direction
Reverse VerticalOn/OffOffInvert vertical scroll direction

Use Cases:

  • Switch between 'natural' and 'traditional' scrolling per device
  • Invert only the horizontal or only the vertical axis
  • Apply different scroll directions to mouse vs trackpad

Swap Scroll Axes (H ↔ V)​

Exchanges horizontal and vertical scroll axes. Scrolling up/down becomes left/right and vice versa.

Use Cases:

  • Horizontal scrolling with vertical-only scroll wheels
  • Navigating timelines with a vertical scroll gesture
  • Working with horizontally oriented content

No configurable values. It just swaps the axes.


Lock Scroll to Dominant Axis​

Prevents diagonal scrolling by locking to the dominant axis. Scrolling can stay diagonal until the threshold is reached. Once one axis is clearly stronger than the other, scrolling stays on that axis for the rest of the gesture, including momentum, and the other axis stays blocked until a new gesture starts. For regular mouse wheels, a short pause starts a new gesture.

Configurable Values:

ParameterRangeDefaultDescription
Lock Threshold1 - 102.0Ratio threshold for locking

Value Guide:

  • 1.0: Locks on the first movement
  • 2.0: Default - locks when one axis is at least 2× stronger than the other
  • 5.0+: Requires stronger dominance before locking

Useful for precise vertical/horizontal scrolling in grids, lists, or code editors.


Scroll Dead Zone Filter​

Ignores small scroll movements. Scroll events with a delta below the threshold are blocked entirely.

Configurable Values:

ParameterRangeDefaultDescription
Horizontal Dead Zone0 - 1000Minimum horizontal delta (in pixels)
Vertical Dead Zone0 - 1000Minimum vertical delta (in pixels)

Value Guide:

  • 0: No dead zone (all scrolling passes through)
  • 1-5: Small dead zone for slight jitter
  • 5-20: Medium dead zone for accidental touches
  • 20+: Large dead zone for very deliberate scrolling only

Useful for sensitive mice or trackpads.


Scroll Event Debounce​

Rate-limits scroll events by blocking events that occur too close together.

Configurable Values:

ParameterRangeDefaultDescription
Debounce Time0 - 10.05Minimum time (in seconds) between events

Value Guide:

  • 0.01-0.03: Minimal debounce for high-speed scrolling
  • 0.05: Default - good balance
  • 0.1-0.2: Slower, more deliberate scrolling
  • 0.5+: Very slow, single-step scrolling

Useful for mice with jittery scroll wheels or when you want more controlled scrolling.


Clamp Maximum Scroll Speed​

Limits the maximum scroll speed by capping delta values. Scroll deltas above the maximum are reduced to the maximum.

Configurable Values:

ParameterRangeDefaultDescription
Max Horizontal Delta0 - 10000Maximum horizontal delta (in pixels). 0 = unlimited
Max Vertical Delta0 - 10000Maximum vertical delta (in pixels). 0 = unlimited

Value Guide:

  • 0: No clamping (unlimited speed)
  • 10-50: Light clamping for smoother scrolling
  • 50-100: Moderate speed limit
  • 100-500: Strong limit for precise control

Useful to keep scrolling from getting too fast in apps.


Scroll Distance Per Tick​

Sets a fixed pixel distance per scroll tick for discrete scroll wheels.

Configurable Values:

ParameterRangeDefaultDescription
Horizontal Pixels Per Tick1 - 50010Pixels scrolled per horizontal tick
Vertical Pixels Per Tick1 - 50010Pixels scrolled per vertical tick

Value Guide:

  • 5-10: Fine scrolling, good for code editors
  • 10-20: Default comfortable range
  • 20-50: Faster page navigation
  • 50-100: Large jumps per tick

Note: Only affects discrete (non-continuous) scrolling from mouse wheels. Continuous trackpad scrolling is not affected.


Smooth Zoom (Scroll to Magnify)​

Listed in BTT as "Scroll Modifier: Zoom In / Out (like Trackpad)". Converts scroll wheel input into smooth pinch-to-zoom (magnification) gestures. Uses 60 FPS CVDisplayLink interpolation to transform discrete scroll events into fluid zoom gestures that work in apps like Safari, Maps, Photoshop, and Preview. Alternatively, it can zoom the whole screen using macOS Accessibility Zoom.

Configurable Values:

ParameterRangeDefaultDescription
Zoom targetApp content / Screen (Accessibility Zoom)App content"App content" sends pinch-to-zoom gestures to the app. "Screen (Accessibility Zoom)" zooms the screen using macOS Accessibility Zoom (choose Full Screen in System Settings > Accessibility > Zoom to magnify the entire screen)
Sensitivity0.001 - 0.10.01Magnification amount per scroll pixel. Higher = faster zoom
Acceleration Factor0 - 52.1Velocity-based acceleration. 0 = constant speed, higher = faster scrolling increases zoom speed
Base Multiplier0.1 - 101.0Overall magnification multiplier
Max Magnification Per Frame0.01 - 20.5Maximum magnification per frame (prevents jumpy zooming)
Stop Threshold0.00001 - 0.10.0001Minimum magnification before output stops
Input Timeout (seconds)0.05 - 10.15Time before the gesture ends after scrolling stops
EMA Alpha (smoothing)0 - 10.3Smoothing factor for input. Lower = more smoothing
Duration0.1 - 0.50.15Interpolation speed (LERP coefficient). Lower = snappier, higher = smoother
Invert Zoom DirectionOn/OffOffInvert zoom direction (scroll up = zoom out)
Use Horizontal Scroll AxisOn/OffOffUse horizontal scroll axis instead of vertical

Use Cases:

  • Zooming in maps with a regular mouse wheel
  • Zooming images in Preview, Photoshop, or other image editors
  • Zooming web pages in Safari or Chrome
  • Any application that supports pinch-to-zoom gestures

How It Works: The modifier captures scroll events and converts them into synthetic magnification gesture events using CVDisplayLink for smooth 60 FPS interpolation. Velocity tracking adds natural acceleration: faster scrolling creates larger zoom changes, just like on a trackpad.


Smooth Rotate (Scroll to Rotation)​

Listed in BTT as "Scroll Modifier: Rotate Left / Right (like Trackpad)". Converts scroll wheel input into smooth two-finger rotation gestures. Uses 60 FPS CVDisplayLink interpolation to transform discrete scroll events into fluid rotation gestures that work in apps like Preview, Photos, and image editors.

Configurable Values:

ParameterRangeDefaultDescription
Sensitivity (degrees/pixel)0.01 - 50.5Rotation degrees per scroll pixel. Higher = faster rotation
Acceleration Factor0 - 52.1Velocity-based acceleration. 0 = constant speed, higher = faster scrolling increases rotation speed
Base Multiplier0.1 - 101.0Overall rotation multiplier
Max Rotation Per Frame (degrees)1 - 9015.0Maximum rotation degrees per frame (prevents jumpy rotation)
Stop Threshold (degrees)0.001 - 10.001Minimum rotation before output stops
Input Timeout (seconds)0.05 - 10.15Time before the gesture ends after scrolling stops
EMA Alpha (smoothing)0 - 10.3Smoothing factor for input. Lower = more smoothing
Invert Rotation DirectionOn/OffOffInvert rotation direction
Use Horizontal Scroll AxisOn/OffOffUse horizontal scroll axis instead of vertical
Duration0.1 - 0.50.15Interpolation speed (LERP coefficient). Lower = snappier, higher = smoother

Use Cases:

  • Rotating images in Preview or image editors
  • Rotating objects in 3D applications
  • Any application that supports two-finger rotation gestures

How It Works: The modifier captures scroll events and converts them into synthetic rotation gesture events using CVDisplayLink for smooth 60 FPS interpolation. Velocity tracking adds natural acceleration: faster scrolling creates larger rotation changes, just like on a trackpad.


Smooth Space Switch (Scroll to Switch Spaces)​

Listed in BTT as "Scroll Modifier: Space Switch Swipe (like Trackpad)". Converts scroll wheel input into smooth Mission Control space switching swipes. Uses 60 FPS CVDisplayLink interpolation to transform discrete scroll events into fluid space switching gestures, similar to a three-finger swipe on a trackpad.

Configurable Values:

ParameterRangeDefaultDescription
Sensitivity0.0005 - 0.01~0.0017 (1/600)How much scroll affects the swipe. Higher = faster space switching
Stop Threshold0.0001 - 0.10.001Minimum movement threshold before output stops
Input Timeout (seconds)0.05 - 10.2Time before the gesture ends after scrolling stops
Completion Threshold0.2 - 0.80.4How far to swipe before completing the space switch. Lower = easier to trigger
Duration (smoothing)0.05 - 0.50.2Interpolation speed (LERP coefficient). Lower = snappier, higher = smoother
Invert Swipe DirectionOn/OffOffInvert swipe direction (scroll up = swipe right)
Use Horizontal Scroll AxisOn/OffOffUse horizontal scroll axis instead of vertical

Use Cases:

  • Switching between Mission Control Spaces/Desktops with a mouse scroll wheel
  • Navigating virtual desktops without a trackpad
  • Quick workspace navigation while keeping your hand on the mouse

How It Works: The modifier captures scroll events and converts them into synthetic dock swipe gesture events that macOS uses for space switching. It uses CVDisplayLink for smooth 60 FPS interpolation, providing a fluid preview animation as you scroll.

Key Behaviors:

  • One space per gesture: Each scroll gesture switches at most one space, which prevents accidental multi-space jumps
  • Automatic snap-back: If you don't scroll far enough to reach the completion threshold, the view snaps back to the original space
  • Cooldown protection: After switching a space, there's a brief cooldown (0.8s) to prevent accidental double-switches. This cooldown resets if you pause scrolling for 0.3s
  • Direction clamping: The swipe offset is clamped to prevent overshooting, ensuring predictable single-space switching

Tips:

  • Lower the Completion Threshold if you want to switch spaces with less scrolling
  • Increase Sensitivity for faster response to scroll input
  • Use Invert Swipe Direction if the default direction feels backwards to you
  • Works best with Only Apply To Regular Mice enabled (the default for new modifiers) to avoid conflicts with trackpad gestures

Ignore Events from Specific Apps​

Listed in BTT as "Scroll Modifier: Ignore Events from Specific Apps". Scroll events pass through unmodified while the frontmost app matches one of the specified names.

Configurable Values:

ParameterDescription
App Names / Bundle IDs (comma-separated)App names (e.g. Safari), bundle identifiers (e.g. com.apple.Safari) or executable names. Matching is case-insensitive

The position of this modifier in the scroll modifier list matters: all modifiers above it still apply, while modifiers below it are skipped for matching apps.


Disable / Reduce Scroll Acceleration​

Listed in BTT as "Scroll Modifier: Disable / Reduce Scroll Acceleration". Removes or reduces macOS scroll acceleration to produce linear scrolling.

Configurable Values:

ParameterRangeDefaultDescription
Pixels Per Mouse Wheel Tick0 - 20010Each mouse wheel tick scrolls this fixed number of pixels, replacing the accelerated system deltas. Apps that scroll by lines (e.g. Excel) receive the same distance converted at 10px = 1 line (at least 1 line per tick). Set to 0 to use the continuous curve below for mouse wheels too
Continuous Deceleration Strength0.1 - 10.5Exponent of the inverse power curve used for trackpads / Magic Mouse. Lower = removes more acceleration (0.5 = moderate, 0.4 = strong, 0.7 = mild)
Reference Speed (pivot point)1 - 10010Speed where output equals input. Below it scrolling is mostly unchanged, above it fast scrolling is brought back down
Linear Zone (no deceleration below)0 - 201Small movements below this value are not modified
Output Speed Scale0.1 - 101Overall output speed multiplier