【Mac】Pauseキーでサウンド出力先を切り替えるまで【備忘録】
はじめに
大変お久しぶりです!もりさんこと藻梨胤河です!
気付いたらVtuberとして活動して一年以上経過しました!
配信や作業周りの環境を整える中で、最近はYoutubeのガジェット紹介動画で見つけたとっても可愛いキーボード、
YUNZII C75 Cake Meow Wireless Mechanical Keyboard をMacに繋いで愛用しています!
しかし、US配列の75%キーボードを使っていると、PauseキーやPrintScreenキーなど、Mac非対応のキーが結構あります。
こんなに可愛いのに使わないキーがあるなんて勿体無い…
そこで!今回はその Pauseキー を使って、
USB無線ヘッドセット
外付けモニター経由のスピーカー
この 2つのサウンド出力先をキーボード操作で切り替える ことを目標にしました!
※一連の作業とこの記事の一部はchatGPTを使用しています
全体の仕組みについて
今回の構成は、次の3つを組み合わせています。
SwitchAudioSource
→ サウンド出力先を切り替えるためのコマンドラインツールMacのショートカット app
→ ターミナルコマンドをまとめて実行するKarabiner-Elements
→ Pauseキーを、ショートカット用のキー操作に変換する
それぞれ単体では出来ないことを、役割分担させる形です。
まずはKarabinerをダウンロード、インストールしましょう。
① Karabiner 初回起動時の注意点(最初につまずいたところ)
Karabiner を初めて起動すると、
「必要な権限を付与してください」という内容の、英語のポップアップが表示されます。
必ず確認する場所
設定 → プライバシーとセキュリティ → 入力監視
ここに、以下 2つを両方 追加します。
Karabiner-Core-Service.app
Karabiner-EventViewer.app
私は最初、
Karabiner-EventViewer.app を入れ忘れたまま作業を進めてしまい、
途中からキー操作が反映されず、原因の切り分けにかなり時間がかかりました。
最初にここを確認しておくことがとても大切です。
② Karabinerで出来ること・出来ないこと
Simple Modifications
「AのキーをBのキーに置き換える」といった単純な変更
今回のように
複数キーの組み合わせ
特定のアプリ操作をトリガーにする
といった用途には向いていません
Complex Modifications
より複雑なキー変換が可能
JavaScript形式の設定ファイルを使用します
基本的な流れは
ブラウザから既存ルールをインポート
必要に応じて内容を編集
JavaScriptを一から書く必要はありませんが、
「どこがキー指定なのか」程度は把握しておくと安心です。
③ Homebrew の確認とインストール
SwitchAudioSource は Homebrew 経由で導入します。
Homebrew が入っているか確認
brew --version
エラーが出る場合は、未インストールの可能性が高いです。
Homebrew のインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
「入れた記憶がない」場合は、ほぼ入っていないと思って確認した方が安心です。
④ SwitchAudioSource のインストール
Homebrew が使える状態になったら、以下を実行します。
brew install switchaudio-osx
⑤ サウンドデバイス名の確認
まず、Macが認識しているサウンド出力先を一覧で確認します。
SwitchAudioSource -a
ここに表示される 名前をそのまま使う ことが重要です。
私の環境では、以下の2つを使いました。
USB無線ヘッドセット
外付けモニター(スピーカー)
⑥ 実際に使用した切り替えコマンド
以下が、実際に使用して問題なく動作したコマンドです
(※改変せずそのまま掲載しています)。
SwitchAudioSource -s "HyperX Cloud Stinger Core (Wireless) – PS"
SwitchAudioSource -s "ASUS VZ27EHE"
この時点で、
ターミナルから手動実行
音声出力が確実に切り替わる
ことを必ず確認しておきます。
⑦ サウンド出力を切り替える「切り替え用スクリプト」を作る(長め)
ターミナルから直接コマンドを打つだけでも切り替えは可能ですが、
キー操作で扱いやすくするため、切り替え専用のスクリプトを作成します。
今回は、
現在のサウンド出力先を取得
どちらが使われているか判定
もう一方に切り替える
という流れのシェルスクリプトを使用しました。
現在のサウンド出力先を確認(再確認)
念のため、使用するデバイス名をもう一度確認します。
SwitchAudioSource -a
この一覧に表示される 表記をそのまま 使用します。
私の環境では、以下の2つでした。
HyperX Cloud Stinger Core (Wireless) – PS
ASUS VZ27EHE
切り替え用スクリプトを作成
次に、toggle_audio.sh という名前でファイルを作成します。
nano ~/toggle_audio.shスクリプトの中身(そのまま使用した内容)
以下を そのまま貼り付けます
(※デバイス名も、実際に使用した表記のままです)。
#!/bin/bash
CURRENT=$(SwitchAudioSource -c)
HEADSET="HyperX Cloud Stinger Core (Wireless) – PS"
SPEAKER="ASUS VZ27EHE"
if [ "$CURRENT" = "$HEADSET" ]; then
SwitchAudioSource -s "$SPEAKER"
else
SwitchAudioSource -s "$HEADSET"
fi貼り付けたら、
Ctrl + O → Enter(保存)
Ctrl + X(終了)
スクリプトに実行権限を付与
このままでは実行できないため、権限を付けます。
chmod +x ~/scripts/toggle_audio.sh
スクリプト単体で動作確認
以下を実行し、
サウンド出力が交互に切り替わるかを確認します。
~/scripts/toggle_audio.sh
ここで正常に切り替われば、
スクリプト自体は完成です!
ショートカット app から実行する設定
Macのショートカット app で、
新規ショートカットを作成
「シェルスクリプトを実行」アクションを追加
実行内容に以下を記述
~/scripts/toggle_audio.sh
この時点で、
ショートカットを手動実行すると切り替わることを確認します。
補足
ターミナル
スクリプト
ショートカット app
この 3段階すべてで動作確認をしておくと、
後から Karabiner 側の切り分けがとても楽になります。
⑧ Macのショートカット app(ここも結構迷いました)
ショートカット app で、
「シェルスクリプトを実行」アクションを追加
上記のコマンドを登録
ここまでは問題なく進みました。
ただし、キー割り当ての画面があまり直感的ではありません。

