見出し画像

ワンボタンキーボードでZoomのミュートスイッチ作ってみた

最近ではZoomを使ったオンライン会議やオンライン飲み会が日常に定着してきました。最初は違和感のあったオンラインのコミュニケーションにも慣れてくると、次はだんだん細かい事が気になるようになってきます。

注意が必要なことの一つに発言者以外の雑音があります。多人数でのオンライン会議では、発言者以外はこまめにミュート(消音)をして、余計な環境音やキーボード音を減らすことが大事です。

とはいえ、いちいち画面のミュートボタンをクリックするのは意外と面倒です。そんなときに6キーの自作キーボードを使ってミュートをするという記事を目にしました。

そこで、さらにシンプルに「ワンボタンキーボード」という1つのキーだけを自由にプログラミングできる製品を使ってZoomのミュートボタンを作ってみたいと思います!

「ワンボタンキーボード」はキット販売のみのため、ハンダゴテを使った組み立てと、arduinoを使ったプログラミングが必要になります。組み立て方、プログラム方法は公式サイトに詳細な解説記事があるので、電子工作の入門にオススメです。

サンプルプログラムを元に、以下の2つの機能を作りました。
① ボタンを短押し(0.5秒以内)すると音声オンオフのショートカットキー(Alt+a)を実行
② ボタンを長押し(0.5秒以上)するとビデオオンオフのショートカットキー(Alt+v)を実行

#include "Keyboard.h"

#define PIN_KEYSW (9)

int prevKeyState;
int currKeyState;

void setup() {
 pinMode(PIN_KEYSW, INPUT_PULLUP);
 prevKeyState = HIGH;
 currKeyState = HIGH;

 Keyboard.begin();
}

void loop() {
 currKeyState = digitalRead(PIN_KEYSW);

 // キースイッチが押された
 if ((prevKeyState == HIGH) && (currKeyState == LOW)) {

   delay(500); // 長押し判定
   if(digitalRead(PIN_KEYSW) == HIGH) {

     // 短押しの場合は音声OFF/ON [Alt]+[a]
     Keyboard.press(KEY_LEFT_ALT);  // [Alt]を押す
     Keyboard.press('a');            // [a]を押す
     delay(10);                      // 10ms待つ
     Keyboard.releaseAll();          // すべて放す
     
   } else {
     // 長押しの場合はビデオOFF/ON [Alt]+[v]
     Keyboard.press(KEY_LEFT_ALT);  // [Alt]を押す
     Keyboard.press('v');            // [v]を押す
     delay(10);                      // 10ms待つ
     Keyboard.releaseAll();          // すべて放す
   }

 }
 prevKeyState = currKeyState;
 delay(10);
}

GitHubでもこちらにコードを上げています。

このサンプルはWindowsのZoom用になります。Macで使う場合や、他のビデオ会議システムの場合はショートカットキーが違うので、その部分を修正してください。長押し判定の0.5秒が短すぎる・長すぎるという場合は、長押し判定の秒数を変更して自分の感覚に合わせてみましょう。

実際に動かしている映像を見ると、ボタンを押すことでミュートやビデオのON/OFFが切り替わっているのが分かります。

今回は「ワンボタンキーボード」でオンライン会議のミュートが簡単にできるようになりました。
ちょっとした工夫でオンライン生活を充実させていきましょう!

いただいたサポートは記事作成に活用させていただきます