I spend way too much time on video conferences. Between my day to day at VMware, and the Kubernetes/CNCF communities I probably spend >50% of my time on Zoom.
There are two big things that have really bugged me about my interaction with zoom.
- It is too hard to find the mute/unmute button — especially when the zoom app doesn’t have focus.
- When you say goodby to someone there is an awkwardness as you both much around trying to find the “Leave Meeting” button.
(There is an option to enable keyboard shortcuts when zoom doesn’t have focus but that does it for all the shortcuts. I’m too afraid of conflicts with other apps. A lot of folks have also suggested some system level or hardware mute. That would work but I really want the “mute” icon next to my face. There is a subtle etiquette to video conferencing and that is part of it.)
I started by asking Twitter. Based on suggestions there, my solution has evolved over the last couple of days and I’m pretty happy with the direction it is going.
The first utility that solved a critical problem was Keyboard Maestro. This is a staple utility for the Mac that has been around in one version or another. It does way more than I need and I’m not sure I want it so I turned off things like the custom paste and switcher stuff as I didn’t need that.
Keyboard Maestro lets me capture global shortcut keys and send commands to Zoom without having to change the foreground application. Beyond this, you can set things up for keys that aren’t actually on your keyboard. I’m using F19 along with a bunch of modifier keys.
You can download my macros here.
Other options considered: AppleScript looks cool but the zoom client doesn’t have any bindings and I’m not sure you can send commands without changing focus. Hammerspoon also looks really interesting and I haven’t had time to figure out if it would work for me or not.
Before I ordered any hardware, I wanted to try with stuff I already had. I have a WhiteFox mechanical keyboard that has open firmware that is fully reprogrammable. I was able to assign a high function key to an extra key there and use that as “Push To Talk”. That was very cool. Depending on your keyboard you may be able to do something similar and have a dedicated zoom PTT key.
Finally: a Pedal
I was confident enough at this point to order some hardware. I started with a pedal. There are a lot of options out there and many of them are focused on transcriptionists. I decided to splurge a bit and got a high end pedal — the Kinesis Savant Elite2. It seems like some really solid hardware.
Programming this pedal is interesting. You flip it into “programming mode” and it then mounts as a USB drive. You can use their utility or, even better, just edit a text file on that drive. Note that I had to upgrade the firmware on the pedal to have it be able to address F19. But after that things we easy.
I set it up with the left pedal as “push to talk” (F19) and the right pedal as “toggle mute” (shift-F19).
Getting Fancy: Stream Deck
While searching for the right pedal I ran across the elgato Stream Deck. This thing is awesome. It is a programmable keypad with LEDs in each key. The 15 button version ran me ~$150.
While primarily aimed at streamers (with builtin in actions for twitch and OBS) it is more general purpose than that. I was able to program it to hit all the various flavors of F19 that I needed and created custom images for each key. I also was able to put a world clock on there, volume controls, and OBS scene buttons for when I’m doing TGIK.
I ginned up some icons quickly in Illustrator and exported them as 72px x 72px PNGs. If you want them let me know and I’ll post them someplace. For reference the Zoom icons are: hang up, push to talk, toggle mute, toggle camera, bring Zoom into focus.
The one downside: the state of mute/unmute isn’t reflected on the button. That’d be cool.
I’m probably done for now. I’ll probably tweak a bit but no major changes. I wish that the Zoom Mac app had better interfaces or an SDK as that would make integration easier. But oh well. It does look like the Stream Deck does have an SDK and that would be fun to play with.
Thanks for everyone that had suggestions and pointers through this project!