BetterTouchTool Input customization and automation
BetterTouchTool Cheatsheet

Trigger Types

BTT Trigger Types
Trigger Type Use Case Example
Keyboard Hotkey combinations βŒ˜β‡§E for email action
Trackpad Gesture recognition 3-finger swipe for app switch
Mouse Button clicks & movement Right-click + movement gesture
Drawing Gestures Custom patterns Draw letter “S” to save
Touch Bar Custom bar buttons/widgets Quick action buttons
Remote Triggers Trigger from iPhone/iPad iOS app controls Mac
Siri Voice commands “Hey Siri, open config”
Named Triggers Invoke by name Call trigger from other actions
Timed Schedule / Repeat Run action every 5 minutes
Process Trigger App launch detection Action when Slack opens
URL Scheme External app invocation btt://trigger_named?trigger_name=NAME
Text Input Keyboard text detection Trigger when specific text typed

Conditional Activation Groups

Conditional Trigger Activation
Condition Type Description Example
Application Trigger only in specific app Firefox browser only
Focused Element HTML element focused in browser Input field active
Keyboard Modifiers Require Shift/Cmd/Opt/Ctrl held ⇧ held for variant action
Screen Specific monitor/display Trigger only on external display
Time-based Trigger during time range 9 AM - 5 PM only
Predefined Group Built-in groups (Music app, Text editors) Any text editor
Custom Script JavaScript condition returnValue = devicePixelRatio > 1
Window Title Match window title pattern “β€” Mail” window
Multiple Conditions AND/OR logic App X AND Modifier held

Setup Process:

  1. Create new trigger
  2. Click “Conditional Activation” tab
  3. Select condition type
  4. Configure specific condition
  5. Set default action + conditional overrides

Window Snapping Configuration

Window Snapping Setup

Snap Zone Configuration

Setting Purpose Value
Enable snapping Master toggle On/Off
Snap strength Magnetic attraction distance 10-50 pixels
Snap animation duration Speed of snap animation 0.1-0.5 seconds
Show snap preview Visual feedback on snap On/Off

Multi-Monitor Snapping

Behavior Options:
- Snap to current screen only
- Allow snap across screens
- Define separate snap zones per monitor
- Mirror snap configuration on all monitors

Custom Snap Zones

Define custom snap areas beyond standard halves/quarters:

  • Create snap zone by percentage (e.g., 30% left, 70% right)
  • Position snap zones at specific coordinates
  • Configure separate zones per screen
  • Name zones for reference (“Code Editor Zone”)
  • Test snap targets in preview mode

Touch Bar Customization

Touch Bar Features

Touch Bar Elements

Element Type Description Use
Button Single-action button Quick actions, app launch
Group Collapsible group of buttons Organize related buttons
Widget Live updating display Time, weather, system stats
Slider Brightness, volume control Continuous values
Scrubber Scroll through options Select from list items
Label Static text display Show status or hints
Expandable Group Group that expands on touch Deep menus

Widget Types

  • System widgets (time, date, battery, volume)
  • Custom HTML/CSS widgets
  • Live app data (Mail unread count, Calendar)
  • RSS feed display
  • Stock ticker
  • Weather widget
  • System stats (CPU, memory, network)

App-Specific Bars

Configure different Touch Bar layout per application:

  • Safari: back/forward, search, favorites
  • Mail: compose, reply, archive buttons
  • Finder: new folder, organize, preview buttons
  • Code editor: build, debug, format buttons

Automation & Scripting

BTT Automation

Scripting Languages Supported

Language Use Case Example
AppleScript Control Mac apps tell app "Finder" to activate
JavaScript BTT actions, conditions returnValue = frontApp === "Safari"
Shell Script Command-line tools curl, say, file operations
Python Data processing, advanced logic Scripts saved on system
Native BTT actions Pre-built actions Open file, move mouse, paste

AppleScript Integration

tell application "BetterTouchTool"
  trigger_named "MyTriggerName"
  get_string_variable "myVar"
  set_string_variable "myVar" to "newValue"
end tell

JavaScript Conditions

// Check if Safari is frontmost
returnValue = frontApp === "com.apple.Safari";

// Device detection
returnValue = deviceType === "MacBook";

// Brightness level
returnValue = brightness > 50;

Shell Script Actions

#!/bin/bash
# Examples of shell commands in BTT
open -a "Visual Studio Code"
echo "Hello, World!" | pbcopy
defaults read com.apple.dock autohide

Action Sequences

