OS XのBluetoothヘッドセットから再生ボタンのキーを再マップするにはどうすればよいですか?


13

LG Tone(HBS 700) Bluetoothステレオヘッドセットを所有しており、OS X Lionで使用しています。

ヘッドセットには再生/一時停止切り替えボタンがありますが、VLCメディアプレーヤーの実行中に再生/一時停止を切り替えるキーボードの再生ボタンとは異なり、ヘッドセットの再生ボタンはまだ開いていない場合はiTunesを起動します。 iTunesが既に開いている場合は、再生/一時停止を切り替えます。他のメディアプレーヤーの再生/一時停止は切り替わりません。

プレイを押したときにトリガーされる可能性のあるシステムイベントを誰かが説明できますか?iTunesが起動し、play / pause / next / prevコントロールをうまく解釈できるため、一部のシステムデーモンが何かをリッスンしていることは明らかです。keypressイベントをインターセプトし、その機能を再マップする方法はありますか?キーボードの再生ボタンと同じ動作にしたいです。

ご協力いただきありがとうございます!

回答:


7

次の場所にあるリモートコントロールデーモンを探しています。

/System/Library/CoreServices/rcd.app

コマンドで無効にすることができます

sudo chmod a-x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd
killall -9 rcd

(それを単に殺す場合、launchdそれを再度再始動します)。再度有効にするには、

sudo chmod a+x /System/Library/CoreServices/rcd.app/Contents/MacOS/rcd

その後、ログアウトしてから再度ログインし、launchd開始します。

十分な野心がある場合は、16進エディタで編集してみてください。これは私の知識の範囲外ですが、2つの提案があります。

  1. バックグラウンドでquicktime(ただ空白、何もない)を開くと、デーモンがiTunesを使用できなくなる場合があります。デバイスが同じシステムイベントを使用するかどうかによって異なります。

  2. または、次のリンクにあるデーモンにパッチを当てる無料のユーティリティがあります。実行後、デーモンはiTunesの代わりにアクティブなプログラムを使用します。ただし、playを押したときに開かれるプログラムとしてVLCが再マップされることはありません。キーボードのメディアキー用に設計されていますが、OSはLG Toneのボタンを同じシステムイベントと見なしています。そのリンク:http : //lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

最後に、Appleはまだリモートコントロールの設定を変更する簡単な方法を提供していないことを伝えることができます。これは、キーボードのメディアキーやデバイスなどのコントロールに関する一般的な質問であるため、残念です。解決策を提供するのではなく、過去にOSに変更を加え、iTunesがこのデーモンで使用されるプログラムであることを確認しているようです。残念ながら、すぐにこれらよりも優れた修正が行われる可能性は低いです。


3
私の経験では、再生/一時停止信号を送信するBluetoothデバイスは、キーボードメディアキーが解釈されるのと同じ方法で解釈されません。上記のパッチを使用すると、キーボードは期待どおりに動作しますが、Bluetoothヘッドセットは引き続きiTunesを起動します。私は後世のためにこれではないと思った。
ウィルコ

OS X Sierraでこの変更を行う方法はありますか?OS保護システムがあり、そのような変更を加えることは非常に困難です。
AB

3

まず、Karabiner(以前のKeyRemap4MacBook)と呼ばれるサードパーティのキーボードリマッピングアプリケーションが必要です。アプリケーションは少しユーザーフレンドリーではありませんが、理論的には一度だけこれを行う必要があります。また、現時点ではMacOS Sierraでは機能しません...その点に注意してください。

さあ行こう...

Karabinerをインストールする

https://pqrs.org/osx/karabiner/index.html.en

カラビナを実行する

すべての機能が必要な場合は、ユーザー補助のアクセス許可を与える必要があります。

ヘルパーアプリケーション「EventViewer」を使用してキーコードを取得します

EventViewerを開いて、キーコード/アプリケーション/デバイスIDを取得します。

ここに画像の説明を入力してください

[メイン]タブに移動し、キーボード、Bluetoothリモートなどで再マップするキーを押します。この場合、Satechi BluetoothリモートでMedia-ForwardおよびMedia-Backのキーコードを確認できます(矢印キーを左/右に再マップしたい)。

ここに画像の説明を入力してください

