Keyboard Maestro 11
stairways.com
stairways.com
1. You can easily implement your own window manager in it, e.g., replaces Moom or Magnet.
2. You can bind any AppleScript, shell script, etc... to a keyboard shortcut.
3. You can record and replay GUI macros, e.g., like Vim and Emacs macros but for any application.
4. At has a ton of built-in actions to script practically anything about your system, e.g., sleep, simulating media keys, image manipulation, etc... I suspect a lot of uses of Karabiner can be replaced by Keyboard Maestro.
5. It has a built-in clipboard history, with powerful features, like, processing an item from the clipboard with a Keyboard Maestro macro. One I use sometimes is running OCR on a screenshot I have on the clipboard.
6. You can bind any menu item in any application to a keystroke. E.g., you can rebind menu items to other keys, or adding key bindings to menu items that don't have keyboard shortcuts.
7. You can create custom command palettes (i.e., like ⇧⌘P in VS Code) for applications. For example, the command palette in Photoshop is awful, so I just made one for my common actions in Keyboard Maestro instead.
All of the above can sync seamlessly between computers with any file sync service (e.g., Dropbox). It's probably the best sync I've ever used, in 5+ years of use I've never had even the slightest hiccup. I don't bother using macOS built-in settings for things Keyboard Maestro supports for this reason. Put it in Keyboard Maestro and it will automatically sync to any Mac I use (I always install Keyboard Maestro).
This is a macOS feature (either globally or per app) and doesn’t need a separate app. For example, I have ⇧⌘M mapped to Window > Zoom (the inverse of Minimize).
This is now hidden deep in System Settings > Keyboard > Keyboard Shortcuts button > App Shortcuts.
Being able to jump into this settings pane and find the issue then simply remap one … infinitely easier than fixing this kind of thing on Windows… where last time I tried literally none of the “list keyboard shortcuts from all open applications” tools I could find worked at all on Windows 10.
Failing that, it would be nice if there was a convention that some modifier sequence was reserved for user and should not be used by applications.
I'm not listing shortcuts on Windows, I've read that it's impossible due to the way shortcuts are registered, you can at most find a list of shortcuts that aren't in use by any app by trying to set/unset them. And anyway the OS (nor the MS apps like Office) isn't even good enough to list its own shortcuts
The solution to this problem is to ignore the app and bind to whatever is best for you, AHK overrides apps, so native shortcuts won't interfere. And then if an app has a shortcut that you want to use, you could also rebind it natively within the app or if the app is dumb, just do it in AHK to `if app {my_key_combo::app_key_combo}`
Then re. search: in AHK I add comments to keybinds that allow me to easier find a shortcut across all ahk scripts in a text editor (but this isn't a perfect system either, I don't know of a perfect updated one)
> would be nice if there was a convention that some modifier sequence was reserved for user and should not be used by applications.
That's way too limiting, besides there isn't even a much simpler convention: every app should allow listing and changing every single keybind it uses
Unfortunately it does since there is this dumb limitation of 1 shortcut per menu item
Also there is a big UI difference between having to type the whole thing from scratch (with easy typos ruining it and having to remember the separator) vs just selecting an item
(although the default has the benefit of a menu hint and also works when menu is renamed)
You also need to enter menu item names even though the system already knows those and could let you browse current menus.
One nifty feature I haven't seen mentioned yet is that it can click on the screen based on OCR. So, if there's some UI element you want to interact with and you're not sure how to do it programmatically you can take a small screenshot of it and KM will use that to find the element on screen. Comes with useful visual debugging too.
Also, I find it pairs well with a launcher application like Alfred or Raycast:
- For Alfred: https://github.com/iansinnott/alfred-maestro - For Raycast: https://www.raycast.com/eluce2/list-keyboard-maestro-macros
* open Obsidian and switch to my daily journal page"
* type my password" (which reads securely from Keychain)
* find the hamburger menu on the wiki, move the mouse to it, then select 'Translate to English" from the menu that pops up
That last one is an example of one of Keyboard Maestro's superpowers: search for an image anywhere on screen, then take an action on it (move the mouse there, click it, etc.). Very very handy for automating things that can't easily be otherwise automated.There's streamdeck-ui (https://timothycrosley.github.io/streamdeck-ui/), which is an open-source alternative, but it at first glance it seems to be only for Linux.
There are a bunch of other macro/launcher pads like the StreamDeck that DO act as standard USB HID keyboards, though, and those should work fine with Keyboard Maestro using keyboard shortcut triggers.
Those other controllers are neat, but I want the pretty pictures, darn it!
But it does expose itself as a custom HID device! This project uses connects to all the StreamDeck models over WebHID. https://github.com/petele/StreamDeck-Meet
So I think the driver paranoid are actually in a decent spot.
If we say that Logitech app is 10 on a scale good to, well, Logitech, then Streamdeck’s software is ~3
* switch to Specific Application -> Obsidian
* pause until... application "Obsidian" is at the front
* type keystroke -> Cmd+Option+D ; go to daily page
* type keystroke -> Cmd+DownArrow ; move cursor to the bottom
* type keystroke -> Return ; start new bullet in existing listI am well versed in AutoHotKey for Windows and have written 1000s of lines of macros in it, but Keyboard Maestro makes it so easy to create complex macros for even one time tasks.
Linux is certainly lacking in tools to automate the GUI.
Though for GUI automation of, e.g., the increasing number of electron-backed apps more accessible software would be nice.
It also has several other forms of automation:
1. AppleScript, which often makes it faster to implement powerful scripts than a CLI because AppleScript has objects (e.g., you can iterate through the tasks in OmniFocus for example and use AppleScript's built-in date type to modify them).
2. Automator / Shortcuts, which uses a combination of hard-coded, configurable actions (e.g., an image editor would provide an action to resize an image), and URL-based automation (tell OS to open a URL, URL is sent to a specific app based on a URL scheme, app performs an action).
3. A GUI macro utility like Keyboard Maestro
I point this out because something I see frequently from folks using other OSes is to mention some other approach is better than something unique to the Mac, but macOS usually also supports that other way of doing things. These options are usually additive.
Even back in the Classic macOS days of System 7, it was relatively easy to fully automate your GUI applications via AppleScript and Apple Events to allow almost complete unit test coverage.
Note:I have been a server side CLI Linux web dev since the late 90s. While macOS is my preferred desktop, KDE Neon has been my primary GUI for the last few years. There is much I miss from macOS, but I get along with KDE pretty well
Maybe a few very basic things that I still have in KM are stuff like “paste as keyboard strokes”, muting my audio when stuff changes and the occasionally keyboard shortcut remap (because it syncs across my machines in contrast to the macOS native thing)
Curious what the people here use KM for. What are some of your use cases?
I have web-specific macros that basically act as cross-browser bookmarks. I have terminal-specific macros for the shell and other REPLs. I even have a macro for a VPN client that refuses to remember my username (over twenty characters, including a domain name).
It takes like 10 seconds for it to do it...
The lovely lack of mental friction around this model is something I miss dearly, as opposed to endless subscriptions. But this is probably because I am an old guy and haven't adapted to our new reality.
As far as KM goes, it's so well done. Very complete. Great for any one off key combos you want to add, but can do a ridiculous amount more. AND it's very well documented.
I don't personally know all the differences. But for instance I use BTT to program my stream deck, while I use KM for my clipboard history because the built in GUI is polished.
I think generally BTT is more powerful (although I’m sure KM has some USP), but tbh it’s quite buggy. It hangs multiple times a day for a minute or more, and the config UI has various bugs.
I’ve been thinking of switching to Hammerspoon, but I cannot really be bothered these days
Clunky software example: connect to cisco vpn each day, handling all the prompts it makes you go through.
Another is to type out what’s in my copy buffer, for websites that don’t let you paste your password in.
Gaming example was re-casting spells when they came off cooldown in Diablo 2/3.
I’ve written hundreds of macros over the years and this app has saved me a ton of time and frustration. And probably some RSI too.
I mainly only use it for text expansion, but it has served me well for years.
Truly remarkable piece of software.
I appreciate the honesty here.
-High commission.
-Strong downward pressure on price (how much stuff in the Mac app store is $30+ ?).
-Can't sell upgrades.
-I don't want Apple getting between the customer and me.
-I just can't face jumping through all their arbitary hoops.
So you sort of need Apple's permission. But, as long as you are prepared to stump up the ~$100 per year and don't do anything stupid, then the certificate and notarization shouldn't be an issue. I haven't heard of any bona fide developers being refused a certificate. And I haven't had any issue with notarization (yet).
https://developer.apple.com/documentation/security/app_sandb...
This feature is just a sliver of all the power of Keyboard Maestro. I'm sure there are many potentially life-changing gems among the features I haven't yet explored.
Some web forms make it very difficult. In which case you may have some places where you will need Keyboard Maestro to wait while you do some manual interactions. Still you can get most of the process automated
Extremely niche and nerdy example: Years ago, when I used to do a ton of iOS screenshot galleries for app reviews (this was when I was a tech journalist), I used a modified KM script from Federico Viticci and Gabe Weatherhead that would let me select a group of screenshots, resize them as two or three side-by-side with proper spacing between and then resize for the requirements of the CMS/website I worked for with a hot-key combo. I could even have it name the file a certain way and save it to a specific folder I had setup to auto-upload images to the CMS and then copy the image link so I could use it in my Markdown workflow that I’d cobbled together to do previewing of stuff before I put the raw HTML code in said CMS. That example was the result of like several different macros/scripts that I combined into a couple of key commands, depending on if I wanted to just do the image merging/resizing or the whole upload/copy link thing.
I’m sure there could be other ways to do that, but none as seamless and intuitively as KM.
It’s just a great tool. Even if you just use it for basic text expansion, it’s great - though I tend to use other tools for that — but the automation stuff is just top notch.
Something like
;elevatorpitch
Will insert an elevator pitch into the email