web-dev-qa-db-ja.com

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

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

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

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

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

13
Stew

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

/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トーンのボタンを同じシステムイベントとして認識しています。そのリンク: http://lifehacker.com/5651055/free-your-macs-media-keys-from-iTunes-no-manual-hacking-required

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

7
Blackjack00

まず、Karabiner(以前のKeyRemap4MacBook)と呼ばれるサードパーティのキーボード再マッピングアプリケーションが必要になります。このアプリケーションは少しユーザーフレンドリーではありませんが、理論的にはこれを1回だけ実行する必要があります。また、現在MacOSSierraでは動作しません...そのことを覚えておいてください。

さあ行こう...

Karabinerをインストールする

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

カラビナを実行

すべての機能が必要な場合は、アクセシビリティ権限を付与する必要があります。

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

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

enter image description here

[メイン]タブに移動し、キーボード、Bluetoothリモコンなど、再マッピングするキーを押します。この場合、Satechi Bluetoothリモコン(左右の矢印キーに再マップしたい)にMedia-ForwardとMedia-Backのキーコードが表示されます。

enter image description here

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

キーの再マッピングを特定のアプリケーションに制限する場合は、特定のアプリケーションID(例:google chrome)用のマッピングルールを作成する必要があります。したがって、アプリタブに移動して、目的のアプリケーションのアプリケーションIDを取得します(後でルールを作成するときに使用します)。

enter image description here

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

enter image description here

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

ルールの構築

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

デフォルトのルールはあまり興味深いものではないため、カスタムルールを作成する必要がありますが、private.xml

enter image description here

これにより、private.xmlを表示するFinderウィンドウが起動します。先に進み、お気に入りのテキストエディタでprivate.xmlを開きます。

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

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

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

さらに興味深いことに、ルールが特定のアクティブなアプリケーションに対してのみ実行されるように指定できます(これは、MacOSのアクセシビリティアクセス許可が機能する場所だと思います... 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つのルール。 SatechiBluetoothリモートデバイスのみ。 「次へ」メディアボタンは右矢印にマップされ、「前」メディアボタンは左矢印にマップされます。すべてのアプリケーションに適用されます。

ルールを読み込む

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

enter image description here

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

3
mattpr