如何实际编写 acpid 事件脚本来检测耳机何时插入?

如何实际编写 acpid 事件脚本来检测耳机何时插入?

我用来acpid检测我的耳机何时插入。根据acpid_listen,相关事件是

jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug

/etc/acpi/events/headphone_jack我像这样创建了文件:

event=jack/headphone.*
action=/etc/acpi/actions/headphone.sh "%e"

如果我改用该事件仍然不会触发jack[ /]headphone。该脚本/etc/acpi/actions/headphone.sh如下所示:

amixer set Master off

换句话说,每次插入或拔出耳机时,音量都会静音。该amixer命令在终端中运行。我acpid用 重新启动了服务sudo /etc/init.d/acpid reload,但事件仍然没有触发。

我究竟做错了什么?我在第四代 Thinkpad X1 Carbon 上使用 Debian 10(“buster”)x64。

答案1

该脚本的第一行可能需要“#!/bin/sh”,并且它当然必须是可执行的。

错过或忘记后者是一个常见的错误,可以通过以下方法修复

$ chmod a+x /path/to/script

所有这些的更详尽的描述可以在标准手册页中找到:

$ man execve

在 Debian 系统上,这些手册页现已被排除在标准集合之外,您可能需要使用以下命令从软件包中安装它们manpages-dev

# apt-get install manpages-dev

root请注意,除非您有其他安装软件包的方法,否则软件包安装需要访问权限。

相关内容