Comment remapper une pression sur un bouton de lecture à partir d'un casque Bluetooth sous OS X?

13

J'ai un casque stéréo Bluetooth LG Tone (HBS 700) et je l'utilise avec OS X Lion.

Le casque a un bouton de basculement de lecture / pause, mais contrairement au bouton de lecture de mon clavier, qui basculera la lecture / pause pour, disons, le lecteur multimédia VLC s'il est en cours d'exécution, le bouton de lecture du casque lancera iTunes s'il n'est pas déjà ouvert, ou basculer la lecture / pause dans iTunes s'il est déjà ouvert. Il ne basculera pas la lecture / pause dans aucun autre lecteur multimédia.

Quelqu'un peut-il expliquer quel événement système est susceptible d'être déclenché lorsque j'appuie sur play? Il est clair que certains démons système écoutent quelque chose, car iTunes est lancé et peut très bien interpréter les commandes de lecture / pause / suivant / précédent ... Existe-t-il un moyen d'intercepter l'événement de pression de touche et de remapper sa fonction? Je voudrais qu'il ait le même comportement que le bouton de lecture du clavier.

Merci de votre aide!

Ragoût
la source

Réponses:

7

Vous recherchez le démon de contrôle à distance situé dans:

/System/Library/CoreServices/rcd.app

Il peut être désactivé avec la commande

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

(Si vous le tuez, launchdle redémarrera à nouveau). Pour le réactiver,

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

Déconnectez-vous et reconnectez-vous pour launchdcommencer.

Si vous êtes assez ambitieux, vous pouvez essayer de le modifier avec un éditeur hexadécimal. C'est en dehors de mon domaine de connaissances, mais j'ai deux suggestions.

  1. L'ouverture de quicktime (juste vide, rien dedans) en arrière-plan peut empêcher le démon d'utiliser iTunes. Cela dépend si votre appareil utilise le même événement système.

  2. Alternativement, il existe un utilitaire gratuit situé sur le lien suivant qui corrige le démon pour vous. Après l'avoir exécuté, le démon utilisera le programme actif, au lieu d'iTunes. Cependant, cela ne remappera pas VLC en tant que programme à ouvrir lorsque vous appuyez sur play. Il est conçu pour les touches multimédias du clavier, mais je pense que le système d'exploitation voit le bouton de votre LG Tone comme le même événement système. Ce lien: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

Enfin, je peux vous dire qu'Apple n'a pas encore fourni un moyen simple de modifier les paramètres de la télécommande. C'est malheureux, car il s'agit d'une question courante concernant les touches multimédias sur les claviers et autres commandes sur des appareils tels que le vôtre. Plutôt que de fournir une solution, il semble qu'ils aient apporté des modifications au système d'exploitation dans le passé pour s'assurer qu'iTunes est le programme utilisé par ce démon. Malheureusement, il est peu probable qu'il y ait une meilleure solution que ceux-ci bientôt.

Blackjack00
la source
3
D'après mon expérience, les appareils Bluetooth envoyant des signaux de lecture / pause ne sont pas interprétés de la même manière que les touches multimédias du clavier sont interprétées. En utilisant le patch mentionné, mon clavier se comporte comme prévu, mais mon casque Bluetooth continue de lancer iTunes. Je pensais juste que je ne ferais pas ça pour la postérité.
Wilco
Avez-vous des conseils sur la façon d'effectuer ce changement dans OS X Sierra? Ils ont un système de protection du système d'exploitation, et il est assez difficile de faire de tels changements.
AB
3

Vous aurez d'abord besoin d'une application tierce de remappage du clavier appelée Karabiner (anciennement KeyRemap4MacBook). L'application est peu conviviale, mais en théorie, vous ne devez le faire qu'une seule fois. De plus, cela ne fonctionne pas actuellement sur MacOS Sierra ... alors gardez cela à l'esprit.

Et c'est parti...

Installer Karabiner

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

Run Karabiner

Vous devriez lui donner des autorisations d'accessibilité si vous voulez toutes les fonctionnalités.

Utilisez l'application d'assistance "EventViewer" pour obtenir les codes clés

Ouvrez EventViewer pour obtenir les codes clés / identifiants d'application / d'appareil:

entrez la description de l'image ici