先に進み、「ペーストボードにコピー」して、後で使用するためにテキスト文書に貼り付けます。ユースケースに応じて、[アプリ]タブまたは[デバイス]タブに移動できます。

キーの再マッピングを特定のアプリケーションに制限する場合は、特定のアプリケーションID(google chromeなど)用のマッピングルールを作成します。そのため、[アプリ]タブに移動して、目的のアプリケーションのアプリケーションIDを取得します(後でルールを作成するときに使用します)。

ここに画像の説明を入力してください

私の場合、これらのキーをSatechi Bluetoothリモートでのみ再マップし、既存のキーボードキーの動作を台無しにしたくないので、デバイス固有のルールを作成します。そこで、[デバイス]タブに移動します。

ここに画像の説明を入力してください

注意!!!アプリとデバイスの場合は、ルールで使用する完全なデバイス/アプリID文字列を取得できるように、テキストファイルにコピーして貼り付ける必要もあります。

ルールを構築する

キーコード、アプリID、デバイスIDをコピーして後で参照できるようにテキストファイルに貼り付けたので、EventViewerを閉じてメインアプリに戻ることができます。

デフォルトのルールはあまり面白くないので、カスタムルールを作成する必要がありますが、編集は private.xml

ここに画像の説明を入力してください

これにより、private.xmlを表示するファインダーウィンドウが起動します。好きなテキストエディタでprivate.xmlを開いてください。

これで、ルールを作成する準備ができました...

このファイルの形式に関するドキュメントはこちら:https : //pqrs.org/osx/karabiner/xml.html.en

それぞれについて、最小値<item>が必要です。名前はあなたの名前です。識別子も自分で作成しますが、一意である必要があります。autogenは、ルール/マッピングを指定する場所です(つまり、対象のキーはキーfoo barを送信する必要があります)。 <name> <identifier><autogen>

さらに興味深いのは、特定のアクティブなアプリケーションに対してのみルールを実行するように指定できることです(これは、MacOS Accessibilityパーミッションが作用する場所だと思います...そのためKarabinerはアクティブなウィンドウを決定できます)。これはで行われ<only>ます。

また、(私にとって)興味深いの<device_only>は、特定のキーボード(つまり、私のsatechi bluetoothリモート)に対してのみルールを作成できることです。詳細については、上記のリンクを参照してください。

とにかく。EventViewerから取得したキーコードID、デバイスID、およびアプリケーションIDを使用して、カスタムルールを作成します。

私のものは次のようになります。

<?xml version="1.0"?>
<root>
    <item>
        <name>Satechi Right</name>
        <identifier>private.satechi.right</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_NEXT_17, KeyCode::CURSOR_RIGHT</autogen>
    </item>
    <item>
        <name>Satechi Left</name>
        <identifier>private.satechi.left</identifier>
        <device_only>DeviceVendor::RawValue::0x05ac,DeviceProduct::RawValue::0x023c</device_only>
        <autogen>__KeyToKey__ ConsumerKeyCode::MUSIC_PREV_18, KeyCode::CURSOR_LEFT</autogen>
    </item>
</root>

要約:2つのルール。Satechi Bluetoothリモートデバイスのみ。「次の」メディアボタンは右矢印にマップし、「前の」メディアボタンは左矢印にマップします。すべてのアプリケーションに適用されます。

ルールを読み込む

XMLファイルを保存します。Karabinerアプリに戻ります。[キーの変更]タブに移動します。左上の[XMLの再読み込み]をクリックします。新しいルールが表示されます。チェックボックスをオンにして、ルールを有効にします。新しいキーマッピングが期待どおりに機能することをテストします。

ここに画像の説明を入力してください

このアプリは間違いなくユーザーフレンドリーではありませんが、オプションを理解すると、私が望んでいたものを簡単にセットアップできるようになりました。Karabinerには少しバグがあります...再マッピングルールがまだ機能していても、イベントビューアーにイベントが表示されなくなることがありました...再起動が役立ちます。


1
MacOSの最新バージョンに必要なアップグレードであるKarabinerの後継であるKarabiner-Elementsは、Bluetoothメディアデバイスコントロールを認識しないようです。新しいEventViewerはそのようなボタンの押下をまったく登録しませんが、とにかくiTunesは起動します。:(
wfaulk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.