Programming StreamDesk to control Zoom via BetterTouchTool

I’ve transitioned from the native Elgato StreamDesk software to controlling my StreamDeck XL via Better Touch Tool. It has allowed me to do a few things that I could not do the way I wanted to in the native SD software.

I am now trying to set up a configuration for controlling Zoom. (I never had a configuration for controlling Zoom in the native SD software, so I am starting from scratch.) At least initially I need only a few buttons, eg turn audio on/off, turn video on/off, raise/lower hand, etc. I am sure I’ll come up with more as time goes on.

In any case, the idea of course it to have a button on the SD that toggles audio on/off. It’s easy in BTT to create an on/off button with different images, so that is not the problem. It is also easy to tie the button to a keyboard sequence, such as ⇧⌘A to toggle audio.

The issue is actually tying the button appearance to the status of the audio, which I don’t see a way to do. There are two parts to this:

  1. How to tell BTT what the status of the button should be (I am reasonably sure I will be able to find this in the AppleScript support for BTT, but I haven’t looked yet).
  2. How to find out the current status of audio, video, etc from Zoom. It does not appear that Zoom is scriptable, and I don’t see any way to find out the status of Zoom itself. (Well, that’s not totally true. Once idea, albeit complex and fiddly, it to have a KM macro that looks for the microphone images and uses a conditional to determine which microphone image is displayed, which it can then feed back into BTT…but this is just a very convoluted solution, and before I try to make that work, I am hoping someone else has a better idea).

This just seems like a problem that has already been solved, but I just cannot find it on the Google.


I stopped using BTT for SD, because I run into too many issues, and do not wanted to spend the time to solve them out, while I did not observe that big advantage of it.
SD has a Plug-In for Zoom, maybe something similar exists for the BTT-Version?

This is not completely fleshed out but it comes to mind.

In KM, you can Select a menu based on the Title and on the Item. In Zoom, the Menu Item changes from Mute to UnMute

KM also has an action to set a Stream Deck Image.

So lets say you want to find out if the current state is Mute.

Run a Macro with the Show Menu Action. The Zoom Menu Title is Meeting. Make the Menu Item Mute.

One of two thing will happen.

  1. The macro will quit because there is no Menu Item Mute. That will happen when the current state is Mute so the Menu Item will read UnMute and the action will have nothing to do.

  2. The macro will actually execute the Mute and continue on. Well, now you have found out that the current state is Unmuted. Take that information and do what you need to do. Remember, as the macro continues, to issue to Menu Command to return it to its original status because you are not actually trying to change the status, you are just trying to figure out what its status is.

This is very kludgy to be sure. But it might be more accurate than depending on KM’s visual recognition algorithms.