web-dev-qa-db-ja.com

X入力としてのサウンドジャック内のイヤホンリモート

私は新しいイヤホン、正確にはAKG K318を手に入れました、そしてそれらはそれらのリモコンの1つを持っています。 Android電話またはiPhoneなど)のスマートフォンでは、ボタンは音楽プレーヤーの再生/一時停止、音量の上げ下げ、スキップ、前へなどのアクションにマップされ、アイデアがわかります。

私は自分のコンピューターで同じ機能をどのように複製できるのかと思っていました。

Xに入力を認識させ、アプリケーションが使用できるようにこれらの入力を何らかの方法でマッピングするプロセスでプロセスが構成されると思います。

「デバイス」(サウンドジャックを介して接続します)はxinputにリストされておらず、ボタンは通常のキーボードイベントをトリガーしません。

出力サウンドジャックに接続されたイヤホンをXキー入力として使用するにはどうすればよいですか?

28
jonallard

メディアプレーヤー、音量、ミュートを制御するために専用デバイスで使用できる「特別な」ヘッドフォンまたはイヤフォンは、通常のヘッドフォン出力ジャックにある通常の3つに対して、プラグに4つの接続があります。

通常の3つは左チャネル、右チャネル、グラウンド(共通)ですが、4つ目は多値抵抗として設定されることが多く、各ボタンを押すと4番目のワイヤ(+グラウンド)に特定の抵抗が表示されます。それを感知し、それから必要な機能を決定できます。高価なデジタル信号発生器などに頼らずに1本のワイヤーで複数のボタンを機能させる非常に洗練された方法(すべてワイヤー上の小さな塊に詰め込まれています!)。

4つのボタンは、(任意のユニットの)4つの抵抗を使用する場合があります。

volume up:   1 ohm
volume down: 2 ohms
stop:        4 ohms
play:        8 ohms

これが疑わしいバイナリエンコードスキームのように見える場合は、...です。 (とても賢いです!!)同様にratiodされた値を使用すると、同時に押された複数のキーを処理する場合でも、16の異なる出力を感知できます。ターダー!

オーディオ出力プラグの横に小さな4コネクタージャックがあり、多くのデバイスがオーディオプラグと一緒に接続されていて、制御信号をやり取りできる最初のiPodを覚えているかもしれません。これは(イモクーラー!)4番目のワイヤーシステムのおかげで段階的に廃止されました...標準のヘッドフォンは期待どおりに機能し、4番目のワイヤー方式とのインターフェースに設定されたヘッドフォンも受け入れられます。

しかし、あなたの質問に答えるために(ついに!!)...いいえ、探している機能を有効にする「標準」の方法はありません。 Bluetoothヘッドセットが最適なソリューションです。 (私はクールです!)

41
lornix

現在のところ、私の知る限り、有線ヘッドセットをLinuxの入力として使用する標準化された方法はありません。つまり、ヘッドセットを使用して音楽プレーヤーを制御することはできません。もう一方のBluetoothヘッドセットはそのまま使用できます。

5
Ulrich Dangel

誰にとっても解決策ではありませんが、私のイヤホンはシングルボタンです。明らかに、これらの単純なイヤホンボタンのいくつかは、マイク入力が「高い」かどうかをチェックする一種のマイク信号メカニズムを使用します(これを参照してください post およびこれ post )。 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は、マイクポールの解像度を示します。ダブルタップを実装する場合は、この値を試してみてください。 0.89は、押されているボタンのしきい値を示します。 (私が押すと、私は基本的に1に等しくなります)

1
rien333