私の意図は、ヘッドフォンが 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を使用しています