发生 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

相关内容