Немодальное переключение раскладок клавиатуры в OS X Yosemite

После апгрейда до OS X Yosemite 10.10.3 я обнаружил, что описанный мной раньше способ немодального переключения раскладок в OS X перестал работать, поскольку утилита changeInput, по всей видимости, несовместима с данной версией ОС. Поэтому встал вопрос: как жить дальше?

Оказалось, что проблему можно решить при помощи AppleScript — встроенного в OS X языка программирования и автоматизации.

Итак, запускаем утилиту Script Editor и создаём скрипт следующего содержания:

set theInputSource to "Russian"
tell application "System Events" to tell process "SystemUIServer"
	click (menu bar item 1 of menu bar 1 whose description is "text input")
	click menu item theInputSource of menu 1 of result
end tell

Сохраняем этот скрипт под именем Input Source - Russian.scpt. Далее создаём аналогичные скрипты для других раскладок (для этого достаточно заменить "Russian" в первой строчке на название нужной раскладки, например, "U.S." или "Ukrainian").

Теперь копируем эти скрипты в папку ~/Library/Scripts (или /Library/Scripts, это дело вкуса).

Как и в предыдущем решении, для вызова скриптов нам понадобится FastScripts или аналогичная утилита (бесплатной версии будет более чем достаточно).

После установки FastScripts автоматом подхватит нужные скрипты, нам останется только пойти в настройки и настроить горячие клавиши.

Следующий шаг: идём в системные настройки безопасности и в разделе Accessibility на закладке Privacy разрешаем управление компьютером приложениям FastScripts и Script Editor:

Теперь, по идее, всё должно заработать.

К сожалению, этот метод объективно хуже предыдущего. Он использует скрипты для управления элементами графического интерфейса системы, поэтому когда вы вызываете скрипт, он как бы «кликает» на иконку индикатора раскладок в строке меню и «выбирает» нужный пункт из раскрывшегося списка. Переключение раскладки в этом случае занимает примерно 0.2 секунды, что очень много при быстрой печати. (Пока скрипт не отработал, текстовый ввод невозможен.) Кроме того, данный способ работает только в том случае, если у вас включено отображение индикатора текущего языка ввода. Но это всё равно лучше, чем циклическое переключение раскладок по ⌘+пробел. ♦

Если вам понравился этот текст, не забудьте подписаться на обновления моего блога.

Плюсануть
Поделиться