見出し画像

ショートカット1つでデバイスのマイクミュートのon/offを変えられるようにした話

【状況】

 デスクトップパソコンを購入した。後ろのライン入力にスマホをつなげて前のマイク端子にマイクを接続して使用していたが、そうすると、マイクを使用していないときにも「さー」っというホワイトノイズが自分のイヤホン(前面のヘッドホン端子に接続)に聞こえてきた。これの手っ取り早い解決策は、マイクのプロパティを開いてミュートに設定することだ。しかし、これでは通話時などにマイクのミュートを外すのが非常に面倒である。そこで、以下の方法で簡略化した。



【解決策】

この記事を参考に、batファイル(javascriptを走らせる)を作ることにした。

以上の記事にも書かれている通り、接続しているデバイス数などによってコードが異なるため、丸まるコピーはお勧めしないが、一応私が記事の内容を参考に書いたコードを載せておく。

var wait = function (title) {
  do {
    WScript.Sleep(100);
  } while (!WshShell.AppActivate(title));
};

var WshShell = WScript.CreateObject("WScript.Shell");
//サウンド設定を開く
WshShell.Run("control mmsys.cpl");
wait("サウンド");

//前面マイクのプロパティを開く
WshShell.SendKeys("^{TAB}");
WshShell.SendKeys("{DOWN}");
WshShell.SendKeys("{DOWN}");
WshShell.SendKeys("{TAB}");
WshShell.SendKeys("{TAB}");
WshShell.SendKeys("{ENTER}");

WScript.Sleep(50);

//入力音量のミュートをいじる
WshShell.SendKeys("^{TAB}");
WshShell.SendKeys("^{TAB}");
WshShell.SendKeys("{TAB}");
WshShell.SendKeys(" ");

WScript.Sleep(50);

//すべて閉じる
WshShell.SendKeys("{TAB}");
WshShell.SendKeys("{TAB}");
WshShell.SendKeys("{ENTER}");
WshShell.SendKeys("{TAB}");
WshShell.SendKeys("{ENTER}");

ちなみに、動作を安定させるためにところどころに「sleep」コマンドを仕込んでいる。
また、キー入力の指定の仕方について、具体的には以下の記事を参考に、解読してほしい。


そして、できたjavascriptのファイルと同じフォルダ内に、

<任意の名前>.bat

と書いて、batファイルを作成し、以下の内容を記述する。

cscript <javascriptのファイルのファイル名>.js

これ以降は、作成したbatファイルを開けばマイクがON/OFFに設定されるようになった。



【注意事項】

①実行方法について

 この記述方法は、node.js向けではない方法で書かれている模様なので、batファイルの中に書いた通り、「cscript <ファイル名>」の形で実行しなければならない。

②sendkeysのキー指定の仕方について

1番上に記載した記事の中では、「{DOWN 1}%P」などと指定しているが、下向き矢印のボタンを1回押す場合は、「{DOWN}」だけで十分であった。
ここら辺の書き方は、2番目に取り上げた記事の方を参考にした方が、今後自分が読み解きやすいだろうと思い、以上の書き方をしている。



【About me & お問い合わせ等】

 ・私について:👇

 ・お問い合わせ:TwitterのDMまたはお問い合わせフォームまでどうぞ!



【参考サイト】

本文の中にURLを記載


この記事が参加している募集

サポート頂けますと、今後の様々な活動の原動力となりますので、よろしければ、よろしくお願いします!