Shockz OpenComm の右こめかみ部分についているマルチファンクションボタン、これにTeamsなどのテレビ会議アプリのミュートを割り当てたい。標準だとミュートは音量+とーの同時長押しで、かつこれはデバイスのミュートなのでアプリと連動してくれない。残念ながらShockzにはキーのカスタマイズ機能がないため、Autohotkey を使ってWindows側でキーコードの動作を切り替える。
Shockz OpenComm はとても評判の良い骨伝導型ヘッドセットで、耳を直接ふさがないので長時間の電話会議でも耳が痛くならず、音質も会議の用途なら良好で、ノイズキャンセリングもあるのでリモートワークに大変役立っている。
このOpenCommにはマルチファンクションボタンというハードウェアキーがついていて、電話着信・切断や音楽再生・一時停止などシーンに応じた機能を提供してくれるのだけど、テレビ会議で頻繁に使う「ミュート / アンミュート」のトグルがアサインされておらず、ミュートは「音量+/-キーを両方長押しする」などと言う非常に使いづらい操作にアサインされている。
Autohotkey をつかってキーコードをWindowsでの別の動作に割り当てていくのだが、まずはOpenCommがなんのキーコードを飛ばしてきているかを確認する。Autohotkeyの使い方にはここでは触れないので各自検索ください。
- 適当なファイルに
#InstallKeybdHook
を記載してAutohotkeyとして有効化。 - 有効化したAutohotkeyのウィンドウを開く(タスクバーのアイコンからOpenするなど)
- ウィンドウのメニューから View ⇒ Key history and script info を開く
- OpenComm のマルチファンクションボタンを押し、どのキーコードが飛んできたか確認
Teams 会議中にボタンを押すと Media_Play_Pause
が飛んできている。HSPだと思っていたんだけど、AVRCPとして操作している様子。
これが分かれば後は Media_Play_Pause をキーにした Teams の Mute Toggle を Autohotkey に記載すればいい。
TeamsMuteByOpenCommBtn.ahk:
Media_Play_Pause::
WinActive, ahk_exe teams.exe
Send, +^m
return
#z::Reload
return
このスクリプトでは以下の処理を行っている。
- Media_Play_Pause が送られてきた際に
- teams.exe のウィンドウをアクティブにし
- Teamsでのミュートのショートカット (Ctrl + Shift + M =
+^m
) をアクティブウィンドウに送信
これで概ね機能していてミュートの切り替えが OpenComm のマルチファンクションボタンで出来るようになった。
ただ使っていると、会議開始直後などでキー操作を取りこぼす事がたまにある。似たような操作を F1 キーに割り当てた際も取りこぼしが発生したので、恐らくはAutohotkey側の問題なのかと思う。とは言えさほど気になるほどの頻度でもないし、ヘッドセットのハードウェアキーでミュート切り替えができるのはやはり便利である。
上記設定はとりあえず OpenComm と Teams の組み合わせで使えるものなので、他のヘッドセットと会議システムであれば別の記載が必要になるだろうが、上記手順をいじれば概ね簡単に実現できると思うので各自チャレンジして頂ければ。
追記: AutoHotKey 2.x ではフォーマットが変わったようで以下のように変更した。
Media_Play_Pause::
{
WinActive "ahk_exe teams.exe"
Send "+^m"
return
}
#z::Reload
;return