気づいたこと
Macの ファンクションキー(F13〜F19など) はショートカットの起動条件として不安定
Karabinerでは反応していても、実際にはショートカットが実行されないことがありました
⑨ 解決策:Pauseキーを「変なキーの組み合わせ」にする
最終的にうまくいった方法は、
・Pauseに単体のキーではなく複数キーを割り当てる
というやり方です。
考え方
単体キーは誤爆しやすい
配信中などに勝手に切り替わると困る
そのため、
普段絶対に押さないキーの組み合わせを使うことにしました。
例
Control + Shift+ Command + P
設定の流れ
Karabiner(Complex Modifications)で
Pauseキー → Control + Shift + Command + Pショートカット app 側で
起動条件を Control + Shift + Command + P に設定
この方法で、
Pauseキーを押した時だけサウンド出力が切り替わる 状態になりました。
⑨ まとめ
ターミナルのコマンド自体は最初から正しかった
つまずきやすいポイントは
Karabinerの権限設定
ショートカット app とファンクションキーの相性
キー設計を工夫することで、安定して動作するようになった
おわりに
Mac非対応キーは、少し手を加えるだけでとても便利になります!
ゲーミングキーボードなど、Macで外付けのキーボードを活用したい方も多いはず…
同様にPrintscreenキーもMac上でのスクリーンショット機能を割り当てる事が出来ました!(Karabinerだけで実行可能!こちらは参考記事が多いので割愛)
使いこなせればゲームやアプリでよく使う機能も割り当て出来そうだなと感じました。やったぜ!
特に配信や作業環境では、「誤動作しない設計」にするのも重要ですよね…!
同じところで悩んでいる方の参考になれば幸いです!サンクス!
参考記事
