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