Control your Microsoft Teams meetings from an Elgato Stream Deck — mute, camera, raise hand, leave, and more — even after Microsoft deprecated the Teams integration APIs that apps (including the official Stream Deck Teams plugin) used to control Teams externally.
This is a small "sort of hack" that works surprisingly well: a tiny AutoHotkey v2 script finds the live Teams meeting window and sends it a keyboard shortcut. Each Stream Deck button just runs that script with a different shortcut.
- A Stream Deck button runs
AutoHotkey64.exe teams-hotkey.ahk "^+m"via the System → Open action. teams-hotkey.ahkenumerates allms-teams.exewindows, skips the ones that aren't a meeting (main window, chat, calendar, sharing control bar, etc.), activates the meeting window, and sends it the keyboard shortcut passed as the argument.- Teams receives the shortcut as if you'd typed it, and acts on it.
This approach relies on Teams keyboard shortcuts, so it only covers actions that have a working shortcut. Based on my own use:
Working well:
- Microphone (mute / unmute)
- Camera (on / off)
- Raise hand
- Hang up / leave call
- Share (screen share)
Not working:
- Accept call
- Decline call
- Blur / change background
- Closed captions
The non-working buttons either have no reliable keyboard shortcut or don't target the right window state, so they're included here only for completeness — don't expect them to work.
Download and install AutoHotkey v2. The default install path for the interpreter is:
C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe
Copy teams-hotkey.ahk somewhere stable, e.g.
C:\Tools\StreamDeck\teams-hotkey.ahk. Note the full path — you'll reference
it from each button.
For each button, add a System → Open action and set the command to:
"C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe" "C:\Tools\StreamDeck\teams-hotkey.ahk" "^+m"
Change the final quoted argument to the shortcut for that button. See button-mappings.md for the full list of Teams shortcuts and their AHK notation.
The icons shown in the original setup are the Microsoft Teams Icons from Vivre Motion:
https://vivre-motion.com/products/microsoft-teams-icons
Specifically, this setup uses Variant D in colour 25.
Image above: a screen capture of Vivre Motion's public product preview from https://vivre-motion.com/products/microsoft-teams-icons, shown here for reference and attribution only. The artwork is © Vivre Motion.
The icon files themselves are not included in this repository because they are not mine to redistribute. To recreate the look:
- Buy the Microsoft Teams Icons from Vivre Motion under their own license/terms, and pick Variant D / colour 25 to match the screenshot above.
- Assign each icon to the matching Stream Deck button in the Stream Deck app.
Please respect Vivre Motion's licensing — this repo only covers the script and configuration, not the icon artwork.
Besides the Teams controls, my deck has a few buttons that aren't part of the Teams hack but round out the setup:
- Sun button — Key Lights on/off. Toggles my three Elgato key lights — one Key Light and two Key Light Air — on and off (via the Elgato Control Center / Stream Deck Key Light action).
- Two hang-up buttons. One simply hangs up the call. The other is a Stream Deck Multi Action that hangs up the call and turns off the Key Lights (handy when I've left them on).
- Lock the computer. Locks the workstation.
- Timer buttons. Stream Deck Timer buttons.
- Terminal button. Opens the Windows Terminal.
Meeting reaction emojis (👏 😃 ❤️ 😯) have no keyboard shortcut in Teams, so they can't be triggered with this method.
This started as a "challenge accepted" reaction to Teams deprecating its integration APIs. The discontinuation shut out external controllers like the Stream Deck Teams plugin; this script restores most of that control through plain keyboard automation.
MIT — use, copy, modify, and share freely. The Vivre Motion icons are not covered by this license; see the Icons section above.

