私は新しいイヤホン、正確には AKG K318 を購入しました。このイヤホンにはリモコンが付いています。Android フォンや iPhone などのスマートフォンでは、ボタンは音楽プレーヤーの再生/一時停止、音量の上げ下げ、スキップ、前へなどの操作にマッピングされます。
どうすれば同じ機能を自分のコンピューターで再現できるのかと思いました。
このプロセスは、X に入力を認識させ、それらの入力を何らかの方法でマッピングしてアプリケーションが使用できるようにすることから構成されていると想像します。
「デバイス」(サウンド ジャック経由で接続される)は にリストされておらずxinput
、ボタンによって通常のキーボード イベントがトリガーされることもありません。
出力サウンドジャックに差し込んだイヤホンをXキー入力として使用するにはどうすればよいですか?
答え1
メディア プレーヤー、音量、ミュートなどの制御に専用デバイスで使用できる「特別な」ヘッドフォンまたはイヤフォンには、通常のヘッドフォン出力ジャックにある一般的な 3 つの接続ではなく、プラグに 4 つの接続があります。
通常の 3 つは左チャンネル、右チャンネル、およびグランド (共通) ですが、4 つ目は複数の値を持つ抵抗として設定されることが多く、各ボタンが押されると 4 つ目のワイヤ (+ グランド) に特定の抵抗が現れ、メディア デバイスはそれを感知して必要な機能を判断できます。高価なデジタル信号発生器などに頼らずに 1 本のワイヤで複数のボタンを動作させる、非常に巧妙な方法です (すべてワイヤ上の小さな塊に詰め込まれています)。
4 つのボタンは、4 つの抵抗 (任意の単位) を使用する場合があります。
volume up: 1 ohm
volume down: 2 ohms
stop: 4 ohms
play: 8 ohms
これがバイナリ エンコード方式のように見える場合... そうです!! (とても賢いですね!!) 同様に比率を取った値を使用すると、16 種類の異なる出力を感知でき、複数のキーが同時に押された場合も処理できます。 タダダ!
昔の人は、最初の iPod を覚えているかもしれません。iPod には、オーディオ出力プラグの横に小さな 4 コネクタ ジャックがあり、多くのデバイスをオーディオ プラグの横に差し込んで、制御信号を送受信することができました。これは、(個人的にはよりクールな!) 4 線式システムに取って代わられ、段階的に廃止されました... 標準のヘッドフォンは期待どおりに動作し、4 線式方式とインターフェイスするように設定されたヘッドフォンも受け入れられます。
しかし、あなたの質問に答えると (ついに!!)...いいえ、あなたが探している機能を有効にする「標準的な」方法はありません。Bluetooth ヘッドセットが最善の解決策です。(私のはクールです!)
答え2
私の知る限り、現在、有線ヘッドセットを Linux の入力として使用する標準的な方法はありません。つまり、ヘッドセットを使用して音楽プレーヤーを制御することはできません。一方、Bluetooth ヘッドセットはそのまま使用できます。
答え3
すべての人に当てはまる解決策ではありませんが、私のイヤホンはボタンが1つしかありません。どうやら、これらのシンプルなイヤホンのボタンの中には、マイク入力が「高」かどうかをチェックする一種のマイク信号メカニズムを使用しているものがあるようです(こちらを参照)。役職この役職)。Audacity を使用すると、ボタンをクリックすると、音声では実現できない特徴的なピークが生成されることを確認できました (叫んでは試していませんが)。インターネットで調べたところ、Sox を使用した次の解決策を思いつきましたrec
。
#!/usr/bin/sh
while true; do
rec -n stat trim 0 .5 2>&1 | awk '/^Maximum amplitude/ && $3 > 0.89' | grep -q 'M' && playerctl play-pause
done
playerctl
はメディアの再生を制御するプログラムです。.5
コード内の はマイクの pol 解像度を示します。ダブルタップを実装したい場合は、この値を調整することができます。 は0.89
ボタンが押されるしきい値を示します。(私の場合は基本的に押されたときに 1 になります)