Как я могу переназначить нажатие кнопки воспроизведения с гарнитуры Bluetooth на OS X?

11747
Stew

У меня есть стереогарнитура LG Tone (HBS 700) Bluetooth, и я использую ее с OS X Lion.

На гарнитуре есть кнопка переключения воспроизведения / паузы, но в отличие от кнопки воспроизведения на моей клавиатуре, которая переключает воспроизведение / паузу, скажем, для медиаплеера VLC, если он работает, кнопка воспроизведения на гарнитуре запускает iTunes, если она еще не открыта, или включить / выключить воспроизведение в iTunes, если оно уже открыто. Он не будет переключать воспроизведение / паузу в любом другом медиаплеере.

Может кто-нибудь объяснить, какое системное событие, вероятно, вызывается, когда я нажимаю кнопку воспроизведения? Понятно, что какой-то системный демон что-то слушает, поскольку iTunes запускается и может очень хорошо интерпретировать элементы управления play / pause / next / prev ... Есть ли способ перехватить событие нажатия клавиши и переназначить его функцию? Я бы хотел, чтобы оно имело такое же поведение, как кнопка воспроизведения на клавиатуре.

Спасибо за вашу помощь!

13

2 ответа на вопрос

7
Blackjack00

You are looking for the Remote Control Daemon located in:

/System/Library/CoreServices/rcd.app 

It can be disabled with the command

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

(If you just kill it, launchd will restart it again). To re-enable it,

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

Then log out and back in to make launchd start it.

If you are ambitions enough, you may try editing it with a hex editor. This is outside of my realm of knowledge, but I do have two suggestions.

  1. Opening up quicktime (just blank, nothing in it) in the background may prevent the daemon from using iTunes. It depends on whether your device uses the same system event.

  2. Alternatively, there is a free utility located at the following link which patches the daemon for you. After running it, the daemon will use the active program, instead of iTunes. However, this will not remap VLC as the program to be opened when you press play. It is designed for the keyboard media keys, but I believe the OS sees your LG Tone's button as the same system event. That link: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

Finally, I can tell you that Apple has not yet provided a simple way to change remote control settings. This is unfortunate, as this is a common question regarding the media keys on keyboards and other controls on devices such as yours. Rather than provide a solution, it seems that they have made changes to the OS in the past to ensure iTunes is the program used by this daemon. Unfortunately, there is unlikely to be a better fix than these soon.

По моему опыту, устройства Bluetooth, отправляющие сигналы воспроизведения / паузы, * не * интерпретируются так же, как интерпретируются мультимедийные клавиши клавиатуры. Используя упомянутый патч, моя клавиатура ведет себя как положено, но моя Bluetooth-гарнитура продолжает запускать iTunes. Просто подумал, что я не буду этим ради потомков. Wilco 11 лет назад 3
Любой совет, как сделать это изменение в OS X Sierra? У них есть система защиты ОС, и такие изменения сделать довольно сложно. A B 7 лет назад 0
3
mattpr

Для начала вам понадобится стороннее приложение для переназначения клавиатуры под названием Karabiner (ранее KeyRemap4MacBook). Приложение немного неудобно для пользователя, но в теории вам нужно сделать это только один раз. Также в настоящее время он не работает на MacOS Sierra ... так что имейте это в виду.

Вот так...

Установите Карабинер

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

Запустить карабинер

Вы должны дать ему некоторые права доступа, если вы хотите, чтобы все функции.

Используйте вспомогательное приложение EventViewer для получения кодов клавиш

Откройте EventViewer для получения кодов ключей / приложений / идентификаторов устройств:

enter image description here

Перейдите на вкладку «Главная», а затем нажмите клавишу (клавиши) на клавиатуре, Bluetooth-пульт и т. Д., Который вы хотите переназначить. В этом случае вы можете видеть коды клавиш для Media-Forward и Media-Back на моем Bluetooth-пульте Satechi (который я хочу переназначить на клавиши со стрелками влево / вправо).

enter image description here

Идем дальше и «копируем на монтажную панель» и вставляем его в текстовый документ на потом. Теперь в зависимости от вашего варианта использования вы можете перейти на вкладку «Приложения» или «Устройства».

Если вы хотите ограничить переназначение ключей для определенных приложений, вам нужно создать правило сопоставления для определенного идентификатора приложения (например, Google Chrome). Таким образом, вы перейдете на вкладку приложения и получите идентификатор приложения для интересующего вас приложения (которое будет использовано позже при создании правила).

enter image description here

В моем случае я ТОЛЬКО хочу переназначить эти клавиши на моем Bluetooth-пульте Satechi и не хочу портить работу моих существующих клавиш клавиатуры ... поэтому я хочу создать правило для конкретного устройства. Итак, я иду на вкладку Устройства.

enter image description here

Заметка!!! Для приложений и устройств также следует скопировать и вставить текстовый файл, чтобы у вас были полные строки идентификаторов устройств / приложений для использования в нашем правиле.

Построение правил

Теперь, когда у вас есть коды клавиш, идентификаторы приложений и / или устройств, скопированные и вставленные в текстовый файл для последующего использования, вы можете закрыть EventViewer и вернуться к основному приложению.

Правила по умолчанию не очень интересны для нас, поэтому нам нужно создать собственное правило, но редактировать private.xml

enter image description here

Это просто запустит окно поиска, показывающее private.xml. Откройте файл private.xml в вашем любимом текстовом редакторе.

Теперь вы готовы строить правила ...

Документация по формату этого файла находится здесь: https://pqrs.org/osx/karabiner/xml.html.en

Для каждого <item>нужен минимум <name> <identifier> и <autogen>. Имя это просто имя для вас. Идентификатор также составлен вами, но должен быть уникальным. autogen - это то место, где вы указываете правило / отображение (т.е. ключ интереса должен отправлять ключи в foo bar).

Из дальнейшего интереса вы можете указать, что правило запускается только для определенных активных приложений (я думаю, что именно здесь вступают в силу права доступа MacOS ... чтобы Карабинер мог определить активное окно). Это сделано с <only>.

Также интерес (для меня), <device_only>который позволяет мне создавать правила только для конкретной клавиатуры (то есть мой сатечи bluetooth remote). Смотрите ссылку выше для более подробной информации.

Тем не мение. Используйте идентификаторы ключей, идентификаторы устройств и идентификаторы приложений, полученные из EventViewer, для создания своих пользовательских правил.

Моя выглядит так:

<?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» в левом верхнем углу. Ваши новые правила должны появиться. Установите флажки, чтобы включить правила. Проверьте, работают ли новые сопоставления клавиш должным образом.

enter image description here

Приложение определенно не является удобным для пользователя, но позволило мне точно настроить то, что я хотел, как только я понял варианты. Карабинер немного глючит ... Некоторые события перестали отображаться в окне просмотра событий, хотя правила переназначения все еще работали ... помогает перезагрузка.

Похоже, что преемник Karabiner, Karabiner-Elements, который является обязательным обновлением для более поздних версий MacOS, не видит элементы управления медиаустройства Bluetooth. Новый EventViewer вообще не регистрирует такие нажатия кнопок, но iTunes все равно запускается. :( wfaulk 6 лет назад 0