Как исправить файл private.xml из приложения Karabiner для Mac OS X, чтобы включить Vim-подобную навигацию в Preview.app?

1179
Mateusz Piotrowski

Исходная информация:

Я хотел бы использовать h, j, k, lнавигацию в Preview.app.

Несколько месяцев назад я нашел решение здесь: https://apple.stackexchange.com/a/188301/127306 . Благодаря приложению Karabiner и файлу Martejn Courteaux private.xml я смог использовать hjkl в Preview.

Внезапно он перестал работать. Вероятно, из-за обновления Карабинера или Предварительного просмотра.

Вопрос:

У вас есть идея, как заставить этот .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> 

Заметки:

  • Версия Карабинера - 10.9.0.
  • Я использую OS X El Capitan, но у меня тоже была эта проблема на OS X Yosemite.
1

1 ответ на вопрос

1
Mateusz Piotrowski

д-р исправление

Изменить это:

<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>