web-dev-qa-db-ja.com

ヘッドフォンが切断されたときに実行されるコードは何ですか?

私はヘッドフォンの切断時にスクリプトを実行したいのですが、変更されたときにすでに実行されているコードがあるときに、ステータスの constant polling の考えに腹を立てています。

9
int_ua

すべてではないにしてもほとんどのシステムで、ACPIはこのイベントを処理できます。それをテストするには:

  1. acpi_listenを実行します
  2. ヘッドフォンの取り外しと再接続、出力例:(マイク/耳はラップトップの同じジャックで共有)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. your-script.sh/etc/acpi/に入れる

  4. /etc/acpi/events/にスクリプトのイベントトリガーファイルを追加します

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    

    そこから他のファイルを確認してください。

  5. /etc/acpi/events/で変更されたルールを再ロードするには、acpidサービスを再起動する必要がある場合があります

    Sudo service acpid restart
    

参照:man acpid

9
user.dz

現在のバージョンのスクリプトには、sleep 0.25コマンドが含まれています。

sleepはタイマーベースであるため、スリープ中にany処理サイクルを使用しません…

非常に小さなCPUを使用してタイマーを設定しますが、sleep 1(1秒間スリープ)、sleep 60(1分間スリープ)、sleep 86400(1日間スリープ)すべて同じ数のCPUサイクルを使用します。

ACPIを使用 ただし、ACPIはポーリング駆動型ではなくイベント駆動型であるため、perfectソリューションです。

1
Fabby