現在ヘッドフォンの接続/分離イベントをスクリプト化しようとしています。私はこれをacpi
イベントとして簡単にプログラムできることがわかりました。
/etc/acpi/events/
イベントを含むファイルを作成し、event=jack[ /]headphone
スクリプトを呼び出します。
また、ヘッドセットが現在接続されているかどうかに関する情報を含むファイルと正確な行を識別しました。文書の/proc/asound/card0/codec#0
具体的な内容の1つは、プラグが接続されているかどうか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