發生 ACPI 事件時無法觸發腳本

發生 ACPI 事件時無法觸發腳本

我的目的是在我的耳機插入電腦時觸發一個腳本。首先,為了檢查是否確實捕獲了此類事件,我運行acpi_listen並嘗試插入/拔出耳機幾次。這是它給出的輸出:

jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug

所以,我假設該事件已被正確捕獲。然後我做的是創建一個名為jack-headphoneunder 的新事件/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

相關內容