Как поменять значения кнопок на клавиатуре (на Маке)

Когда у меня была писишная клавиатура, я активно пользовался цифровым блоком, который расположен справа. Но не для набора цифр, а для перемещения по тексту туда-сюда с помощью стрелок и кнопок Home/End и PgUp/PgDown. Ещё там были кнопки Enter и Del, так что можно было выполнять кучу разных действий, вообще не перемещая руку .

Для мака я специально купил полноразмерную клавиатуру с цифровым блоком, но обнаружил, что там есть только цифры. Никаких стрелок и всего остального.

Apple20Aluminium20ISO20International20English

Целый год я бился, чтобы найти способ поменять значения этих кнопок и, наконец-то, нашёл его.

Способ этот называется KeyRemap4MacBook (пусть название вас не смущает, эта программа работает со всеми маками, а не только с макбуками). Сайт программы выглядит очень красноглазо – как раз то, что мне надо!

Так выглядят окно настроек этой программки:

keyremap

Кнопка «Reload XML», упоминания Emacs и X11 сразу выдают в ней продукт, написанный программистом для программистов, а значит для меня. На скриншоте видна куча предустановок, которые можно включать и выключать галочками. Кроме этого, можно создавать свои собственные настройки, которые описываются в специальном файле private.xml. С помощью этого файла можно переназначить вообще все кнопки.

Формат этого файла достаточно простой. Значения кнопок в нём обозначаются специальными ключевыми словами, либо цифровыми кодами. Для того, чтобы узнать цифровой код конкретной кнопки, в составе программы есть утилита EventViewer (вызывается через значок программы в панели меню). Эта утилита отображает код кнопки, которую вы нажимаете в данный момент. Причём код отображается в шестнадцатеричном виде, который вам придётся самостоятельно перевести в десятичный. Ну разве не прелесть?

Ниже приведён мой файл private.xml.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0"?>
<root>    
  <item>      
    <name>Fix Numpad</name>
    <identifier>fixnumpad</identifier>

    <!-- Стрелки и кнопки Home,End,PgUp,PgDown -->
    <autogen>--KeyToKey-- KeyCode::KEYPAD_1, KeyCode::END</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_2, KeyCode::CURSOR_DOWN</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_3, KeyCode::PAGEDOWN</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_4, KeyCode::CURSOR_LEFT</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_6, KeyCode::CURSOR_RIGHT</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_7, KeyCode::HOME</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_8, KeyCode::CURSOR_UP</autogen>
    <autogen>--KeyToKey-- KeyCode::KEYPAD_9, KeyCode::PAGEUP</autogen>

    <!-- Точка на цифровом блоке работает как Del -->
    <autogen>--KeyToKey-- KeyCode::KEYPAD_DOT, KeyCode::FORWARD_DELETE</autogen>

    <!-- Сочетание Shift+0 на цифровом блоке работает как Command+V -->
    <autogen>--KeyToKey-- KeyCode::KEYPAD_0, ModifierFlag::SHIFT_L,
                          KeyCode::V, ModifierFlag::COMMAND_L</autogen>
  </item>
</root>

Как видите, различные модификаторы типа Shift, Control или Command тоже поддерживаются.


Опубликовано