Floating menus now have a right-click context menu that allows to edit some of the properties. This is a work in progress and only for convenience. The full config will continue to be in the BTT preferences window.
This version significantly changes the action selection / search, hoping to make it easier to find actions.
Version 5.326
Version 5.322
Version 5.313
Version 5.309
Fixed an issue with conditional activation groups while the system's "Secure Input Mode" was active or when BTT was set to "Use old keyboard shortcut implementation".
fixed a timing issue for the "choose from list" action:
Version 6.034
The Smooth Scroll Modifier now supports trackpad like swipes (e.g. to go back a page in Safari, delete e-mails in Mail or scroll horizontally in Calendar):
The trackpad like zoom and rotate scroll modifiers have also been improved slightly
Version 6.023
Scopes For Mouse Gestures / Drawings:
Version 5.780
Version 5.600
Version 5.587
Version 5.566
Version 5.562
The "Choose From List" action now allows to embed a floating menu at the top
allows to record & recognize two button clicks in the "normal mouse" section. For example pressing button 4 while holding button 1 or button 1 while holding button 4 to trigger actions. If you still want to assign functions to the single button presses, best make these trigger on mouse-up.
click (this is what we currently have and will continue to allow further customization for short or long presses and down/up trigger)
press button & drag down (discrete)
press button & drag up (discrete)
press button & drag left (discrete)
press button & drag right (discrete)
press button & drag down (continuous)
press button & drag up (continuous)
press button & drag left (continuous)
press button & drag right (continuous)
These are independent of BTT's mouse gestures and specifically optimized for straight lines. Also they won't show any UI when dragging (for now). The discrete ones are for triggering standard actions like cmd+w, the continuous ones are if you want to do something like change volume by dragging a button up/down or zooming in / out.
If you choose the continuous drag action category you can also assign the predefined actions "Start Smooth Zoom", "Start Smooth Scroll" or "Start Smooth Rotate" to zoom, scroll or rotate by dragging up/down.
The continuous category also sets these variables for usage in scripts: BTTDragValue (0-100), BTTDragDeltaX, BTTDragDeltaY, BTTDragButtonNumber, BTTDragUpValue, BTTDragDownValue, BTTDragLeftValue, BTTDragRightValue
adds some more action categories for different click types. All these have been possible before but required fiddling with the advanced click settings:
Note: Requires macOS 26: I have added a first version of this action "Start / Stop Dictation / Recognizing / Transcribing Speech" that uses Apple's offline SpeechAnalyzer API
You can e.g. configure it to start recording on key down (or mouse down) and end recording on key up so it records while you hold a shortcut/key and pastes once you release the key.
With 6.063 the action / trigger categories are displayed differently. Instead of filtering the action list, it now shows all configured action categories and lets you configure new ones with the button on the bottom:
6.106 comes with a completely new implementation of the Stream Deck plugin mode. No more restarting of the Stream Deck software when using plugin mode! It is much more complex now but should also be much more stable.
Other improvements:
You can now assign the "Start Smooth Space Switch" action to continuous drag actions on normal mouse buttons. This also works for "Start Smooth Scroll", "Start Smooth Zoom" and "Start Smooth Rotate"
In the recent versions I was mainly doing invisible work, migrating from old UI technologies (Storyboards) to completely code based UI. This was done out of necessity because the current Xcode builds completely broke storyboard support for me. However it also brings a lot of benefits and will allow me to iterate on the UI faster.
With the migration it was also possible to add the Tahoe styling.
This was a big task with a shitload of code added, there might still be some issues but most things seem to work fine now:
The predefined action "Access / Interact With / Click Specific UI Element" can now save the value or description of a specified element to a variable.
The Stream Deck MK2 with Scissor Keys is now supported
Floating menu templates can now also be used with specific apps / CAGs and won't be always added to "All Apps" anymore.
Fixed issue when dragging folders between apps
Fixed an issue with the "Specific App Did Create Window" and "Specific App Did Destroy Window" trigger. This works also with system apps, e.g. you can use com.apple.notificationcenterui to trigger this whenever notification centers shows a new notification.
6.194 adds a new action trigger category for keyboard shortcuts:
"Actions Executed After All Modifier Keys Released"
This is different from the "Actions Executed On Key Release" - which already triggers if the main key involved is released.
So with the following example the "down" HUD would be shown when pressing cmd+shift+a. The "a released" HUD would show when a is released and the "all modifier keys released" would show once a AND cmd and shift all have been released
Added Tahoe compatibility for Notch Bar (still deprecated, but I haven't finished the migration path to Floating Menus yet, so let's keep supporting it for a bit longer)
Floating Menu's now support custom widgets, just drop a .swift file that follows the examples described here GitHub - folivoraAI/BetterTouchToolPlugins: Development of BetterTouchTool Plugins onto the BetterTouchTool window, afterwards (after confirming it shall be compiled & loaded) you will be able to select it from the "Custom Widget Plugin:
Experimenting with AI generated changelog. The following describes what has changed:
Changelog β Version 6.210 (2026022501)
Floating Menu Widgets
New: Now Playing Widget β A new dedicated now playing widget for floating menus that shows the currently playing track with album artwork, artist, album name, and a real-time progress bar. Options include showing/hiding when paused or when no player is active, filtering by specific music apps, and choosing between cover art, app icon, or both as artwork display.
New: Weather Widget β A new weather widget for floating menus showing current temperature, high/low, humidity, wind speed, sunrise/sunset times, and moon phase with automatic weather icons. Supports Celsius, Fahrenheit, or auto-detect based on system locale, custom location coordinates, and forecasts for future days.
New: Custom Plugin Widgets β Floating menus now support custom widgets provided by plugins, allowing third-party or user-created widgets with interactive controls.
New: Now Playing Widget Template β Added a ready-to-use template preset showcasing the now playing widget, including a version that displays on the lock screen.
Plugin System
New: Swift Plugin Support β You can now write BetterTouchTool plugins in pure Swift. Simply drop a .swift file into the Plugins folder and BetterTouchTool will offer to compile it into a working plugin automatically. Changes to the source file are detected and the plugin can be recompiled on the fly.
New: Plugin Trust & Security β All plugins now require user approval before they are loaded. When a plugin is modified, you will be prompted to approve the changes before it can run again.
New: Hot Plugin Reloading β The Plugins folder is now actively monitored. Adding, removing, or modifying plugins automatically updates the available plugin list without restarting.
New: Smart Model Routing β Simple messages (like "thanks", "ok", "yes") can now be automatically routed to a faster, cheaper model to save costs and improve response times. You can configure a separate fast model in the AI setup.
New: Model Fallback Chain β If the primary AI model fails, the assistant can automatically switch to one or two backup models, so conversations are less likely to be interrupted by API errors.
New: Message Coalescing β When you type multiple messages quickly in a row, they are automatically combined into a single request instead of sending separate API calls.
New: Custom Skill Editor β You can now create and edit individual AI skills directly from trigger configurations, in addition to managing the global skill library.
New: Scheduled AI Tasks β Added support for scheduled AI triggers that can run AI tasks automatically on a schedule.
Improved AI Setup Wizard β The setup wizard now includes configuration for Smart Model Routing and Model Fallback Chain.
Actions
New: Play Sound action β A new action that plays a system sound or a custom sound file (AIFF, WAV, MP3, M4A, CAF, AAC). Includes a preview button in the configuration and supports selecting from built-in macOS sounds or browsing for a custom file.
Now Playing
Fixed album artwork on macOS 15.4+ β Album artwork fetching for Apple Music and Spotify has been fixed on macOS 15.4 and later, where the previous method stopped working. Artwork is now reliably retrieved and displayed in widgets and variables.
Improved artwork persistence β Cover artwork is no longer lost when receiving track change notifications that don't include new artwork data.
Smooth Scrolling
Improved very slow scroll speeds β Smooth scrolling now supports very slow speeds (e.g. 0.01-0.05), which is great for auto-scrolling while reading. Previously the minimum effective speed was much higher.
Finer speed control β The speed adjustment step size has been reduced from 0.1 to 0.01, allowing more precise speed tuning.
Fixed scroll stop animation β Stopping continuous smooth scrolling no longer causes a brief visible "jump" in the opposite direction in some apps.
Logitech Devices
Faster button setup on reconnect β Logitech device button configurations are now cached, so buttons are configured faster when a device reconnects.
Improved Craft keyboard crown tap detection β Tap detection on the Logitech Craft crown is now significantly more reliable, detecting the majority of taps that were previously missed.
Fixed crown mode switching β Switching the Craft crown between smooth and ratchet modes is now more reliable and no longer causes both modes to fire simultaneously.
UI / Preferences
New: Capture Screenshot in Icon Picker β The icon picker now has a "Capture Screenshot" option, allowing you to take a screenshot of a screen region and use it directly as an icon.
Improved Stream Deck plugin variable access β Stream Deck plugins can now read and set BetterTouchTool variables directly.
Changelog β Version 6.208 (2026022402)
AI Chat
Added persistent memory: the AI assistant can now remember important details across conversations, recall relevant context automatically, and forget information on request
AI memory is initialized automatically when starting a chat β no configuration needed
Memories are extracted during conversation compaction so useful context is preserved even when older messages are summarized
The embedding system now falls back to on-device processing when no external API key is configured, so memory search works out of the box
Keyboard Shortcuts
Fixed modifier keys (Command, Option, Shift, Control, Fn) not being held reliably when using "key down only" shortcut mode β modifiers now persist correctly until the matching "key up" is sent
Fixed modifier key release events not being seen by some apps (e.g. Electron-based apps like Kando) when using "key up only" shortcut mode β proper key-up events are now posted for each modifier
Fixed modifiers being prematurely cleared during "key down only" actions, which could cause subsequent key presses to lose their modifier state
Notch Bar / Menu Bar
Fixed an issue on macOS Tahoe where menu bar items could temporarily disappear from the Notch Bar due to incomplete system data being processed
Improved reliability of menu bar item detection on macOS Tahoe by using the correct data source for item refresh
HalloAI Trigger
Added a dedicated trigger selector for HalloAI, making it easier to configure AI assistant triggers, custom AI agents, and custom AI contexts
BetterTouchTool β Version 6.207 (2026022401)
Floating Menus
New: Show floating menus on the lock screen β Floating menus can now optionally remain visible on the macOS lock screen. Enable the new "Show Menu On Lock Screen (experimental)" option in the floating menu's window level settings.
Notch Bar / Menu Bar Widget
Improved status icon handling on macOS Tahoe β Status bar icons displayed in the Notch Bar now use a more reliable data source on macOS Tahoe, improving accuracy and reducing refresh delays.
Fixed clicking status bar items from the Notch Bar β Clicking menu bar icons shown in the Notch Bar is now more reliable, especially on macOS Tahoe where items may be on a different screen.
Fixed Notch Bar resource files not updating β If the Notch Bar support files were partially installed, they will now be properly refreshed on update.
Hyper Key
New alternative Hyper Key mode for built-in keyboards β Added an alternate Hyper Key mode method on macOS 26.4+. This mode fully blocks the remapped key from reaching other apps. Enable via the BTTHyperKeyUseAlternateMode advanced setting.
Force new Hyper Key mode on older macOS versions β The improved Hyper Key handling (normally only active on macOS 26.4+) can now be force-enabled on earlier macOS versions using the BTTForceNewHyperKeyMode advanced setting.
Fixed Hyper Key cleanup β Switching Hyper Key modes or disabling the Hyper Key now properly removes all previous keyboard remappings.
Window Management
Improved "Move Window to Space" on macOS 15+ β Moving windows between spaces is now more reliable on macOS Sequoia and later.
JavaScript Integration
Fixed logitech_get_battery_status function β The JavaScript API function for reading Logitech device battery status was broken and has been restored.
UI / Preferences
Added HalloAI trigger type support β The preferences window now properly handles the new HalloAI trigger category, including correct filtering and layout.
Fixed toolbar view mode button layout β The view mode toggle in the toolbar no longer causes layout issues when hidden.
Improved Custom Widget Plugin Selection β Widget plugins are now listed individually in the trigger selector under a dedicated "Widget Plugins" section, each showing the plugin's name and icon. You no longer need to manually pick a plugin from a dropdown after creating a generic custom widget item.
Improved Custom Widget Descriptions β Custom widget triggers now display the plugin name in the trigger list (e.g., "Widget Plugin: My Plugin") instead of the generic "Floating Menu: Custom Widget" label.
Plugin Size Preferences β Widget plugins can now specify their own preferred minimum and maximum sizes, which are automatically applied when the widget is displayed.
Improved Custom Widget Preview β Custom widget plugins now show a placeholder in the floating menu editor preview instead of attempting to render live plugin content, which could cause issues.
New: Weather Widget β Added a Weather Widget option to the floating menu widget selector.
Floating Menu Configuration
Improved Plugin Configuration β When a widget plugin provides its own configuration options, those are now shown directly in the trigger settings instead of a generic plugin picker dropdown.