Переключиться на конкретный источник входного сигнала


23

В Mac OS X есть сочетания клавиш для переключения между активированными источниками ввода.

альтернативный текст

Можно ли переключиться на определенный язык? Поэтому, если у вас есть 3 метода ввода, вы можете использовать 3 комбинации клавиш: Ctrl-1для английского, Ctrl-2для испанского и Ctrl-3для русского.


Раскладка клавиатуры и язык интерфейса независимы. А поскольку язык интерфейса применяется только после перезапуска программы, все, что вы получите с помощью ярлыка, будет в любом случае отменено требованием перезапуска приложений.
Даниэль Бек

Меня не интересует изменение языков интерфейса. Интересны только языки ввода.
Nikem

Я упорядочил и уточнил ваш вопрос. Пожалуйста, вернитесь, если вы думаете, что я сделал что-то не так (я новичок в этом).
Даниэль Бек

Ответы:


7

Представляю вам самое уродливое «решение»:

  • Включить поддержку вспомогательных устройств в Системные настройки »Универсальный доступ ,
  • и отображение меню «Источники ввода» в меню в Системных настройках »Язык и текст .
  • Убедитесь, что ярлык Ctrl-F8определен для перемещения фокуса к меню состояния в Системных настройках »Клавиатура» Сочетания клавиш »Клавиатура и ввод текста .
  • Убедитесь, что меню «Источники ввода» - это крайний левый элемент меню, который можно перемещать, перетаскивая, удерживая Cmdнажатой.

Используйте AppleScript Editorи напишите три сценария, каждый из которых со следующим кодом:

tell application "System Events"
    key code 100 using control down # press Ctrl-F8
    delay 0.5 # wait a bit, UI might be slow
    key code 125 # press down to open the menu
    keystroke "german" # name of your desired language, in my case tested using German
    key code 36 # press enter
end tell

Сохраните один раз для каждого языка, переключив название языка. Если вы хотите нажать разные клавиши или назначить что-то другое Ctrl-F8, замените их здесь кодами клавиш . Вы также можете переместить меню источников входного сигнала из крайнего левого положения, вставив несколько нажатий клавиш со стрелками вправо .

Вызывайте сценарии по своему усмотрению, например, используйте панель запуска приложений (Quicksilver, Launchbar и т. Д.) Или оборачивайте их в Службы с помощью Automator и назначайте им сочетания клавиш в Системных настройках »Клавиатура» Сочетания клавиш »Службы .


1
@ Nikem Это сработало?
Даниэль Бек

1
Да, это сработало.
Nikem

1
Анда, Даниэль, хотя я выбрал другое решение, тем не менее, спасибо за то, что познакомили меня с Action Script and Services :)
Nikem

@Nikem Не за что. Пожалуйста, проголосуйте за мой ответ, нажав «треугольник со стрелкой вверх» рядом с ним, если вы найдете этот ответ полезным. Вы также можете принять ответ (указав, что это тот ответ, который вам больше всего нравится, и считаете, что ваша проблема решена), нажав на отметку рядом с ним. Кстати, ActionScript - это Adobe, это AppleScript.
Даниэль Бек

@ Даниэль На самом деле, я не знаю, какой ответ рекомендовать. Я выбрал свой, но ваш более широко используется ...
Nikem

12

Я придумал более приятное решение в AppleScript, учитывая, что вы знаете название раскладки клавиатуры, на которую хотите переключиться. Создайте такую ​​функцию:

on changeKeyboardLayout(layoutName)
 tell application "System Events" to tell process "SystemUIServer"
   tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item layoutName)}
 end tell
end changeKeyboardLayout

а затем позвоните по

 changeKeyboardLayout("English")
 changeKeyboardLayout("German")

Имейте в виду, что имена раскладок клавиатуры локализованы, т.е. в немецкой системе приведенный выше пример должен будет вызывать «Englisch» и «Deutsch».


Определенно лучше, чем у меня. Я действительно должен изучить мой AppleScript должным образом.
Даниэль Бек

это работало отлично в течение многих лет, но с Каталиной кажется, что «ввод текста» больше не доступен в строке меню
Франк Миттельбах

6

Одним из вариантов будет загрузка changeInput и назначение ярлыков для команд оболочки, таких как changeInput U.S..

Вы также можете использовать KeyRemap4MacBook:

<?xml version="1.0"?>
<root>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</name>
    <inputsourceid_equal>com.apple.inputmethod.Kotoeri.Japanese</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <item>
    <name>change_inputsources</name>
    <identifier>change_inputsources</identifier>
    <autogen>__KeyToKey__ KeyCode::E, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_ENGLISH</autogen>
    <autogen>__KeyToKey__ KeyCode::H, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</autogen>
  </item>
