![如何实际编写 acpid 事件脚本来检测耳机何时插入?](https://linux22.com/image/12765/%E5%A6%82%E4%BD%95%E5%AE%9E%E9%99%85%E7%BC%96%E5%86%99%20acpid%20%E4%BA%8B%E4%BB%B6%E8%84%9A%E6%9C%AC%E6%9D%A5%E6%A3%80%E6%B5%8B%E8%80%B3%E6%9C%BA%E4%BD%95%E6%97%B6%E6%8F%92%E5%85%A5%EF%BC%9F.png)
我用来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
请注意,除非您有其他安装软件包的方法,否则软件包安装需要访问权限。