我目前正在尝试编写耳机插入/拔出事件的脚本。我发现我可以很容易地将其编写为一个acpi
事件。
/etc/acpi/events/
我用 event创建了一个文件event=jack[ /]headphone
,然后它只调用我的脚本。
我还确定了文件和确切的行,其中包含有关耳机当前是否插入的信息。该文件中的/proc/asound/card0/codec#0
一项具体内容Pin-ctls:
是0x00
是否插入和0x40: OUT
拔出。
现在我看到的问题是,当我检查耳机插孔的当前状态时,一旦触发 acpi 事件,文件是否codec#0
已经包含当前值?我这里可能有竞争条件吗?或者这样使用安全吗?
答案1
我发现通过检查插孔上的特定plug
/事件可以轻松规避该问题。unplug
下面的解决方案将为脚本提供有关特定插孔事件的信息,当插孔被拔出时,这将使声音静音。
/etc/acpi/events/jack
:
event=jack[ /]headphone
action=/etc/acpi/actions/jack.sh "%e"
/etc/acpi/actions/jack.sh
:
#!/bin/bash
event=$(echo "$1" | cut -d " " -f 3)
case "$event" in
plug)
;;
unplug)
amixer set Master mute
;;
*)
#null
esac