Chaining Multiple Actions
Sequence Feature Description
Delays Pause between actions (milliseconds)
Conditional actions If/then/else logic based on variables
Repeats Loop action N times
Async actions Run actions in parallel
Wait for condition Pause until condition met
Variable storage Save/retrieve values between actions
Script execution Run scripts between actions
Error handling Fallback actions on failure

Sequence Example

  1. Check if Slack is open (condition)
  2. If yes: Get focus with ⌘1
  3. If no: Launch Slack
  4. Wait 2 seconds (delay)
  5. Send message (action)
  6. Return to previous app (cleanup)

Variable Management

BTT Variables:
- String variables (text values)
- Number variables (integers, floats)
- Boolean variables (true/false)
- Local scope (trigger only)
- Global scope (accessible everywhere)

Persistence:
- Session (cleared on restart)
- Permanent (saved in BTT config)

Preset Sharing & Community

Export, Import & Sharing

Export Configuration

Steps:

  1. BTT Preferences β†’ Main tab
  2. Click “Export Preset” button
  3. Select triggers/gestures to include
  4. Save as .bttpreset file
  5. Share via cloud, email, or public repo

Export Options:

  • Export all triggers
  • Export by application
  • Export specific gesture type
  • Include Touch Bar customizations
  • Include variable definitions

Import Presets

  1. File menu β†’ Import Preset
  2. Select .bttpreset file
  3. Choose merge or replace existing config
  4. BTT restarts to apply preset
  5. Review imported triggers in sidebar

Community Presets

Popular sources for BTT presets:

  • Reddit: r/BetterTouchTool
  • GitHub: btt preset repositories
  • BTT Forum: Community shared configs
  • Gumroad: Paid professional presets
  • Personal: Custom export/backup

Preset Safety:

  • Backup existing config before importing
  • Review triggers before activating
  • Test with limited scope first
  • Update presets regularly for compatibility

Floating Menus & Webviews

Custom HUD & Webviews

Floating Menu Types

Menu Type Display Use Case
Button Menu Floating button with dropdown Quick access menu
Text Menu Floating text popup Status display
Webview HUD Full custom HTML/CSS interface Complex dashboards
Picture Menu Image-based menu Icon-based launcher
App Menu System app menu integration Native integration

Webview HUD Configuration

<!-- Custom webview example -->
<div id="menu" style="padding: 10px;">
  <button onclick="exec('trigger_named', 'MyTrigger')">
    Action 1
  </button>
  <button onclick="triggerNamed('MyTrigger2')">
    Action 2
  </button>
</div>

JavaScript in Webviews

// Trigger named trigger from webview
await btt.call('trigger_named', { name: 'MyTrigger' });

// Get variable value
const val = await btt.get_string_variable('myVar');

// Set variable
await btt.set_string_variable('myVar', 'newValue');

// Execute AppleScript
await btt.run_applescript('tell app "Finder" to activate');

Styling Webview HUDs

  • Custom CSS for appearance
  • Dark/light mode support
  • Responsive layout for different displays
  • Icon integration (SF Symbols, emoji)
  • Animation support
  • Keyboard shortcuts within menu

Notch Bar Customization

MacBook Pro Notch Bar

Notch Bar Features

The Notch Bar appears around the MacBook Pro notch:

Feature Purpose
Custom buttons App launchers, shortcuts
Widgets Time, battery, system stats
Expandable menus Hidden menu groups
App-specific layouts Different layout per app
Auto-hide Hide when not needed
Position control Adjust notch bar position

Notch Bar Configuration

Settings:
- Enable/disable Notch Bar
- Set background opacity
- Choose button spacing
- Configure menu reveal style
- Set auto-hide timeout
- Define app-specific layouts
- Customize icon appearance

Notch Bar Best Practices

  • Keep active buttons minimal (notch space limited)
  • Use expandable groups for menus
  • Prefer icons over text labels
  • Test on actual display to verify layout
  • Consider switching to different config per app
  • Hide less-used buttons to preserve space

Tips & Tricks

Advanced Tips for BetterTouchTool

Performance Optimization

Tip Benefit
Disable unused triggers Reduces CPU usage
Use conditional activation Only active when needed
Limit gesture complexity Improves recognition speed
Cache variables instead of querying Faster script execution
Use AppleScript sparingly Lighter than repeated queries
Profile trigger performance Identify slow triggers

