現在、ヘッドフォンのプラグイン/アウトイベントのスクリプトを作成しようとしています。これをacpi
イベントとして非常に簡単にスクリプト化できることがわかりました。
イベント/etc/acpi/events/
を使用してevent=jack[ /]headphone
にファイルを作成しました。このファイルは、スクリプトを呼び出すだけです。
また、ヘッドホンが現在接続されているかどうかに関する情報を保持するファイルと正確な行も決定しました。ファイル/proc/asound/card0/codec#0
では、特定のPin-ctls:
は、接続されている場合は0x00
であり、接続されていない場合は0x40: OUT
です。
ここで問題が発生するのは、ヘッドフォンジャックの現在のステータスを確認すると、acpiイベントがトリガーされるとすぐに、codec#0
ファイルに現在の値がすでに含まれているのでしょうか。ここで競合状態が発生する可能性がありますか?それともそのように使用しても安全ですか?
ジャックの特定の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