microsoft / TeamsMuteButton

External mute button for Microsoft Teams using the Adafruit Circuit Playground Express
MIT License
64 stars 5 forks source link

System-wide generic mic/mute and video/webcam disable #1

Open scottcopus opened 3 years ago

scottcopus commented 3 years ago

Is it just me or should there be a couple generic and system-wide Windows mic mute/unmute and video/webcam disable/enable hotkeys? And they should work even when Teams is NOT the active/focused app. If it's generic then other 3rd party conferencing apps (i.e. Zoom, etc) could also react to these hotkeys too. In addition, projects like this would continue to work under these conditions. Vote this up! ;)

ajobbins commented 3 years ago

Would be good to see the Teams application expose some kind of local API control for these things - same with presence. At the moment most of this can be done through the Graphs API, but unfortunately for many users like me that's likely a dead end as in large organisations, getting the required API permissions to do such things is a near or actual impossablity.

scottcopus commented 3 years ago

I don't have any knowledge of Graph API. My suggestion would be to emulate common multimedia keyboard media keys, but extend it with a customizable hotkey of the user's choice... like CTRL+ALT+M for mute/unmute. I understand that mute is an easy one. I'm not sure how to 'block' a webcam/video-capture source--unless something like a virtual device could replicate it in a way like OBS does video manipulation. For example, I believe Microsoft's PowerToys extends the desktop by adding its own extra system-wide hotkeys. In the end it would be nice to have these hotkeys be a part of Windows so that they would eventually show up on a webpage like this...

https://support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec

Cheers, Scott

ryancasler commented 3 years ago

The one thing you need to make something like this work is something that will provide the microphone muting and unmuting based on a keyboard shortcut. All of the microsoft built shortcuts all deal with muting/unmuting speakers. But, I have been able to find a small app that provides support for keyboard shortcuts for microphone muting that should make this a lot more feasible.

https://github.com/Anc813/MicMute

Simply copy the app you download there to anywhere on your system and create a shortcut to it on the desktop. Then bring up the hidden Windows 10 startup folder by typing "shell:startup" in the Run dialog box (Win + R). A folder will pop up. Simply drop the shortcut in there and it will launch on startup. You can open the app from your system try and assign any keyboard shortcut you want to it. If you were to assign Ctrl-Shift-M it would then make the mute in Teams universal anywhere on your PC. The great part about this is that you don't have to have focus on the Teams window! And it works for everything. WebEx, Skype....it simply controls the microphone. The latest release even has the ability to play a wav file when the mic is muted or unmuted so you won't catch yourself unmuted by accident. Enjoy!!!

scottcopus commented 3 years ago

Thanks @ryancasler.

https://support.microsoft.com/en-us/office/keyboard-shortcuts-for-microsoft-teams-2e8e2a70-e8d8-4a19-949b-4c36dd5292d2 explains how to toggle mute and video in Teams with Ctrl+Shift+M and Ctrl+Shift+O respectively. However, I suspect that only works when Teams is the active app since that's also mentioned in this project's page: "Note: The pushbutton triggers the keyboard "CTRL + Shift + M" keys, which does different things in different apps. The mute function will only work if you're actively using Teams."

The intent of my suggestion was to get anyone on this project to make a suggestion to the official Teams project dev team to add system-wide hotkeys for enabling/disabling the mic & camera. An even better idea is to add it to Windows/shell to do the same thing--but across the board for all apps. But I know that would even be a bigger commitment and unlikely to happen though.

I'm a casual user of OBS and that has system-wide hotkey support that may be used to accomplish this idea. I'm also a programmer and could also probably come up with my own system-wide hotkey mapper that redirects app-specific hotkeys into each app's window space so they can properly catch the events. But my hope is that something like this could eventually be added into Teams (or Windows) itself to give them a better UX and avoid needing workarounds. For example, if Teams could respond to CTRL+Shift+M (or another hotkey) system-wide, that would make this TeamsMuteButton project so much more useful. I'm sure I'm not the only who actively works within other apps while in online meetings. ;-)

Nonetheless, I like this project since it integrates externally independent hardware control for software. Keep up the great ideas!

Cheers, Scott

jenfoxbot commented 3 years ago

There is an API for Microsoft Teams which has a Mute button call feature via a server mute! Here's the link: https://docs.microsoft.com/en-us/graph/api/call-mute?view=graph-rest-1.0&tabs=http

Hope that helps! LMK if there's interest and our team can look into building this.

RalphNoordanus commented 3 years ago

You can also use the Microsoft PowerToys Video Conference Mute to mute all your microphones. see: https://docs.microsoft.com/en-us/windows/powertoys/video-conference-mute

I have this now implemented and using it with my teams meetings. It works fine, but when a teams meeting is already muted (in the application), you cannot un-mute the call in Microsoft Teams using this way.

jenfoxbot commented 3 years ago

Great idea! Thanks for the resource + info. In terms of being unable to un-mute, do you mean if it's muted via computer the button can't override, or once you mute with the button it's muted for good?