Performance Monitoring:

  • Check Activity Monitor for BTT CPU/memory usage
  • Identify slow triggers causing lag
  • Disable and test triggers incrementally
  • Profile gesture recognition accuracy vs speed

Backup & Recovery

Backup Strategies:

Automatic Backup:
- BTT saves config daily
- iCloud backup available
- Version history: 30 days

Manual Backup:
1. Export Preset with all triggers
2. Save to external drive
3. Backup to cloud storage
4. Version naming: btt-config-2026-02-15

Recovery:

  1. Preferences β†’ Main tab
  2. Click “Revert to Backup”
  3. Select desired backup date
  4. BTT restarts with old config

URL Scheme Integration

BTT URL Scheme Format:

btt://trigger_named?trigger_name=MyTrigger
btt://execute_named_trigger?trigger_name=MyTrigger
btt://set_string_variable?name=var&value=123
btt://get_string_variable?name=var

Use Cases:

  • Trigger BTT from other apps
  • Automation via webhooks
  • Keyboard maestro integration
  • External app control
  • Scripting automation chains

Cross-App Automation

Integration Examples:

Integration Method Use
Keyboard Maestro URL scheme + triggers Complex workflows
Alfred Custom search BTT trigger launcher
Automator Run shell script Trigger BTT actions
Shortcuts Open URL iOS/Mac workflow
AppleScript BTT tell command App control chain

Gesture Fine-Tuning

Improve Recognition:

  • Practice gestures consistently
  • Adjust sensitivity in preferences
  • Test on trackpad corners vs center
  • Use distinctive gesture patterns
  • Avoid similar-looking gestures
  • Calibrate for your hand size

Debug Gestures:

  • Enable gesture logging
  • Check if gesture triggered
  • Verify action was executed
  • Review conditional activation rules
  • Test with simpler gesture first

Advanced Scripting Patterns

Pattern: Conditional Multi-Action

// Check app, then execute different actions
if (frontApp === "com.apple.Safari") {
  // Safari-specific action
  trigger_named("SafariAction");
} else if (frontApp === "com.microsoft.VSCode") {
  // Code editor action
  trigger_named("CodeAction");
} else {
  // Default action
  trigger_named("DefaultAction");
}

Pattern: Rate-Limited Trigger

// Prevent trigger spam
const lastTrigger = get_string_variable("lastTriggerTime");
const now = Date.now();
if (now - parseInt(lastTrigger) > 1000) {
  set_string_variable("lastTriggerTime", now.toString());
  returnValue = true; // Allow trigger
} else {
  returnValue = false; // Debounce
}

Hidden Features & Tricks

  • Hold Option while dragging trigger to duplicate
  • Right-click trigger name to show in Finder
  • ⌘K in config window to search triggers
  • Double-click trigger to quick edit name
  • Drag triggers between apps to rearrange
  • Option+scroll to zoom BTT UI
  • ⌘D to duplicate selected trigger
  • ⌘Delete to remove trigger instantly

Troubleshooting Common Issues

Issue Solution
Trigger not firing Check conditional activation, verify hotkey
High CPU usage Disable unused triggers, check script loops
Gesture not recognized Adjust sensitivity, practice gesture, check preview
Window snapping jerky Increase snap duration, check dock auto-hide
Webview HUD not showing Verify HTML, check permissions, test in browser first
Variables not persisting Use permanent storage, not session variables
Touch Bar not updating Force BTT restart, clear cache, reset Touch Bar

System Requirements & Compatibility

Supported:
- macOS 10.12+
- Apple Silicon & Intel Macs
- Multiple monitors
- Touch Bar (2016+)
- Notch bar (MacBook Pro 14"/16" 2021+)

Permissions Required:
- Accessibility (Input monitoring)
- Keyboard input (Key simulation)
- Screen recording (Gesture detection)
- Full disk access (File operations)
BetterTouchTool Shortcuts

Window Snapping

Window Snapping Shortcuts
Shortcut Action
βŒƒβŒ₯βŒ˜β† Snap window to left half
βŒƒβŒ₯βŒ˜β†’ Snap window to right half
βŒƒβŒ₯βŒ˜β†‘ Snap window to top half
βŒƒβŒ₯βŒ˜β†“ Snap window to bottom half
βŒƒβŒ₯⌘1 Snap to top-left quarter
βŒƒβŒ₯⌘2 Snap to top-right quarter
βŒƒβŒ₯⌘3 Snap to bottom-left quarter
βŒƒβŒ₯⌘4 Snap to bottom-right quarter
βŒƒβŒ₯⌘F Maximize window
βŒƒβŒ₯⌘C Center window on screen
βŒƒβŒ₯⌘R Restore window to previous size
βŒƒβŒ₯⌘L Snap to left third
βŒƒβŒ₯⌘M Snap to middle third
βŒƒβŒ₯⌘P Snap to right third

