背景信息:
我想在 Preview.app 中使用h、j、k、导航。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>