大家好,我是 NowScott。
▍原因
之前在使用 Windows 電腦時,由於經常需要把聲音輸出在音箱和耳機之間頻繁切換,就找到了一個軟體來實現一鍵切換(鼠標側鍵映射到快捷鍵上)音頻輸出設備,但是換到 Mac 上暫時沒發現一個好用的實現這個功能的軟體,應該有吧,實際上是我沒太仔細找,想著用快捷指令也能很好地實現,就自己寫了一個快捷指令來實現這個功能。
▍原理部分
SwitchAudioSource 是一個在 macOS 系統上運行的命令行工具,用於管理系統的音頻輸入和輸出設備。通過這個工具,用戶可以在不打開系統偏好設置的情況下,快速而方便地切換音頻設備,這也是本文主要使用的工具。
Mac 上的快捷指令可以用來調用 shell 腳本,同時支持快捷鍵對於指令的調用,因此我只需要把音頻切換的代碼放在快捷指令的 shell 腳本中,就可以實現使用快捷鍵來切換音頻。
▍代碼部分
代碼部分如下,相信學過一些編程的人就可以輕鬆看懂,如果有什麼問題可以留言區指出,大家共同進步!
# !/bin/bash
# 設置環境變量
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/homebrew/Cellar/switchaudio-osx/1.2.2:$PATH
# 獲取全部音頻設備的列表
available_devices=$(SwitchAudioSource -a -t output)
# 定義音頻設備列表
devices=("AirPods Max" "Mac mini揚聲器")
# 獲取當前音頻設備
current_device=$(SwitchAudioSource -c)
# 查找當前設備在列表中的索引
current_index=-1
for i in "${!devices[@]}"; do
if [ "${devices[i]}" == "$current_device" ]; then
current_index=$i
break
fi
done
# 切換到下一個設備
next_index=$(( (current_index 1) % ${#devices[@]} ))
next_device="${devices[next_index]}"
# 循環直到找到一個可用的設備
while true; do
# 檢查下一個設備是否在可用設備列表中
if echo "$available_devices" | grep -q "$next_device"; then
# 檢查是否已經循環到了當前設備
if [ "$next_device" != "$current_device" ]; then
# 切換設備
SwitchAudioSource -s "$next_device" >/dev/null
echo "已切換設備到 $next_device"
break
else
echo "切換失敗,暫無其他可用設備"
break
fi
fi
# 嘗試下一個設備
next_index=$(( (next_index 1) % ${#devices[@]} ))
next_device="${devices[next_index]}"
done
其中devices=("AirPods Max" "Mac mini揚聲器")要將括號中的內容換成你的音頻設備,可以在終端中輸入如下代碼來獲取:
SwitchAudioSource -a -t output
當然在此之前要確保你已經安裝了 SwitchAudioSource。
要安裝 SwitchAudioSource,您可以使用 Homebrew 工具來進行安裝。
首先,確保您已經安裝了 Homebrew。如果您還沒有安裝 Homebrew,可以在終端中輸入以下命令進行安裝:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安裝完成後,可以使用以下命令來安裝 SwitchAudioSource:
brew install switchaudio-osx
▍使用
下面是我分享的快捷指令 iCloud 鏈接,你可以點擊鏈接獲取捷徑或者跟著我用以下幾個步驟來創建一個自己的切換音頻的快捷指令
鏈接: https://www.icloud.com/shortcuts/2d1a8f9c4b054775906e6374436156cd
⚠️ 注意:使用鏈接添加是不會自動添加快捷鍵的,同時還需要修改自己的音頻設備名稱到代碼中。
▍創建步驟
1. 點擊 創建新的快捷指令:

2. 搜索 shell,將運行 shell 腳本拖進來,接著修改一下快捷指令的名稱:

3. 複製前文代碼到其中,並將下面的 shell 改為 bash:

4. 修改設備列表為你的音頻輸出設備:

5. 接下來添加鍵盤快捷鍵,我這裡設置的是 Fn control F10:

6. 如果你需要切換後通知一下,那麼可以在後面添加一個通知或者提醒(管理員身份運行並不重要,我只是順手點上了):

這樣就實現了這個快捷指令的製作,如果有需要可以把鼠標側鍵綁定為剛才設置的快捷鍵,就能實現一鍵切換音頻輸出了。
▍結尾
如果你通過我的文章有多學到一點知識,那我的目的就達成了。
如果發現本文有什麼錯誤可以在留言區發出來,我會虛心接受並及時改正。