Настриваем внешнюю клавиатуру на MacOS


В MacOS есть встроенная утилита, которая позволяет переназначать клавиши. Называется она hidutil.

Для того чтобы поменять кнопки местами, достаточно ввести простую команду в терминале. Команду я не скажу, потому что на самом деле не имеет смысла ее вводить, так как после перезагрузки компьютера всё сбросится обратно. Гораздо эффективнее сделать автоматизацию, которая будет запускаться при старте системы с помощью встроенных средств MacOS.

Находим устройство

Начнем с начала. Для того, чтобы назначить смену кнопок для конкретной клавиатуры, то нужно найти ее ID. Вводим в терминал команду:

hidutil list

В списке ищем нужную клавиатуру. У меня она называлась просто: USB Device.

Если терминал — это не твоё, или клавиатура не нашлась, то есть и более простой способ: Тыкаем на яблочко (в верхнем левом углу) → Об этом мак → Подробнее → Отчет о системе → USB → Ищем наше устройство

В результате нужно получить ID устройства в формате 0x0102

Настройка скрипта

На сайте https://hidutil-generator.netlify.app/ можно выбрать какие кнопки на какие менять и он автоматом сгенерирует нужный код скрипта. Нужно его доработать. Добавляем в скрипт после строки с property следующий код

<string>--matching</string>
<string>{"ProductID":0x0102}</string>

где 0х0102 — это ID клавиатуры из предыдущего шага.

В результате получаем такой вот текст:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.KeyRemapping</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--matching</string>
        <string>{"ProductID":0x0102}</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[
            {
              "HIDKeyboardModifierMappingSrc": 0x7000000E3,
              "HIDKeyboardModifierMappingDst": 0x7000000E2
            },
            {
              "HIDKeyboardModifierMappingSrc": 0x7000000E2,
              "HIDKeyboardModifierMappingDst": 0x7000000E3
            }
        ]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Его сохраняем в файл с названием com.local.KeyRemapping.plist в папочку ~/Library/LaunchAgents/

Теперь перезагружаем компьютер и наслаждаемся печатью.