如何在OS X上从蓝牙耳机重映射播放按钮的按键?


13

我有LG Tone(HBS 700)蓝牙立体声耳机,并将其与OS X Lion一起使用。

耳机具有播放/暂停切换按钮,但是与我的键盘的播放按钮不同,该按钮会在例如VLC媒体播放器正在运行时切换播放/暂停,如果耳机尚未打开,则耳机的播放按钮将启动iTunes,或者如果iTunes已打开,请在iTunes中切换播放/暂停。它不会在任何其他媒体播放器中切换播放/暂停。

有人可以解释当我按下播放键时可能触发什么系统事件吗?显然,自从iTunes启动以来,某些系统守护进程正在监听某些内容,因为它可以很好地解释播放/暂停/下一个/上一个控件...有什么方法可以拦截按键事件并重新映射其功能?我希望它具有与键盘的“播放”按钮相同的行为。

谢谢你的帮助!

Answers:


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启动。

如果您有足够的野心,可以尝试使用十六进制编辑器对其进行编辑。这超出了我的知识范围,但是我确实有两个建议。

  1. 在后台打开quicktime(只是空白,其中什么也没有)可能会阻止守护程序使用iTunes。这取决于您的设备是否使用相同的系统事件。

  2. 另外,下面的链接中有一个免费的实用程序,可以为您修补守护程序。运行它之后,守护程序将使用活动程序,而不是iTunes。但是,当您按play键时,这不会将VLC重新映射为要打开的程序。它专为键盘媒体键而设计,但我相信操作系统会将LG Tone的按钮视为同一系统事件。该链接:http : //lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

最后,我可以告诉您,Apple还没有提供一种更改远程控制设置的简单方法。这是不幸的,因为这是关于键盘上的媒体键和设备(例如您的设备)上的其他控件的常见问题。他们似乎没有提供解决方案,而是在过去对OS进行了更改,以确保iTunes是此守护程序使用的程序。不幸的是,不可能很快找到更好的解决方案。


3
根据我的经验,蓝牙设备发送播放/暂停信号以同样的方式键盘媒体键解释解释。使用上述补丁,我的键盘可以正常工作,但是我的蓝牙耳机仍在启动iTunes。只是以为我不是为了后代的缘故。
2013年

有没有建议如何在OS X Sierra中进行此更改?他们有操作系统保护系统,很难进行此类更改。
AB

3

首先,您需要一个名为Karabiner的第三方键盘重映射应用程序(以前称为KeyRemap4MacBook)。该应用程序有点用户不友好,但是从理论上讲,您只需要这样做一次。另外,它目前在MacOS Sierra上不起作用...因此请记住这一点。

开始了...

安装Karabiner

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

奔跑卡拉宾纳

如果需要所有功能,则应为其授予一些可访问性权限。

使用帮助器应用程序“ EventViewer”获取键码

打开EventViewer以获取键码/应用程序/设备ID:

在此处输入图片说明

转到“主要”选项卡,然后按要重新映射的键盘,蓝牙遥控器等上的键。在这种情况下,您可以在我的Satechi蓝牙遥控器上看到Media-Forward和Media-Back的键码(我想将其重新映射到左/右箭头键)。

在此处输入图片说明

继续并“复制到粘贴板”并将其粘贴到文本文档中以备后用。现在,根据您的用例,您可以转到“应用程序”或“设备”选项卡。

如果要将密钥重新映射限制为特定的应用程序,则需要创建一个针对特定应用程序ID(例如google chrome)的映射规则。因此,您将转到“应用程序”标签,并获取您感兴趣的应用程序的应用程序ID(稍后在我们创建规则时使用)。

在此处输入图片说明

以我为例,我只想在我的Satechi蓝牙遥控器上重新映射这些键,并且不想弄乱现有键盘键的工作方式...所以我想制定特定于设备的规则。因此,我转到“设备”标签。

在此处输入图片说明

注意!!!对于应用程序和设备,您还应该复制并粘贴到文本文件中,以便拥有完整的设备/应用程序ID字符串供我们的规则使用。

建立规则

现在您已经复制了键码,应用程序和/或设备ID并将其粘贴到文本文件中以供以后参考,您可以关闭EventViewer并返回到主应用程序。

默认规则对我们来说不是很有趣,因此我们需要创建一个自定义规则,但需要进行编辑 private.xml

在此处输入图片说明

这将仅启动一个显示private.xml的查找器窗口。继续并在您喜欢的文本编辑器中打开private.xml。

现在您准备建立规则了...

有关此文件格式的文档位于:https : //pqrs.org/osx/karabiner/xml.html.en

对于每个,<item>您都需要最低 <name> <identifier><autogen>。名称只是您的名字。标识符也由您组成,但应该唯一。autogen是您指定规则/映射的位置(即,感兴趣的键应将键发送给foo bar)。

您还可以指定仅对特定的活动应用程序运行规则(我认为这是MacOS可访问性权限发挥作用的地方,因此Karabiner可以确定活动窗口)。这是用<only>

(对我而言)也很有趣,<device_only>它使我可以为特定键盘(即我的satechi蓝牙遥控器)制定规则。有关更多详细信息,请参见上面的链接。

无论如何。使用从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蓝牙远程设备。“下一个”媒体按钮映射到右箭头,“上一个”媒体按钮映射到左箭头。适用于所有应用程序。

加载规则

保存您的XML文件。返回Karabiner应用程序。转到“更改密钥”选项卡。点击左上方的“重新加载XML”。您的新规则现在应该显示出来。选中复选框以启用规则。测试您的新键映射是否按预期工作。

在此处输入图片说明

该应用程序绝对不是用户友好的,但是一旦我理解了这些选项,我就能很轻松地准确设置我想要的东西。Karabiner有点漏洞...即使重新映射规则仍在起作用,事件查看器中仍然出现一些事件停止...重新启动帮助。


1
似乎是Karabiner的后继产品Karabiner-Elements,这是MacOS的最新版本的必需升级,看不到蓝牙媒体设备控件。新的EventViewer根本不注册此类按钮,但是iTunes仍然可以启动。:(
wfaulk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.