我的目的是当我的耳机插入电脑时触发一个脚本。首先,为了检查是否真的捕获了此类事件,我运行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