First post. So I’ve been using KM for a while, mainly just basic automation macros. I’m interested in a stream deck, so I downloaded the app to play around. It’s fantastic really.
I installed the Keyboard Maestro add-on and I figured I would just need to link it directly to my macro. By magic.
However… it’s on about a Button ID, and assigning columns and rows. And, I’m lost.
In KM, there is a stream deck sub menu which I’m guessing should work…but I’m still lost… based on the descriptions of them. I was hoping for an ‘assign this macro to this button’ command.
Do I have to change my trigger?
Where do I find the Button ID?
I searched online for some documentation on this, and read ‘something, something foo’… got lost in the process and now as confused as ever.
I know it has to be something really basic I am missing, in the trigger…?
Is it just me or is the implementation unintuitive? (Probably just me!)
In the Stream Deck app add a Keyboard Maestro action to a button. It has some IDs there. Leave them as is as you are starting out.
In Keyboard Maestro add a USB trigger to your macro. When you select the option to set the trigger, press the button on the Stream Deck hardware (or mobile app) you have just set up as a Keyboard Maestro action in the Stream Deck app.
I’ve been tending to have the StreamDeck button run inline AppleScript whose sole function is to kick off a specific Keyboard Maestro macro.
The reason I do this is that the macro is reusable and clearer as to what is going on.
In other news I now beginning to regret setting up “multiple key press” actions in StreamDeck. I really should’ve set them up as KM macros. The reason is I suspect the latter would be quicker. Having said that multiple key presses is always slow on Mac.
(I’m thinking of, for example, multiple tab keys while holding down alt and Shift.)
In case it is of any help to anyone, I had planned to write a blog post about various different ways to trigger Keyboard Maestro from a Stream Deck. The official plugin has some advantages, but isn’t the only option, and there are definitely easier ones. I’ve now written it up, including more details about the official plug-in approach I outlined above.
As it happens, I read your blog post after my post and found a satisfying workaround (so thanks!) The URL approach is sleek and human-readable.
Since I’m here: have you found any issues with the URL approach? It seems like the route with the least amount of work, the least conflict potential, and the best inline documentation… and it seems speedy enough!