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
| 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:
- Create new trigger
- Click “Conditional Activation” tab
- Select condition type
- Configure specific condition
- Set default action + conditional overrides
Window Snapping Configuration
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 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
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
| 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
- Check if Slack is open (condition)
- If yes: Get focus with β1
- If no: Launch Slack
- Wait 2 seconds (delay)
- Send message (action)
- 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 Configuration
Steps:
- BTT Preferences β Main tab
- Click “Export Preset” button
- Select triggers/gestures to include
- Save as
.bttpresetfile - 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
- File menu β Import Preset
- Select
.bttpresetfile - Choose merge or replace existing config
- BTT restarts to apply preset
- 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
Notch Bar Customization
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
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:
- Preferences β Main tab
- Click “Revert to Backup”
- Select desired backup date
- 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)
Window Snapping
| 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
| 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
| 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 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
| 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
| 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
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:
- Open BTT Preferences
- Select “Trackpad” trigger type
- Choose gesture drawing option
- Draw gesture pattern on trackpad
- Assign action to gesture
- Practice gesture for reliable recognition