Accédez à l'onglet Principal, puis appuyez sur la ou les touches de votre clavier, de la télécommande Bluetooth, etc. que vous souhaitez re-mapper. Dans ce cas, vous pouvez voir les codes-clés pour Media-Forward et Media-Back sur ma télécommande Bluetooth Satechi (que je souhaite recaler sur les touches fléchées gauche / droite).

entrez la description de l'image ici

Allez-y et "copier sur la table de montage" et collez-le dans un document texte pour plus tard. Maintenant, en fonction de votre cas d'utilisation, vous pouvez accéder à l'application ou à l'onglet Appareils.

Si vous souhaitez limiter votre remappage de clés à des applications spécifiques, vous souhaiterez créer une règle de mappage correspondant à un ID d'application spécifique (par exemple, Google Chrome). Vous devriez donc aller dans l'onglet application et obtenir l'ID d'application pour votre application d'intérêt (à utiliser plus tard lorsque nous créerons la règle).

entrez la description de l'image ici

Dans mon cas, je veux UNIQUEMENT remapper ces touches sur ma télécommande Bluetooth Satechi et je ne veux pas gâcher le fonctionnement de mes touches de clavier existantes ... donc je veux faire une règle spécifique à l'appareil. Je vais donc dans l'onglet Appareils.

entrez la description de l'image ici

Remarque!!! Pour les applications et les appareils, vous devez également copier et coller dans un fichier texte afin de disposer des chaînes d'ID d'appareil / d'application complètes à utiliser dans notre règle.

Construire les règles

Maintenant que vous avez des codes clés, des ID d'application et / ou d'appareil copiés et collés dans un fichier texte pour référence ultérieure, vous pouvez fermer EventViewer et revenir à l'application principale.

Les règles par défaut ne sont pas très intéressantes pour nous, nous devons donc créer une règle personnalisée mais éditer private.xml

entrez la description de l'image ici

Cela ne fera que lancer une fenêtre de recherche affichant private.xml. Allez-y et ouvrez private.xml dans votre éditeur de texte préféré.

Vous êtes maintenant prêt à créer des règles ...

La documentation sur le format de ce fichier est ici: https://pqrs.org/osx/karabiner/xml.html.en

Pour chacun, <item>vous avez besoin d'un minimum <name> <identifier> et <autogen>. Le nom n'est qu'un nom pour vous. L'identifiant est également composé par vous mais doit être unique. autogen est l'endroit où vous spécifiez la règle / le mappage (c'est-à-dire que la clé d'intérêt doit envoyer les clés foo bar).

Plus intéressant, vous pouvez spécifier que la règle ne s'exécute que pour des applications actives spécifiques (je pense que c'est là que les autorisations d'accessibilité de MacOS entrent en jeu ... afin que Karabiner puisse déterminer la fenêtre active). Cela se fait avec <only>.

Un autre intérêt (pour moi) est celui <device_only>qui me permet de faire une règle uniquement pour un clavier spécifique (c'est-à-dire ma télécommande bluetooth satechi). Voir le lien ci-dessus pour plus de détails.

En tous cas. Utilisez les ID de code, les ID de périphérique et les ID d'application que vous avez obtenus à partir de EventViewer pour construire vos règles personnalisées.

Le mien ressemble à ceci:

<?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>

Résumé: 2 règles. Appareil à distance Bluetooth Satechi uniquement. le bouton multimédia "suivant" correspond à la flèche droite, le bouton multimédia "précédent" à la flèche gauche. S'applique à toutes les applications.

Charger les règles

Enregistrez votre fichier XML. Revenez à l'application Karabiner. Accédez à l'onglet "Modifier la clé". Cliquez sur "Recharger XML" en haut à gauche. Vos nouvelles règles devraient maintenant apparaître. Cochez les cases pour activer les règles. Testez que vos nouveaux mappages de touches fonctionnent comme prévu.

entrez la description de l'image ici

L'application n'est certainement pas conviviale mais m'a permis de configurer exactement ce que je voulais assez facilement une fois que j'ai compris les options. Karabiner est un peu bogué ... Certains événements ont cessé d'apparaître dans l'observateur d'événements, même si les règles de remappage fonctionnaient toujours ... le redémarrage aide.

mattpr
la source
1
Il semble que le successeur de Karabiner, Karabiner-Elements, qui est une mise à niveau requise pour les versions plus récentes de MacOS, ne voit pas les commandes des périphériques multimédias Bluetooth. Le nouvel EventViewer n'enregistre pas du tout de telles pressions de bouton, mais iTunes démarre quand même. :(
wfaulk