</root>

Смотрите документацию private.xml .

VK_CHANGE_INPUTSOURCE_ENGLISH определяется в vkchangeinputsourcedef.xml . Вы можете увидеть идентификаторы источников входных данных из EventViewer.app. Без, | ModifierFlag::NONEнапример, первый параметр будет также применяться к option-command-E. См. Источник для значений кода ключа и предопределенных настроек .


4

Я знаю, что это старый вопрос. Но даже в конце 2016 года я все еще не нашел простого и приятного решения. Поэтому я сделал IMEShortcuts , работает на Sierra. Вы можете назначить индивидуальный ярлык для любого конкретного метода ввода. Пожалуйста, дайте ему шанс. И если вы, ребята, найдете какие-либо ошибки, я был бы рад помочь.

Кроме того, Karabiner (известный как KeyRemap4MacBook) является отличным настройщиком клавиатуры для Mac. Но это немного сложно и в настоящее время сломано на Сьерре. Если вы используете Yosemite или El Capitan, это был бы еще один хороший выбор.


Спасибо за IMEShortcuts! Это очень здорово. Я с радостью заплатил бы за это около 5 долларов, если бы вы добавили значки в меню, чтобы показать активный язык (поэтому мне не нужно иметь ОБА IMEshortcuts и значок приложения в моей строке меню, занимающий место). Я также хотел бы иметь возможность настроить используемый значок - например, я хочу использовать канадский французский ввод, потому что он ближе к американскому QWERTY, но я хочу видеть французский флаг, потому что канадский флаг не символизирует «французский» для меня. Те вещи сделали бы это удивительным!
иконоборчество

Слово предупреждения: если вы еще не загружали IMEShortcuts в прошлом (до того, как истек срок регистрации домена и его заменила страница сквоттера с вредоносным расширением Chrome), не берите что-нибудь с rockcell.com, пока это не будет устранено.
экманавт

1

У меня есть другое решение, которое удовлетворило меня больше всего. KeyRemap4MacBook - это приложение, которое позволяет переназначать кнопки клавиатуры. Помимо прочего, он допускает некоторую, но не исчерпывающую поддержку смены языка. Так что у нас какая-то нестандартная конфигурация, она делает то, что я хочу.

Минусы: - стороннее приложение - только ограниченная языковая поддержка

Плюсы: - Концептуально немного приятнее, чем запуск скриптов в интерфейсе.


Я не нашел ничего, связанного с гибким использованием источников ввода на веб-сайте, только некоторые жестко запрограммированные действия, связанные с русским / английским языками. Можете ли вы уточнить?
Даниэль Бек

Это не гибкий. Просто так получается, что он поддерживает переключение на английский и русский (а теперь и эстонский), которые мне нужны. И это позволяет вам сопоставить произвольные комбинации клавиш с этими действиями. Переключение на язык в моем случае.
Nikem

Мне трудно найти, как настроить это с Карабинером.
Иван Балашов

1

В AppleScript вы должны взять только cmd + «пробел» (или что-то другое, что вы меняете источник клавиатуры).

И все, что вам нужно:

    key code 49 using command down

49 - код кнопки «пробел» в ASCII для AppleScript.

PS: не забудьте получить доступ к вашей утилите AppleScript в Системных настройках.


1

Найдено Kawa - довольно простое приложение, чтобы удовлетворить именно ваши потребности. Сочетания клавиш для непосредственного переключения на нужный источник входного сигнала.


1
Добро пожаловать в Супер пользователя. Пожалуйста, прочтите Как рекомендовать программное обеспечение, затем отредактируйте свой ответ, включив в него хотя бы минимально необходимую информацию (элементы выделены жирным шрифтом ). Сообщения без этой информации могут быть удалены. Спасибо за помощь.
Я говорю Восстановить Монику

0

По этой ссылке есть видео о том, как это сделать. У него уже есть горячий пирог с «команда + пробел», но горячая клавиша прожектора также «команда + пробел». Подчеркните, что горячая клавиша перезаписана, поэтому переключение языка не происходит. Видео в ссылке покажет вам, как изменить горячую клавишу, чтобы вы могли переключать горячую клавишу.

Удачи,


1
Он уже знает, как переключаться между языками, он хочет переключиться на конкретный , так как он, вероятно, активировал более двух.
Даниэль Бек

Да, именно так, как сказал Даниэль. У меня есть 3 языка ввода, и мне нужно выбрать конкретный.
Nikem

Извините ... Должно быть, я неправильно понял вопрос. Я думал, что вы пытаетесь найти способ переключаться между языками с помощью горячих клавиш.
Дэвид
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.