Как исправить файл 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>
Другие вопросы по тегам