kanata

Программная реализация программируемой клавиатуры. Работает с windows, linux, macos.

Сама по себе не умеет запускаться в фоне - т.е. нужно держать открытым окно терминала с запущенной программой.

Для решения этой проблемы есть отдельная программа: 🐈‍⬛ kanata-tray

Заметки по настройкам

Kanata позволяет делать инклюды файлов конфигов, поэтому их можно структурировать и переиспользовать одни и те же части для разных клавиатур.

Например у меня выделено несколько отдельных файлов:

Файл клавиатуры

Файл для конкретной клавиатуры, описывает её физическую раскладку и логическое расположение клавиш на ней.

Для сохранения визуального вида клавиатуры удобно на каждую клавишу выделять 10 символов + 1 символ-разделитель - это позволяет с одной стороны уместить ширину клавиатуры в один экран, а с другой - давать клавишам читаемые имена, вроде @ruen_?, @th-a, @run-obs - чтобы сохранять и наглядность расположения кнопок и смысл команд.

Для смещённых кнопок так же используются смещения - т.е. если ряды на физической клавиатуре заметно сдвинуты между собой - то в конфиге тоже имеет смысл их сдвигать для сохранения наглядности.

Если есть вертикальное смещение, то применяется аналогичный подход - на каждую строку физической клавиатуры выделяется 2-3 строки экрана, пустоты заполняются пробелами и клавиши рисуются так чтобы максимально похоже повторять раскладку физической клавиатуры.

common

Общий слой - тут описывается желаемая логика. Например для homerow-mod определения целевых действий для клавиш описаны тут. И при желании поменять модификаторы местами - я их поменяю в одном месте и изменение распространится на все клавиатуры, т.к. в файлах клавиатур используются ссылки на функционал, а не закодированы сами нажатия.

Тут же описаны команды для запуска программ

ruen

Это тоже конфиг с общим функционалом. В отличие от других команд эта часть с одной стороны объёмная, а с другой - переиспользуемая без остальной части конфига, так что ей можно будет поделиться.

Описаны алиасы для русских букв и логика для ruen-символов. В раскладках клавиатур идёт только ссылка на эту реализацию.

Решение проблем запуска на MacOS

Несовместимость с карабинер-драйвером

connect_failed asio.system:61

На момент запуска (12.02.2025) с MacOS 15 совместима пререлизная версия kanata-1.8.0-prerelease-1

Не запущен карабинер-демон

connect_failed asio.system:2 

Эта проблема решается запуском уже установленного по инструкции Karabiner-драйвера.

Перед стартом kanata нужно выполнить команду:

"/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon"

Нет прав на мониторинг ввода

IOHIDDeviceOpen error: (iokit/common) not permitted

В настройках MacOS (Privacy & security/Input monitoring) выдать права программе терминала (Terminal, iTerm и т.п.), из которого запускается kanata.

Прочее

Ещё пишут, что при некоторых проблемах может помогать установка полноценного карабинера, а не только его драйвера. Я его ставил раньше, чем прочитал - так что не знаю имело ли это эффект.

Ссылки