0

In Zoom Screen Sharing, there is a "meeting controls" window by default, which can get in the way. It is possible to hide it with the ⌘ Command^ Control⌥ OptionH keyboard shortcut, which is nice.

However, if you press the Esc key at any time during the screen share (for example, to stop editing in Vim, or un-focus an input field in a web form), Zoom will show the meeting controls again and steal window focus, which is quite disruptive.

Zoom does not seem to offer any settings to disable this behavior. Relevant Zoom community forum post here: How can I disable Escape key binding in Zoom?

Is there a way to prevent this, perhaps with a tool like Karabiner-Elements?

I think what I want to do is prevent Zoom from listening to the Esc key when I am focused on other windows.

2 Answers 2

2

I was able to solve this by using Hammerspoon to move the window offscreen.

Steps:

  1. (Optional). If you want to use the same hotkey, go into Zoom Settings (⌘ Command,), press "Keyboard Shortcuts" on the left", and scroll down to "Show/Hide Floating Meeting Controls" near the bottom, and clear the shortcut so it says "Not set".
  2. Download & install Hammerspoon (I ran brew install hammerspoon in the Terminal). Open the application.
  3. Add the following to ~/.hammerspoon/init.lua:
local originalFrame = nil

hs.hotkey.bind({"cmd", "ctrl", "alt"}, "H", function()
  local zoomWindow = hs.window.find("zoom share statusbar window")
  if zoomWindow then
    if originalFrame then
      zoomWindow:setFrame(originalFrame)
      originalFrame = nil
    else
      originalFrame = zoomWindow:frame()
      local screen = zoomWindow:screen()
      local frame = zoomWindow:frame()
      frame.x = screen:frame().w + 3000
      frame.y = screen:frame().h + 3000
      zoomWindow:setFrame(frame)
    end
  end
end)

To do this, you can open the Terminal application from Spotlight (cmd+space) and then run touch ~/.hammerspoon/init.lua and then open -A Textedit ~/.hammerspoon/init.lua and paste the above script in to the window, save it, and close it.

  1. Restart Hammerspoon, and you're good to go – pressing ⌘ Command^ Control⌥ OptionH will now move the meeting controls offscreen, and pressing it again will move them back to where they were.

Credits:

  1. User whatever1 in this post on the Zoom forum who suggested using BetterTouchTool for this and mentioned the name of the window (thank you!).
  2. ChatGPT, the author of ~all the above Lua code (I made a few tweaks).
1
  • 1
    Thank you! This so far is the best workaround.
    – juancn
    Feb 8 at 16:38
1

You can't prevent an app (Zoom in this case) from listening to a key press. All applications are allowed to listen to and for key press events and act accordingly.

It's also important to note that the Zoom developers aren't really doing anything "wrong". Per the macOS Human Interface Guidelines, universal keys and shortcuts (i.e. ⌘ CommandC/V for cut/paste) should be respected. However, nothing is assigned to the Esc when pressed in isolation - that makes it fair game.

That said, it is probably a good idea to share feedback with Zoom as screen sharing is a valuable tool and it doesn't play well with other apps that use Esc for their own functions.

There are two potential workarounds:

  • Use hidutil to remap the Esc to something else. The downside to this is it is system wide meaning it will be remapped for every app. This is probably something you don't want to do.

  • Use a 3rd party App like USB Overdrive ($20USD). This is a key remapping utility similar to ControllerMate (described in detail below). I've not tested this, but it should accomplish the same thing as CM. YMMV.

  • ControllerMate. It's free for a small number of building blocks, so for a single key like this you should be okay. I personally use this to create a "macro-board" for apps like Photoshop Lightroom and Think-or-Swim. You can create programming pages that only apply to specific applications - in your case, Zoom.

    ControllerMate Properties Inspector - Zoom

    This second image is of the "Page Programming sheet" that allows you create "building blocks" of actions. Here I have intercepted the Esc and set it to output a system beep.

    enter image description here

When I tested in Zoom, it seemed to work, but I didn't have a live Zoom call to to try it out on to see if that had any bearing on it's functionality.

2
  • Thanks… I'm struggling to understand, with ControllerMate, how would I tell it to ignore the Esc key? (Note that the behavior is most vexing when Zoom is not the foreground window).
    – rattray
    Jan 30 at 2:22
  • BTW, if you'd like to repro, you can boot up an empty Zoom meeting with no participants and still share your screen. This will show the meeting controls ("mute", "stop video", etc)
    – rattray
    Jan 30 at 2:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .