현재 헤드폰 연결/분리 이벤트를 스크립팅하려고 합니다. 나는 이것을 acpi
이벤트로 쉽게 프로그래밍할 수 있다는 것을 알았습니다.
/etc/acpi/events/
이벤트가 포함된 파일을 만든 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