我的目的是在我的耳機插入電腦時觸發一個腳本。首先,為了檢查是否確實捕獲了此類事件,我運行acpi_listen
並嘗試插入/拔出耳機幾次。這是它給出的輸出:
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
所以,我假設該事件已被正確捕獲。然後我做的是創建一個名為jack-headphone
under 的新事件/etc/acpi/events
,並用以下內容填充它:
event=jack/headphone
action=/etc/acpi/jack-headphone.sh %e
最後,我創建了實際的腳本(/etc/acpi/jack-headphone.sh
),每當我插入/拔出耳機時我都會執行該腳本,然後使用它使其可執行
sudo chmod +x /etc/acpi/jack-headphone.sh
實際腳本如下圖所示:
#!/bin/bash
set -e -u
if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
case "$3" in
plug)
pacmd set-source-port 1 analog-input-headset-mic
;;
unplug)
pacmd set-source-port 1 analog-input-internal-mic
;;
esac
fi
此指令pacmd set-source-port 1 analog-input-headset-mic
將耳機麥克風設定為預設輸入,而pacmd set-source-port 1 analog-input-internal-mic
內建麥克風的設定相同。發生的情況是,如果我在終端機中運行此類命令,它們會按預期運行,將預設輸入切換為適當的輸入。但是,當我插/拔耳機並且腳本jack-headphone.sh
被觸發時,預設輸入不會相應修改。這怎麼可能?
我在這裡錯過了什麼或做錯了什麼嗎?作為記錄,我使用的是 Ubuntu 18.04