安装 Karabiner

安装 Karabiner

我有一个LG 音质 (HBS 700)蓝牙立体声耳机,正在与 OS X Lion 一起使用。

耳机有一个播放/暂停切换按钮,但与键盘上的播放按钮不同,键盘上的播放按钮会在 VLC 媒体播放器(如果正在运行)中切换播放/暂停,而耳机的播放按钮会在 iTunes 尚未打开时启动它,或者在 iTunes 已打开时切换播放/暂停。它不会在任何其他媒体播放器中切换播放/暂停。

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

感谢您的帮助!

答案1

您正在寻找位于以下位置的远程控制守护进程:

/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。但是,这不会将 VLC 重新映射为按下播放时要打开的程序。它是为键盘媒体键设计的,但我相信操作系统会将您的 LG Tone 按钮视为相同的系统事件。该链接: http://lifehacker.com/5651055/free-your-macs-media-keys-from-itunes-no-manual-hacking-required

最后,我可以告诉你,Apple 尚未提供一种简单的方法来更改远程控制设置。这很不幸,因为这是一个关于键盘上的媒体键和设备上的其他控件的常见问题。他们似乎没有提供解决方案,而是在过去对操作系统进行了更改,以确保 iTunes 是此守护进程使用的程序。不幸的是,不太可能很快出现比这些更好的解决方案。

答案2

首先,您需要一个第三方键盘重新映射应用程序 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 有点问题...我有一些事件停止显示在事件查看器中,即使重新映射规则仍然有效...重新启动会有所帮助。

相关内容