Вопрос или проблема
Когда вы подключаете внешнюю клавиатуру на OS X, появляется мастер, который помогает выбрать раскладку клавиатуры. Эта раскладка затем каким-то образом сохраняется и автоматически повторно используется, когда вы подключаете внешнюю клавиатуру в будущем.
Кроме того, если вы используете просмотрщик клавиатуры, вы можете видеть, как раскладка клавиатуры изменяется в реальном времени в зависимости от того, какая клавиша последней была нажата.
Я пытаюсь найти способ достичь того же эффекта для источника ввода. В основном, мне нужен способ зарегистрировать источник ввода для конкретной клавиатуры и автоматически переключаться между источниками ввода при нажатии клавиши с одной или другой клавиатуры.
Я часто занимаюсь парным программированием и хотел бы, чтобы мой партнер использовал свою клавиатуру с правильной раскладкой и отображением, в то время как я использую встроенную клавиатуру на моем MacBook Pro.
Я знаю, что можно добавить “горячую клавишу” для переключения источника ввода, но это добавляет лишний шаг, когда один из пары хочет внести изменения в код (не говоря уже о том, что нам обычно также приходится менять раскладку клавиш в IDE, что делает процесс еще медленнее и неуклюже).
Если вы не знаете инструмента для этого, но у вас есть указания на ресурсы о том, как его создать, мне это тоже было бы интересно, так как мне трудно найти документацию по событиям OS X.
Поскольку я не смог найти существующий способ сделать это, я создал Autokbisw.
Autokbisw (автоматический переключатель источника ввода клавиатуры) будет запоминать последний выбранный источник ввода для каждой клавиатуры, которую он “видит”, и восстанавливать соответствующий источник ввода каждый раз, когда клавиатура становится активной. “Активная” клавиатура – это последняя клавиатура, отправившая событие ввода. Каждый раз, когда источник ввода изменяется внешне, он будет обновлять источник ввода для активной клавиатуры.
Таким образом, источник ввода работает так, как будто селектор источника ввода был специфичен для клавиатуры, а не для системы. Так же, как и раскладка клавиатуры.
Я больше не поддерживаю Autokbisw, так как у меня больше нет Mac-ноутбука. Я готов передать доступ или передать все, что нужно передать, если кто-то заинтересован. Напишите мне на GitHub.
(Также, похоже, такого инструмента не существует для Linux, и мне нужно будет изучить эти API \o/)
Ole Hüter форкнул оригинальный репозиторий и исправил сборку для более новых версий OS X. Вы можете получить работающий Autokbisw из его форка.
Autokbisw работает прекрасно!
Просто установите его с помощью brew, включите службу, и переключение клавиатуры теперь будет автоматическим.
brew install ohueter/tap/autokbisw
brew services start ohueter/tap/autokbisw
Ответ или решение
Чтобы автоматически менять источник ввода для различных клавиатур на OS X, существует решение в виде утилиты под названием Autokbisw (автоматический переключатель источника ввода клавиатуры). Этот инструмент позволяет запоминать последний выбранный источник ввода для каждой клавиатуры, которую он распознает, и восстанавливать соответствующий источник ввода каждый раз, когда клавиатура активируется. «Активная» клавиатура — это последняя клавиатура, которая отправила событие ввода.
Установка и настройка Autokbisw
-
Убедитесь, что у вас установлен Homebrew:
Homebrew — это менеджер пакетов для macOS. Если он у вас еще не установлен, можете сделать это с помощью следующей команды в терминале:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
Установите Autokbisw:
После установки Homebrew выполните следующую команду для установки Autokbisw:brew install ohueter/tap/autokbisw
-
Запустите сервис:
После установки необходимо включить сервис Autokbisw, чтобы он начинал автоматически работать:brew services start ohueter/tap/autokbisw
Как это работает
-
Запоминание источников ввода: Когда вы первый раз подключаете клавиатуру, Autokbisw запоминает выбранный вами источник ввода. При следующем подключении этой же клавиатуры программа автоматически переключает источник ввода на тот, который был ранее установлен.
-
Активная клавиатура: Программа отслеживает, какая клавиатура была использована последней для ввода, что позволяет автоматически восстанавливать соответствующий источник ввода.
Дополнительная информация
Если вы хотите внести изменения в код или улучшить проект, вы можете ознакомиться с оригинальным репозиторием на GitHub или форком от Оле Хютера, который обновил проект для работы с новыми версиями macOS.
Заключение
Autokbisw позволяет значительно упростить процесс работы с несколькими клавиатурами, особенно в ситуациях парного программирования, как это описано в вашем вопросе. С помощью этого инструмента вы сможете эффективно работать с разными источниками ввода и минимизировать количество необходимых действий при переключении между ними.