Note: These shortcuts are default configurations and may vary based on personal settings.

Trackpad Gestures

Common Trackpad Gestures
Gesture Default Action
3-finger swipe left Previous app / Go back
3-finger swipe right Next app / Go forward
3-finger swipe up Mission Control
3-finger swipe down App ExposΓ©
3-finger tap Look up / Show definition
TipTap (1 finger tap with pressure) Custom action (user-configured)
Force click Quick action menu
4-finger swipe up Show Notification Center
4-finger swipe down Hide Notification Center

TipTap Actions: TipTap enables pressure-based single-finger taps on trackpad. Common configurations include opening BTT menu, launching apps, or triggering automations.

BetterTouchTool Configuration UI

BTT Configuration Shortcuts
Shortcut Action
⌘, Open BTT Preferences (when BTT frontmost)
βŒƒβŒ₯⌘T Toggle BTT main window visibility
βŒƒβŒ₯⌘? Show BTT help / Quick reference
Add custom trigger Click + icon in left sidebar
Duplicate trigger Right-click trigger > Duplicate
Enable/Disable trigger Click toggle switch on trigger
Show trigger details Click on trigger in sidebar
Search triggers Use search field in sidebar
Show all triggers Clear search filter

Configuration Tips:

  • Most shortcuts are customizable through Preferences
  • Long-press on triggers to reveal context menu options
  • Use sidebar search to quickly find specific triggers

Named Triggers & Shortcuts

Named Trigger Invocation

Named Triggers are custom-named actions that can be invoked from keyboard shortcuts, scripts, or other triggers.

Action Method
Invoke named trigger Configure keyboard shortcut β†’ Execute named trigger
Show named trigger list Create action in BTT preferences
Create new named trigger Preferences β†’ Named & Other Triggers
Call from AppleScript tell app "BetterTouchTool" to trigger_named "TriggerName"
Call from JavaScript Use BTT JavaScript API for conditional logic
Pass parameters Use BTT’s URL scheme: btt://trigger_named?trigger_name=NAME

Example Named Triggers:

  • Screenshot to clipboard
  • Open development tools in browser
  • Toggle specific app window
  • Execute multi-step automation sequence

Clipboard Manager

Clipboard Manager Shortcuts
Shortcut Action
βŒƒβŒ₯⌘V Open clipboard manager history
↑/↓ Navigate clipboard history (in manager)
Return Paste selected clipboard item
⌘C Copy item in clipboard history
⌘X Cut selected item
Delete Remove item from history
⌘S Pin/save item permanently

Clipboard Features:

  • View last 100+ clipboard items
  • Search clipboard history
  • Pin frequently used items
  • Auto-clear old history
  • Sync across devices (iCloud)

Window Switching

Window Navigation
Shortcut Action
⌘` Cycle through windows of current app
βŒƒβŒ₯βŒ˜β†‘β†‘ Bring next window of current app to front
βŒƒβŒ₯βŒ˜β†“β†“ Send current window to back
βŒƒβŒ₯⌘[ Previous window in current app
βŒƒβŒ₯⌘] Next window in current app
Cmd+Tab System app switcher (not BTT-specific)

Window Switching Tips:

  • Configure app-specific window cycling
  • Use named triggers to focus specific windows
  • Combine with window snapping for workflow efficiency

Custom Gesture Types

Advanced Gesture Configuration

BetterTouchTool supports drawing custom gestures and special trackpad interactions:

Gesture Type Description
Free drawing Draw custom patterns on trackpad (letters, symbols)
Rectangle Draw rectangular gesture
Circle Draw circular gesture
Triangle Draw triangular gesture
Corner clicks Click specific corners of trackpad
Edge swipes Swipe from trackpad edges
Modifier + Tap Combine Shift/Cmd/Opt/Ctrl with taps
Pressure sensitivity Pressure-based gesture variations
Two-finger gestures Zoom, rotate, custom two-finger patterns

Custom Gesture Setup:

  1. Open BTT Preferences
  2. Select “Trackpad” trigger type
  3. Choose gesture drawing option
  4. Draw gesture pattern on trackpad
  5. Assign action to gesture
  6. Practice gesture for reliable recognition