Как исправить файл private.xml из приложения Karabiner для Mac OS X, чтобы включить Vim-подобную навигацию в Preview.app?
Исходная информация:
Я хотел бы использовать h, j, k, l навигацию в Preview.app.
Несколько месяцев назад я нашел решение здесь: https://apple.stackexchange.com/a/188301/127306. Благодаря приложению Karabiner и файлу Martejn Courteaux private.xml я смог использовать hjkl в Preview.
Внезапно он перестал работать. Вероятно, из-за обновления Карабинера или Предварительного просмотра.
Вопрос:
У вас есть идеи, как это сделать? .xml
файловая работа? Или, может быть, вы знаете некоторые другие обходные пути? (Однакоя не хочу использовать такие ярлыки, как команда+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>
Заметки:
- Карабинер версия 10.9.0.
- Я использую OS X El Capitan, но у меня была эта проблема и в OS X Yosemite.
1 ответ
д-р исправление
Изменить это:
<appdef>
<appname>PREVIEW</appname>
<equal>com.apple.preview</equal>
</appdef>
к этому:
<appdef>
<appname>PREVIEW</appname>
<equal>com.apple.Preview</equal>
</appdef>
Примечание: если это не решит вашу проблему, посмотрите обновление ниже.
В чем дело?
Оказывается, проблема в том, что идентификатор приложения Preview должен быть com.apple.Preview
и не com.apple.preview
,
Я не знаю, однако, почему com.apple.preview
перестал быть юридическим идентификатором приложения Preview. Либо Карабинер стал чувствительным к регистру, либо Apple решила изменить идентификатор (что маловероятно).
Так или иначе, решение довольно простое.
Если у вас есть какие-то проблемы с Karabiner, вы можете попытаться устранить проблему, используя EventView Karabiner и прочитав руководства: общее руководство, личное руководство xml.
Обновить
Эта функция перестала работать еще некоторое время назад.
Решение состоит в том, чтобы удалить <appdef>
часть полностью. После успешного удаления перезапустите приложение Preview и 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>