내 의도는 헤드폰이 PC에 연결될 때 스크립트를 실행하는 것입니다. 우선, 실제로 이러한 이벤트가 발생하는지 확인하기 위해 acpi_listen
몇 번 실행하여 헤드폰을 연결/분리해 보았습니다. 그 결과는 다음과 같습니다.
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
그래서 이벤트가 제대로 잡히지 않았나 싶습니다. 그런 다음 jack-headphone
under 라는 새 이벤트를 만들고 /etc/acpi/events
다음 콘텐츠로 채웠습니다.
event=jack/headphone
action=/etc/acpi/jack-headphone.sh %e
/etc/acpi/jack-headphone.sh
마지막으로 헤드폰을 연결/분리할 때마다 실행하고 싶은 실제 스크립트( )를 만든 다음 다음을 사용하여 실행 가능하게 만들었습니다.
sudo chmod +x /etc/acpi/jack-headphone.sh
실제 스크립트는 다음과 같습니다.
#!/bin/bash
set -e -u
if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
case "$3" in
plug)
pacmd set-source-port 1 analog-input-headset-mic
;;
unplug)
pacmd set-source-port 1 analog-input-internal-mic
;;
esac
fi
이 명령은 pacmd set-source-port 1 analog-input-headset-mic
헤드폰의 마이크를 기본 입력으로 설정하는 반면, pacmd set-source-port 1 analog-input-internal-mic
내부 마이크에도 동일한 작업을 수행합니다. 터미널에서 이러한 명령을 실행하면 예상대로 작동하여 기본 입력이 적절한 입력으로 전환됩니다. 그러나 헤드폰을 연결/분리하고 스크립트가 jack-headphone.sh
실행되면 기본 입력이 그에 따라 수정되지 않습니다. 그게 어떻게 가능해요?
내가 여기서 뭔가를 놓치고 있거나 뭔가 잘못하고 있는 걸까요? 기록을 위해 Ubuntu 18.04를 사용하고 있습니다.