1

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

Я хотел бы использовать 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 ответ1

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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .