如何修复 Mac OS X 版 Karabiner 应用程序中的 private.xml 以在 Preview.app 中启用类似 Vim 的导航?

如何修复 Mac OS X 版 Karabiner 应用程序中的 private.xml 以在 Preview.app 中启用类似 Vim 的导航?

背景信息:

我想在 Preview.app 中使用hjk、导航。l

几个月前我在这里找到了一个解决方案:https://apple.stackexchange.com/a/188301/127306。感谢 Karabiner 应用程序和 Martijn 的 Courteaux private.xml 文件,我能够在预览中使用 hjkl。

它突然停止工作了。可能是由于 Karabiner 或预览版的更新。

问题:

您知道如何让这个.xml文件工作吗?或者您知道其他解决方法?(但是我不想使用像command+这样的快捷方式j


下面的代码是private.xml我使用的文件。

<?xml version="1.0"?>
<root>
    <appdef>
        <appname>PREVIEW</appname>
        <equal>com.apple.preview</equal>
    </appdef>
    
    <item>
        <name>Vi Navigation in Preview</name>
        <identifier>private.preview.vinav</identifier>
        <only>PREVIEW</only>
        <uielementrole_not>AXTextField, AXTextArea</uielementrole_not>
        <modifier_only>
            ModifierFlag::NONE,
            ModifierFlag::SHIFT_L | ModifierFlag::NONE,
            ModifierFlag::SHIFT_R | ModifierFlag::NONE,
        </modifier_only>
        <appendix>Navigate using the HJKL keys</appendix>
        <autogen>__KeyToKey__ KeyCode::J, KeyCode::CURSOR_DOWN</autogen>
        <autogen>__KeyToKey__ KeyCode::K, KeyCode::CURSOR_UP</autogen>
        <autogen>__KeyToKey__ KeyCode::H, KeyCode::CURSOR_LEFT</autogen>
        <autogen>__KeyToKey__ KeyCode::L, KeyCode::CURSOR_RIGHT</autogen>
    </item>
</root>

笔记:

  • Karabiner 版本是 10.9.0。
  • 我正在使用 OS X El Capitan,但在 OS X Yosemite 上也遇到了这个问题。

答案1

tl;dr 修补程序

改变这个:

<appdef>
    <appname>PREVIEW</appname>
    <equal>com.apple.preview</equal>
</appdef>

更改为:

<appdef>
    <appname>PREVIEW</appname>
    <equal>com.apple.Preview</equal>
</appdef>

注意:如果它不能解决你的问题,请查看更新以下。

事情是怎样的?

原来问题是标识符预览应用程序的应该是com.apple.Preview而不是com.apple.preview

但我不知道为什么com.apple.preview不再是预览应用程序的合法标识符。要么是 Karabiner 区分大小写,要么是 Apple 决定更改标识符(这不太可能)。

不管怎样,解决办法都很简单。

如果您在使用 Karabiner 时遇到问题,可以尝试使用 Karabiner 的 EventView 并阅读手册来解决问题:一般手册私人 xml 手册

更新

此功能不久前再次停止工作。

解决方案是完全移除该<appdef>部件。成功移除后,重新启动预览应用程序和 Karabiner。

private.xml现在的样子是这样的:

<?xml version="1.0"?>
<root>
    <!-- <appdef> -->
        <!-- <appname>PREVIEW</appname> -->
        <!-- <equal>com.apple.Preview</equal> -->
    <!-- </appdef> -->
    <item>
        <name>Vi Navigation in Preview</name>
        <identifier>private.preview.vinav</identifier>
        <only>PREVIEW</only>

        <appendix>Navigate using the HJKL keys</appendix>
        <autogen>__KeyToKey__ KeyCode::J, KeyCode::CURSOR_DOWN</autogen>
        <autogen>__KeyToKey__ KeyCode::K, KeyCode::CURSOR_UP</autogen>
        <autogen>__KeyToKey__ KeyCode::H, KeyCode::CURSOR_LEFT</autogen>
        <autogen>__KeyToKey__ KeyCode::L, KeyCode::CURSOR_RIGHT</autogen>
    </item>
</root>

相关内容