Bluetoothヘッドセット/イヤホンコントロールを無効/変更できますか?

Bluetoothヘッドセット/イヤホンコントロールを無効/変更できますか?

Debianを実行しているノートブックにはBluetoothヘッドフォン(Edifier TWS1 Pro)が接続されています。 (編集:シナモン追加)

左右のイヤホンをクリックすると、再生が一時停止/再開されます。意図的にこの機能をほとんど使用しないため、これは非常に迷惑ですが、耳のイヤホンを調整すると、1日に数回誤ってトリガされます。

Bluetoothコントロールを無効にするか、VLCとmplayerにイヤホンの再生/一時停止信号を無視するように指示したいと思います。

VLC の場合、VLC ウィンドウにフォーカスがないことを確認する解決策があります。

検索して見つけました。https://superuser.com/questions/1761350/how-to-disable-inline-headphone-controls-on-windows-10-11Windowsの場合(利用可能な回答はありません)https://answers.microsoft.com/en-us/msteams/forum/all/any-way-to-disable-headset-control/ffef7d41-d72c-482b-898b-ed1858c03562(類似)、https://askubuntu.com/questions/1236049/how-do-i-disable-headphone-controls(回答なし)と様々なBT接続の問題に関する数十のスレッド。

イヤホンを開けてボタンを永久的に分離してみようかと思いましたが、これらのものは損傷なしで開くのが簡単ではありませんが、ボタンはペアリングするときに便利です。誤ってボタンが届かないようにカバーも作ってみようかと思いましたが、おそらくあまり良く見えないようです。

一部のイヤホンにはタッチボタンの代わりに物理ボタンがあることがわかっています。私はこれを好みますが、残念ながら、物理ボタンの価格が0.01ドル未満であるにもかかわらず(私が所有しているボタンを含む)、ほとんどはタッチを使用します。実際のボタン構成はブランドによって異なることもわかっています。 IIRC、QCYは再生/再起動にダブルタップを使用し、シングルタップには何も接続しませんでしたが、ヘッドフォンのいずれも10時間の再生時間を記録できませんでした。また、これはソフトウェアの問題なので、新しいハードウェアを購入するよりもソフトウェアソリューションが優れています。

編集:Jossteのコメントのリンクをクリックして実行してxmodmap -pke見つけましたkeycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause。一度入ったら、xmodmap -e 'keycode 172 = '私のイヤホンをクリックすると、一時停止/再開は発生しません!この変更は再起動後も持続しませんが、おそらく理解できます。私はこれを制御できるのですでに幸せです。

編集2:技術的には可能ですが、残念ながらキーコード172が定期的に再登録されることがわかりました。原因が何であるかはわかりませんが、少なくともイヤホンを充電器に入れてから再度取り出すと発生します。しかし、それもランダムに起こっているようです。確実な解決策はxmodmap -e 'keycode 172 = '15秒ごとに実行することですが、コマンドによって画面が数秒間停止するため、この方法は機能しません。したがって、質問はまだ開いています。

編集3:これを自動化するために小さなシェルスクリプトを作成しました。

#!/bin/bash
while [[ 1 ]]
do
    badkey=$(xmodmap -pke | grep -c "keycode 172 = XF86AudioPlay XF86AudioPause")
    if [[ $badkey == 1 ]]
    then
        xmodmap -e 'keycode 172 = '
    fi
    sleep 5
done

このタスクは常に実行する必要があります。実際のスクリプトでは、キーコード172が再入力されたときに音を再生することもあります。これにより、Bluetoothマウスが非アクティブのためスタンバイモードに切り替わり、再接続するためにタッチするたびにキーコード172が再びアクティブになることがわかりました。ヘッドホンが接続されていない場合も同様です。私のマウスにはマルチメディアキーはありません。

編集4(2023年10月3日):

私はそれが答えだとは思わないが、YMMVかもしれない。

  • dconf-editorターミナルウィンドウに入力してください。
  • 航海/org/cinnamon/desktop/keybindings/media-keys
  • XF86AudioPlayその値を含めるかXF86AudioPause含む項目を見つけます。
  • これらの操作がすべて完了したら、「デフォルトの使用」を無効にし、[]カスタム値を入力します。
  • コンピュータを再起動しますか?

これは特にCinnamonデスクトップ環境用です。また、/org/gnome/settings-daemon/plugins/media-keys/同様の値が存在することがわかりました。

今はうまくいくかわかりません。イヤホンをクリックしてもVLCは一時停止/再開されなくなりますが、mplayerは機能し続けます。また、VLCの設定(ツール>基本設定>すべて表示>インターフェイス>ホットキー設定)を台無しにし、現在のVLCで何が機能しているのかわかりませんが、再起動後にのみ機能しているようです。

答え1

VLCの場合は、dconf-editorステップ(私の質問の「編集4」に記載されています)またはVLCのツール>設定>すべて表示>インターフェイス>ショートカット設定でショートカットを調整します。

~/.mplayer/input.confmplayerの場合は内容がPLAY osd_show_text "Ignored multimedia key"。 PLAYは私にとって正しいキーですが、mplayer -input keylist利用可能なすべてのキー名を実行します。 (http://www.mplayerhq.hu/DOCS/HTML/en/control.html)私が使用するコマンドは、ビデオが再生されている間に画面に「マルチメディアキーを無視する」というテキストをオーバーレイしたり、ビデオウィンドウがない場合は何もしません。利用可能なすべてのコマンドを実行しますmplayer -input cmdlist。バラよりhttp://www.mplayerhq.hu/DOCS/tech/slave.txtこれらのコマンドが実行する操作の詳細。

答え2

これは私にとって効果的です。

# cat /etc/udev/rules.d/logi-g935.rules
KERNEL=="controlC[0-9]*", SUBSYSTEM=="sound", ACTION=="add", ATTRS{id}=="Headset", RUN+="/usr/bin/su tim -c /opt/udev_scripts/g935_hook.sh"

# cat /opt/udev_scripts/g935_hook.sh
/opt/udev_scripts/disable-g935-buttons.sh &

# cat /opt/udev_scripts/disable-g935-buttons.sh
cd /home/tim

export DISPLAY=:0
export XAUTHORITY=/home/tim/.Xauthority
export XDG_RUNTIME_DIR=/run/user/1000
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

sleep 0.3

xinput disable "Logitech G935 Gaming Headset"

ディレクトリの変更や一部のエクスポートが不要な場合があります。しばらく前にpactlに必要でした。

Hook.shがudevとどのようにやり取りするのかわかりません。 2番目のスクリプトが長すぎると、それでも終了します。実行時にxinputがヘッドセットを認識していることを確認する必要があります。私のようにルールを実行するためにサウンドサブシステムを使用するときに実際に必要かどうかはわかりません。競争条件かもしれないし、そうではないので、今はテストしません。とにかく、これらのことは通常永遠に続くわけではありませんが、それについてのレポートを読んでみましょう。

関連情報