Development Overview
This collects links to posts that describe changes in recent versions.
Scroll To Bottom To See Latest Changes
11 Likes
Version 5.487
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.
Archived:
Version 5.480
Found a way to do spaces switches without animation without disabling SIP. I'll add it with the next alpha 5.480. (in a first step I'll only add move space left/right, but I should be able to make it go to a specific space without animation as well)
[image]
(it's not completely without animation but it's very short)
I made some changes, however I think I had never implemented window.close(), maybe this worked previously by accident. I think I can add support for it, or you could instead call the hide floating menu action:
let menu = { BTTMenuActionMenuID: "TheNameOfTheMenuYouWantToClose" };
let result = await trigger_action({
json: JSON.stringify({
BTTPredefinedActionType: 387,
BTTAdditionalActionData: JSON.stringify(menu)
}), wait_for_reply: true
});
//edit: I have implemented wi…
Version 5.461
With 5.460 the showing / hiding should now also make use of the new architecture I have implemented. It should now really be almost instant. Everything is now loaded lazily even if you have tens of thousands of items performance should not be impacted. Memory usage is also reduced signifcantly.
I fixed some focus related things in 5.460 alpha, maybe that also helps in you case!
Version 5.435
good point. I initially discarded this because the system native tooltips won't work with BTT floating menus due to technical limitations.
However with v5.434 I added custom tooltips, you can enable them like this: "Use Identifier As Tooltip"
[image]
Hallo @Andreas_Hegenberg ,
Describe the bug
The Web item menu item name is not saved anymore...
Screenshots
[Menu item name]
Device information:
BetterTouchTool version: 5.430 / 5.432
So I'm not sure why it displays the second "ghost" action, but I know what caused the action selection issue (a bug in the latest version related to triggers that have been set up > 1.5 years ago (or copied from an old trigger))
5.432 should fix this.
Would be great if you could try with 5.430. I have completely rewritten the layout algorithm because the old one < 5.429 was causing incorrect item sizes in some scenarios.
Version 5.400
I added something that might help with such stuff in 5.400 alpha. You can now transform any action sequence to a "Run Real Java Script" action by selecting the actions and choosing "Transform to Java Script:
To get a number variable you'd use
let variableValue = await get_number_variable("variableName")
In 5.399 I have added an option to the "Trigger Context Menu Item" to use the context menu for the current selection instead of the context menu at the current mouse position:
[image]
Version 5.376
New variables screen:
I have added a pin button to the variables with 5.376
[image]
Polling the "On demand" variables is disabled by default now because that uses a lot of CPU for some of them.
clipboard manager improvements
I think ChatGPT just helped me figure out a potential performance issue and also came up with a better high performance solution. This will also allow for more dynamic search.
It will require a bit of refactoring, I'll try to adapt this as soon as possible.
For now I have added a hidden max item setting in 5.377 (run while BTT is quit):
defaults write com.hegenberg.BetterTouchTool BTTNumberOfItemsToKeepInHistory 1000
Note: items are only deleted on BTT startup (regardless of …
unfortunately opening more than one of these windows is hard with the current architecture, you can however detach views:
[image]
Version 5.356
Floating Menu Items got a new option "Visible If Variable Is True"
Floating Menu's can now be placed based on the Dock frame
Floating Menu Items do now have a "on button press" and "on button release" action categories
Now Playing info should be returned better again
Version 5.338
Floating menus now support auto-updating variables (on Mac, BTT Mobile will follow next)
In 5.338 alpha I made it so the hover effect is disabled while clicking. This leads to some visual feedback when clicking a button.
Version 5.328
This version significantly changes the action selection / search, hoping to make it easier to find actions.
I have added on / off actions in 5.328 alpha. (uploading)
Version 5.326
this should be resolved in 5.326 alpha (uploading)
Version 5.322
The next build (will be released later today after review has finished) adds basic support for the iOS Shortcuts app.
It allows you to trigger named triggers on your Mac or run Apple Script & Java Script on your Mac.
[IMG_402B3DFECB38-1]
With support for Shortcuts, you can use Siri to trigger BTT functionality or create some buttons on your home screen to trigger functionality on your Mac without opening the BTT Mobile app.
I think that crash should be fixed in 5.322 alpha
Version 5.313
ah I see. Could you check whethe that is fixed with 5.313 alpha? (uploading now)
you are absolutely right, fixed in 5.312 (uploading)
(It worked when searching specific windows, but on whole screens it failed because the coordinates are inverted there)
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".
ah the issue is you have this option enabled: "Always use old keyboard shortcut implementation". Is there a reason for that? It really should only be used in very specific cases where all other options fail.
[image]
However it's also a bug as this should really work with the old implementation as well. It should be fixed in 5.309 alpha (uploading now)
Version 5.292
Version 5.286
5.286 alpha adds a "File or Folder Did Change" trigger to "automations, named & other triggers".
I think this one can be pretty useful. It sets these two variables on change:
BTTLastChangedFileOrFolder
BTTLastChangedFileOrFolderChangedType
Version 5.282
5.282 should fix the issue.
Also added a predefined action to delete specific items from the clipboard manager, so now you can do something like this:
[image]
[image]
(if transformation happened, delete the second item from the clipboard manager)
Example JS:
async function doSomething() {
let clipboardContentString = await get_clipboard_content({format: "NSPasteboardTypeString"});
if(clipboardContentString.length > 0) {
let newContent = clipboardContentString + "something";
s…
ah the previous build didn't update the variables golden chaos used correctly, this should be fixed in 5.284 alpha
For sharing, either screenshot or right-click the widget => export to file
Version 5.279
I have just implemented some workarounds in BTT 5.279 alpha (uploading). Would be great if you could check whether this works for you. It is much more complicated than before and currently doesn't support all apps but I'll add support for more in the next days.
Version 5.275
Should be fixed in 5.276 alpha (uploading now, available in ~10min)
that duplication sounds like a bug, I'll have a look. thanks for all the details!
If in doubt, set both BTTEnabled and BTTEnabled2
@Mark_K ah yes if you have the NW/SW/SE/NE lines in addition it can still be problematic. I have implemented a "short circuit" for straight line gestures, but it wasn't enabled yet. In 5.274 alpha you can try it by naming your gestures either
up, down, left, right, up-left, up-right, down-right, down-left
or
south, north, east, west, north-west, north-east, south-west, south-east
In my tests this has worked well. Maybe I'll add it explicitly to the recording UI.
[image]
Version 5.268
Ah there was a problem with the search predicate in some situations. Should be better in 5.268
Version 5.267
could you check whether 5.267 helps?
the recent alpha versions added a variable called "BTTLastTriggeredKeyboardShortcut. You could create a condition based on that. Best use BTT 5.266 or higher
[image]
[image]
fnR.bttpreset (7.5 KB)
Version 5.265
with 5.265 alpha you can copy the UUID of your text field item (right-click it in the BTT configuration UI), then use this in the paste action (with your UUID):
(BTT)@variable:4F14398B-E174-479F-8BFE-9EB55347868E(BTT)
you could add the script after the "copyToClipboard()" call.
Moving the window via the standard actions doesn't work because floating menus in general exclude themselves from macOS Accessibility (this is important for menus that don't behave like normal windows). However maybe I can change this for the "floating menu with titlebar" usecase.
//edit, 5.265 should not exclude menus from Accessibility if they have a standard titlebar
Can you check whether this works again in 5.265 alpha? I think there was a small change in a recent version of macOS that broke this. (uploading now)
Version 5.262
Could you try v5.261?
Also make sure to enable this in the webview settings if you have not already:
[image]
ah this is due to the way your Touch Bar preset adds the clipboard widget (it's in a disabled group which is being forced shown).
You can workaround it by either adding any other trigger to show the clipboard manager (e.g. a keyboard shortcut) or by upgrading to 5.260 alpha which I'm uploading now
Version 5.258
Yes it should be solved in 5.258, it should now show "Previously Saved Display" with the old saved UUID
Version 5.256
I think there might have been a potential display issue that caused the variable value display to not update, should be resolved in 5.256
Version 5.253
sorry for slow replies, I had caught a really bad flu - took me out for a week ... slowly recovering now
I'll look through the things you posted, the animation should be disabled now in 5.253 (uploading)
there were a few more caching related issues, I hope 5.253 resolves them.
While some basic caching is still automatically applied, the full menu caching (which also increases memory usage) is now optional. It should only be needed for very large menus:
[image]
Version 5.252
In 5.252 I added an option for the predefined action "Show Menu Bar In Context Menu" to show a specific submenu:
[image]
Version 5.248
Ah I think I missed one spot, can you try again with 5.248? (uploading)
should be resolved in 5.248
This is fixed in Version: 5.248 (2025030304) and possible few version before that one.
Version 5.247
I think I accidentally applied the new caching mechanism to submenus in the recent alphas. Could you check whether it works again in 5.247 ? (uploading)
Version 5.246:
in 5.246 I have added one more sanity check to ignore negative image sizes.
Version 5.243:
I did work on this a bit more and was able to change the behavior to something that might be better.
With 5.243 if you select multiple items it will show a dummy text like this:
[image]
You can then change the formatting of that dummy text and it will not change the actual text - only the formatting.
Version 6.040:
new predefined actions: "Start Smooth Scroll", "Stop Smooth Scroll", "Start Smooth Zoom", "Stop Smooth Zoom", "Start Smooth Rotate", "Stop Smooth Rotate"
fixes for custom move resize action:
Ah weird, then for some reason BTT identifies the incorrect display with the "1 screen left" option for some reason (maybe because they are the same model), I'll check!
fixed a timing issue for the "choose from list" action:
Actually you can use this interface. Here is an example. It makes use of the "Use First Word To Filter & Save Rest Of Input To Variable BTTPromptInput"
[image]
NOTE unfortunately something recent must have introduced a little timing issue for this function, which is why this example requires BTT 6.037 to work (uploading now).
search.bttpreset (1.9 MB)
( this preset imports a keyboard shortcut cmt+opt+ctrl+S that shows the list)
[image]
[image]
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):
@JDDD I think I figured out how to make the calendar & mail scroll work (super complicated). Would be great if you could try 6.034 alpha (uploading now). It requires the "smooth scrolling (like trackpad)" scroll modifier to be active:
[image]
It basically transforms the scroll events to touch events - Apple made the calendar app to explicitly not allow horizontal scrolling for normal mice so we need to simulate trackpad events, which is very complex.
The trackpad like zoom and rotate scroll modifiers have also been improved slightly
Version 6.023
Scopes For Mouse Gestures / Drawings:
#v6.023 alpha adds "scopes" for drawings and for the "start recording drawing" action:
For example with this:
[image]
Only drawings with scope "xxx" would be triggered:
[image]
Version 5.780
5.779 adds scroll modifiers.
For example there is a "smooth scroll" modifier and "Vertical & Horizontal Scroll Speed Modifier"
[image]
[image]
[image]
These are not limited to logitech mice. Multiple modifiers can be added and will automatically be combined.
Available modifiers:
Smooth Scrolling (like Trackpad)
Vertical & Horizontal Scroll Speed Modifier
Scroll Modifier Key Condition
Scroll Device Type Condition
Block Horizontal Scrolling
Block Vertical Scrolling
Scroll Acceleration Cur…
V5.763 contains the very first implementation of full native Logitech Mouse support that might work. (It might also not, I only tested it with a limited set of mice and configurations).
The most important part is the Logitech Configuration Object in BTT's Normal Mouse Section. You need to add one such for every Logitech Mouse you want to use in BTT. Afterwards you should be able to configure your buttons like for other mice.
[image]
It might currently require a BTT restart after adding and s…
Version 5.600
Ha I think I was actually able to reproduce the issue on my other machine for whatever reason.
Could you check whether 5.600 solves the hyperkey after FN issue for you? (uploading now).
In 5.599 alpha I made the active_space and translated_active_space variables observable. This means you can now do this without any scripting (just put it in curly braces - e.g. {translated_active_space}):
[image]
I also added a new "Active Space Did Change" trigger.
This should be resolved in 5.598! (uploading now)
(was related to a deadlock within the trigger_named_async_without_response call)
Version 5.587
should be resolved in 5.587, SFSymbols should now adapt correctly to dark mode when used in custom Finder context menu additions!
Hey good point, there actually wee no simple ways to do this for a single window.
In 5.579 I added two new actions:
Save Focused WIndow Size & Position
Restore Saved Size And Position
It just uses CGEventKeyboardSetUnicodeString for these and let's macOS handle the work of figuring out the internals
I think I figured out why some apps like terminal didn't accept emoji.
@luisherranz could you check whether 5.585 alpha (uploading now) works in all apps?
In 5.575 you can now specify extra api parameters. When entering these parameters gpt-5 should become faster:
{"reasoning_effort": "low", "verbosity": "low"}
Version 5.566
BTT 5.566 alpha adds a new variable that can be used in trigger conditions "last_trackpad_force".
E.g. if you want to have two gestures, a standard click swipe and a force click swipe you'd set up two click swipes. For one you add a condition last_trackpad_force > 500 (for example) and for the other you'd add a condition last_trackpad_force < 500
(the force value is in grams)
Version 5.562
The "Choose From List" action now allows to embed a floating menu at the top
Version 5.513
I think I found a workaround for now that is integrated in 5.513!
However it gets harder and harder to build for macOS 12. (Mostly due to the evolution of Swift & SwiftUI and missing backwards compatibility). BTT already uses some weird tricks to at least be able to build for macOS 12 but I assume I won't be able to do that much longer.
5.507 should resolve this while still improving the edge cases!
hovered_link variable:
This should work (adds a three finger tap that opens the hovered URL via velja):
3_finger_tap_velja.bttpreset (4.1 KB)
However requires 5.450 alpha (uploading), because I have just added the hovered_link variable
//edit: sorry there was an accidental dot in the preset, should now work
macOS did show notification trigger:
In 5.499 alpha I finally got around and added a native trigger that is monitoring this database based on @fortred2 's code. There is a small delay because the system doesn't immediately write the database to file.
[image]
This also makes the last shown notifications available as JSON string via variable BTTLastShownMacOSUserNotifications
Example of that variable:
[
{
"app" : "com.apple.ScriptEditor2",
"title" : "",
"subtitle" : "",
"body" : "Zipping app for notarization...…
With 5.511 I implemented the change that should allow for this, here is an example for F1:
F1.bttpreset (15.7 KB)
They key changes are:
1.) You can now have multiple shortcuts with minimum hold times > 0
[image]
[image]
2.) The "Execute Action Sequence After Timeout" action got an option to immediately continue executing the remaining actions in the original action sequence. (This was how it was originally intended but some refactoring a long time ago changed this behavior)
[image]
Version 6.041
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.
Button + scroll also works:
2 Likes
Version 6.042
1.) Some new action categories for mouse buttons:
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
1 Like
Version 6.043
adds some more action categories for different click types. All these have been possible before but required fiddling with the advanced click settings:
Actions Executed On Click Down
Actions Executed On Long Hold Down
Actions Executed on Quick Click Release
Actions Executed On Click Release After Long Hold
If further customization is required, the advanced settings can still be used instead.
2 Likes
Version 6.052
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.
4 Likes
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:
There is currently too much whitespace, I'll make it a bit cleaner with the next alphas.
6 Likes
With 6.080 keyboard shortcuts also got support for action categories - this is a huge change so let's hope it doesn't break anything:
@Frank1 might also be interesting for you (although your setups probably require non-standard timing stuff )
2 Likes
6.087
Added "Save As Template" feature for floating menus:
2 Likes
BTT 6.106
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"