結論:いろいろあったが、CircuitPythonでTeams会議用のMute On/Off SWを作ることができた。これでMute解除するつもりで退出してしまったり、マウスカーソル探してオロオロすることが減るはず。
外観は以下(Atom S3を利用)

ソースは以下(LEDはデバッグ用) USBライブラリが充実しているCircuitPythonを利用
import time
import digitalio
import board
import usb_hid
print("--------- start ---------")
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard import Keycode
button = digitalio.DigitalInOut(board.BTN)
button.switch_to_input(pull=digitalio.Pull.UP)
led = digitalio.DigitalInOut(board.D8)
led.direction = digitalio.Direction.OUTPUT
led_value = False
led.value = led_value
count = 30
print("--------- boot loop ---------")
while True:
print(f"count down...{count}")
count -= 1
if count == 0:
break
led.value = led_value
led_value = not led_value
time.sleep(0.3)
prev_value = 'pushed'
print("--------- switch to KBD Mode ---------")
print("trans to kbd mode")
keyboard = Keyboard(usb_hid.devices)
print("trans to kbd mode done")
while True:
if button.value: # open
led_value = not led_value
led.value = led_value
prev_value = 'open'
else: # pushed
if prev_value == 'open':
print("pushed")
keyboard.press(Keycode.CONTROL, Keycode.SHIFT, Keycode.M)
time.sleep(0.1)
keyboard.release_all()
led.value = True
prev_value = 'pushed'
time.sleep(0.1)
ポイントとしては、、(1)Windows(10)側の認識が遅いせいか、CircuitPython側で、早々に keyboard = Keyboard(usb_hid.devices) を実行するとデバイスの認識がおかしくなる。だから、time.sleepで10秒待たせている。
(2)TeamsのMute On/Offは、[Ctrl] + [Shift] + [M] なので、これらのキーを一度に押したのと同等になるキーイベントを発生させている。
■追記(2023/8/15)
実際にTeams会議で使ってみた。Teamsアプリの画面がアクティブ(一番上)になっている時は正しく動作するのだが、会議中に内職して別のアプリの画面がアクティブになっている状態でSW操作すると、キー入力イベントが、Teams会議のアプリには届かず、別アプリに飛んでしまう。この結果、何かわけのわからない操作をしている状況に陥る。(∴ 機能としてはかなり不足)