Как я могу переназначить нажатие кнопки воспроизведения с гарнитуры Bluetooth на OS X?
У меня есть стереогарнитура LG Tone (HBS 700) Bluetooth, и я использую ее с OS X Lion.
На гарнитуре есть кнопка переключения воспроизведения / паузы, но в отличие от кнопки воспроизведения моей клавиатуры, которая будет переключать воспроизведение / паузу, скажем, для медиаплеера VLC, если он работает, кнопка воспроизведения на гарнитуре запустит iTunes, если она еще не открыта, или включить / выключить воспроизведение в iTunes, если оно уже открыто. Он не будет переключать воспроизведение / паузу в любом другом медиаплеере.
Может кто-нибудь объяснить, какое системное событие, вероятно, вызывается, когда я нажимаю кнопку воспроизведения? Понятно, что какой-то системный демон что-то слушает, так как iTunes запускается и может очень хорошо интерпретировать элементы управления play/pause/next/prev... Есть ли способ перехватить событие нажатия клавиши и переназначить его функцию? Я бы хотел, чтобы оно имело то же поведение, что и кнопка воспроизведения на клавиатуре.
Спасибо за вашу помощь!
2 ответа
Вы ищете Демон дистанционного управления, расположенный в:
/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
Начни это.
Если у вас достаточно амбиций, вы можете попробовать отредактировать его с помощью шестнадцатеричного редактора. Это за пределами моей области знаний, но у меня есть два предложения.
Открытие quicktime (просто пустое, ничего в нем) в фоновом режиме может помешать демону использовать iTunes. Это зависит от того, использует ли ваше устройство одно и то же системное событие.
Кроме того, по следующей ссылке есть бесплатная утилита, которая исправляет демона для вас. После его запуска демон будет использовать активную программу вместо iTunes. Однако это не будет переназначать VLC как программу, которая будет открыта при нажатии кнопки воспроизведения. Он предназначен для мультимедийных клавиш клавиатуры, но я полагаю, что ОС видит кнопку вашего LG Tone как то же системное событие. Эта ссылка: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required
Наконец, я могу сказать вам, что Apple еще не предоставила простой способ изменить настройки удаленного управления. Это вызывает сожаление, так как это общий вопрос относительно клавиш мультимедиа на клавиатурах и других элементов управления на таких устройствах, как ваше. Вместо того, чтобы предлагать решение, кажется, что в прошлом они вносили изменения в ОС, чтобы гарантировать, что iTunes - это программа, используемая этим демоном. К сожалению, вряд ли будет лучшее решение, чем это в ближайшее время.
Для начала вам понадобится стороннее приложение для переназначения клавиатуры под названием Karabiner (ранее KeyRemap4MacBook). Приложение немного неудобно для пользователя, но в теории вам нужно сделать это только один раз. Также в настоящее время он не работает на MacOS Sierra... так что имейте это в виду.
Вот так...
Установите Карабинер
https://pqrs.org/osx/karabiner/index.html.en
Запустить карабинер
Вы должны дать ему некоторые права доступа, если вы хотите, чтобы все функции.
Используйте вспомогательное приложение EventViewer для получения кодов клавиш
Откройте EventViewer для получения кодов ключей / приложений / идентификаторов устройств:
Перейдите на вкладку "Главная", а затем нажмите клавишу (клавиши) на клавиатуре, Bluetooth-пульт и т. Д., Который вы хотите повторно сопоставить. В этом случае вы можете видеть коды клавиш Media-Forward и Media-Back на моем Bluetooth-пульте Satechi (который я хочу переназначить на клавиши со стрелками влево / вправо).
Идем дальше и "копируем на монтажную панель" и вставляем его в текстовый документ на потом. Теперь в зависимости от вашего варианта использования вы можете перейти на вкладку "Приложения" или "Устройства".
Если вы хотите ограничить переназначение ключей для определенных приложений, вам нужно создать правило сопоставления для определенного идентификатора приложения (например, Google Chrome). Таким образом, вы перейдете на вкладку приложения и получите идентификатор приложения для интересующего вас приложения (которое будет использовано позже при создании правила).
В моем случае я ТОЛЬКО хочу переназначить эти клавиши на моем Bluetooth-пульте Satechi и не хочу портить работу моих существующих клавиш клавиатуры... поэтому я хочу создать правило для конкретного устройства. Итак, я иду на вкладку Устройства.
Заметка!!! Для приложений и устройств вы также должны скопировать и вставить текстовый файл, чтобы у вас были полные строки идентификаторов устройств / приложений для использования в нашем правиле.
Построение правил
Теперь, когда у вас есть коды клавиш, идентификаторы приложений и / или устройств, скопированные и вставленные в текстовый файл для последующего использования, вы можете закрыть EventViewer и вернуться к основному приложению.
Правила по умолчанию не очень интересны для нас, поэтому нам нужно создать собственное правило, но редактировать private.xml
Это просто запустит окно поиска, показывающее private.xml. Откройте файл private.xml в вашем любимом текстовом редакторе.
Теперь вы готовы строить правила...
Документация по формату этого файла находится здесь: https://pqrs.org/osx/karabiner/xml.html.en
Для каждого <item>
тебе нужен минимум <name>
<identifier>
а также <autogen>
, Имя это просто имя для вас. Идентификатор также составлен вами, но должен быть уникальным. autogen - это то, где вы указываете правило / отображение (т. е. ключ интереса должен посылать ключи foo bar).
Из дальнейшего интереса вы можете указать, что правило запускается только для определенных активных приложений (я думаю, что именно здесь вступают в силу права доступа MacOS... чтобы Карабинер мог определить активное окно). Это сделано с <only>
,
Также интерес (для меня) <device_only>
что позволяет мне сделать правило только для конкретной клавиатуры (т.е. мой сатечи блютуз пульт). Смотрите ссылку выше для более подробной информации.
Тем не мение. Используйте идентификаторы ключей, идентификаторы устройств и идентификаторы приложений, полученные из 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. Вернитесь к приложению Карабинер. Перейдите на вкладку "Изменить ключ". Нажмите "Обновить XML" в левом верхнем углу. Ваши новые правила должны появиться. Установите флажки, чтобы включить правила. Проверьте, работают ли новые сопоставления клавиш должным образом.
Приложение определенно не удобно для пользователя, но позволило мне довольно точно настроить то, что я хотел, как только я понял варианты. Карабинер немного глючит... Некоторые события перестали отображаться в средстве просмотра событий, хотя правила переназначения все еще работали... помогает перезагрузка.