Как показать или скрыть Keyboard Viewer с помощью сочетания клавиш?

14

Я хотел бы отобразить и скрыть средство просмотра клавиатуры с помощью ярлыка.

  • Есть ли способ отобразить Keyboard Viewer через сочетание клавиш?
  • Есть ли способ автоматически отображать программу просмотра клавиатуры после переключения на определенный язык?
Render
источник
Идеальным решением было бы назначить сочетание клавиш для Apple Script, который показывает клавиатуру.
duci9y

Ответы:

13

Запустите программу просмотра клавиатуры со службой (Улучшенный)

Вы можете запустить Keyboard Viewer с помощью ярлыка, используя Automator и функциональность OS X Services.

Программа Keyboard Viewer живет по адресу /System/Library/Input Methods/KeyboardViewer.app (в версиях до Lion, это может быть в /System/Library/Components/KeyboardViewer.component/Contents/SharedSupport/KeyboardViewerServer.app ). Вы открываете его с помощью горячей клавиши, используя Automator, чтобы создать простой сервис запуска.

  1. Откройте Automator и выберите обслуживание как тип вашего нового документа.
  2. Установите параметры (в верхней части области рабочего процесса) на «Служба получает нет ввода в любое приложение ».
  3. Добавить Запустите AppleScript действие в вашем рабочем процессе и замените текст следующими строками:

    if application "KeyboardViewer" is running then
        quit application "KeyboardViewer"
    end if
    
    activate application "KeyboardViewer"
    
    -- wait until the window has been closed, then end the KeyboardViewer process
    set numberOfWindows to 1
    repeat until numberOfWindows = 0
        delay 5
        tell application "System Events"
            tell process "KeyboardViewer"
                set numberOfWindows to count windows
            end tell
        end tell
    end repeat
    quit application "KeyboardViewer"
    
  4. Сохранить с именем типа «Открыть просмотрщик клавиатуры», затем откройте Настройки клавиатуры к Горячие клавиши Вкладка. Выбрать Сервисы на левой панели и прокрутите вниз, где вы должны увидеть название вашей службы под общим разделом.
  5. Убедитесь, что флажок установлен, чтобы включить его, затем выберите его и нажмите Добавьте ярлык установить горячую клавишу.
  6. После установки горячей клавиши откройте меню «Службы» в любом приложении (например, «Finder»> «Службы») и закройте его. По какой-то причине моя горячая клавиша не работала, пока я не сделал это.

Пара замечаний:

  • Сценарий требует, чтобы вы проверили Включить доступ для вспомогательных устройств поле на панели настроек универсального доступа ,
  • Закрытие окна Keyboard Viewer на самом деле не приводит к выходу из приложения, и, как указывает Lri, это может быть немного затормозило, repeat Цикл проверяет каждые 5 секунд, есть ли у Keyboard Viewer какие-либо открытые окна, и если нет, завершает процесс.
  • Если вы используете ОС до Lion, вы может нужно заменить экземпляры KeyboardViewer с KeyboardViewerServer, У меня нет ничего пред-львиного, чтобы проверить это (если бы кто-то еще мог сообщить об этом в комментариях, это было бы здорово.
  • Поскольку сценарий повторяется до тех пор, пока не будет закрыто средство просмотра клавиатуры, значок вращающейся шестерни Automator будет отображаться в строке меню до его закрытия.
robmathers
источник
ДА! Это именно так за то, что я ищу. Я знаком с automator и shell-скриптингом, нужна только подсказка. Большое спасибо... :)
jm666
Я обновил это с помощью Applescript, который запускает проверку, чтобы увидеть, было ли окно закрыто, и если это так, выходит из процесса, чтобы избежать снижения производительности. Любой, кто интересуется старой версией на основе bash, может найти эту ревизию Вот ,
robmathers
С минимальными изменениями этот скрипт переключение зритель. Замените «end if» на «else» и переместите «else if» в конец.
AdamAL
Отличное решение. Однако пункт меню «Показать средство просмотра клавиатуры» не знает, что средство просмотра клавиатуры работает? Так что этот вид ломает этот пункт меню, если вы используете оба из них.
Matt Sephton
4

Плагин Extra Scripts из ртуть предлагает эту функциональность, предоставляя Показать Keyboard Viewer.scpt ,

Кроме того, когда вы создаете Quicksilver Trigger для Показать Keyboard Viewer.scpt с действием Бежать , тогда вы получите глобальную горячую клавишу Keyboard Viewer.

Вот источник сценария:

property theApplication : "KeyboardViewer"
property thePath : "/System/Library/Input Methods/KeyboardViewer.app"

set HFSPath to ((POSIX file thePath) as string)
tell application "System Events" to ¬
    set isRunning to 0 < (count (application processes whose name is theApplication))
if isRunning then
    tell application HFSPath to quit
else
    ignoring application responses
        tell application HFSPath to activate
    end ignoring
end if

Если KeyboardViewer открывается с помощью AppleScript или с open и главное окно закрыто, процесс просмотра клавиатуры остается открытым и использует около 0-20% ЦП.

mach
источник
Я обычно не люблю устанавливать сторонние приложения для простых сценариев, но это исключение , :) Большое спасибо, работаю как шарм. ;)
jm666
Если вы хотите избежать стороннего программного обеспечения, я только что опубликовал ответ, который будет делать то же самое со встроенным программным обеспечением.
robmathers
sry mach, @CanuckSkier опубликовал ответ, что мне нравится больше, так что принимаю его ответ. +1 в любом случае для QuickSilver. ;)
jm666
4

Рад, что нашел эту ветку. Основываясь на ответах выше, я создал скрипт расширения Alfred, который переключает Keyboard Viewer.

https://dl.dropbox.com/u/29440342/linkedFiles/Keyboard%20Viewer.alfredextension

Он предоставляет ключевое слово alfred «kv», которое включает и выключает Keyboard Viewer, выполнив следующий appleScriptcript:

-- adapted from http://apple.stackexchange.com/a/62532
if application "KeyboardViewer" is running then
    quit application "KeyboardViewer"
else
    activate application "KeyboardViewer"
end if

(*
-- adapted from http://apple.stackexchange.com/a/59986
tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 where description is "text input") of menu bar 1
        click
        click (menu item 1 where title ends with "Keyboard Viewer") of menu 1
    end tell
end tell
*)
-- icon ripped from osx /System/Library/PreferencePanes Keyboard.prefPane/Contents/Resources/Keyboard.icns

Я оставил альтернативную реализацию закомментированной, на случай, если возникнут проблемы с производительностью, которых она должна была избежать.

Dergachev
источник
1
Неработающей ссылке. Не могли бы вы опубликовать это снова. Это рабочий процесс Альфреда, который я бы использовал.
ddaa
Итак, я переопределил это (а также добавил сочетание клавиш Cmd + Alt + Ctrl + Shift + K): packal.org/workflow/toggle-keyboard-viewer-0
Matt Sephton
3

Я нашел способ через BetterTouchTool сделать следующее:

  • Активируйте Просмотрщик клавиатуры с помощью ярлыка
  • Закрыть Keyboard Viewer другим ярлыком
  • Переключить средство просмотра клавиатуры одним сочетанием клавиш (нет необходимости в двух предыдущих)
  • Я также загрузил AppleScript для удобства

Платформа: rMBP Mountain Lion OSX 10.8


Активируйте Просмотрщик клавиатуры с помощью ярлыка

  • Запустить BetterTouchTool
  • Добавить сочетание клавиш
  • Добавить предопределенное действие & gt; & gt; Открыть приложение / файл / скрипт ...
  • Перейдите к Macintosh HD / Система / Библиотека / Методы ввода /
  • Выберите KeyboardViewer

Теперь у вас есть сочетание клавиш для активации средства просмотра без дополнительного скрипта.

ОДНАКО, я заметил, что нажатие красной кнопки X на самом деле не закрывает приложение, что означает, что просмотрщик клавиатуры будет активирован только один раз. Поэтому вам нужно создать скрипт для выхода из программы.

Чтобы решить эту проблему:


Закрыть Keyboard Viewer другим сочетанием клавиш

  • Открыть Automator
  • Выберите приложение в качестве типа документа
  • Добавить RunAppleScript
  • Где это говорит (* Ваш сценарий идет сюда *), замените его на quit application "KeyboardViewer"
  • Скомпилируйте и сохраните как в документах или где угодно (я переместил его в то же место, что и KeyboardViewer)
  • Открыть BetterTouchTool
  • Добавить сочетание клавиш
  • Добавить предопределенное действие & gt; & gt; Открыть приложение / файл / скрипт ...
  • Найдите файл приложения, который вы только что сохранили

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

РЕДАКТИРОВАТЬ

Я нашел способ переключить просмотрщик клавиатуры!


ПЕРЕКЛЮЧАТЕЛЬ КЛАВИАТУРЫ одним нажатием клавиши

тот же процесс, что и раньше, но код изменен:

  • Открыть Automator
  • Выберите приложение в качестве типа документа
  • Добавить RunAppleScript
  • Где это говорит (* Ваш сценарий идет сюда *), замените его на
  if application "KeyboardViewer" is running then
      quit application "KeyboardViewer"
  else
      activate application "KeyboardViewer"
  end if
  • Скомпилируйте и сохраните как в документах или где угодно (я переместил его в то же место, что и KeyboardViewer)
  • Открыть BetterTouchTool
  • Добавить сочетание клавиш
  • Добавить предопределенное действие & gt; & gt; Открыть приложение / файл / скрипт ...
  • Найдите файл приложения, который вы только что сохранили

Теперь Keyboard Viewer переключается, и вам даже не нужно назначать несколько сочетаний клавиш!


Ссылка для AppleScript

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

Ссылка на файл: https://www.box.com/s/e2461c91e30e0af025e7


Надеюсь, это поможет кому-нибудь, так же, как и мне :)

Render
источник
фантастика!! Я думал, что добавление приложения keyboardViewer непосредственно в мой индекс панели запуска будет хорошей заменой для моих целей, но нет никакой возможности закрыть kbv после его запуска! так что вы не можете вызвать его во второй раз - странно. в любом случае ваш сценарий работает на удовольствие! (Я должен был сохранить его как скрипт / запустить только для того, чтобы он работал на меня.) Tx!
ptim
@memeLab Рад, что это сработало для вас :)
Render
3

Это также будет работать после закрытия главного окна, нажав кнопку закрытия:

if application "KeyboardViewer" is running then
    tell application "System Events" to number of windows of process "KeyboardViewer"
    if result is 0 then
        quit application "KeyboardViewer"
        delay 0.1
        launch application "KeyboardViewer"
    else
        quit application "KeyboardViewer"
    end if
else
    launch application "KeyboardViewer"
end if

Если Клавиатура открывается с помощью AppleScript или open -a KeyboardViewer и главное окно закрыто, процесс остается открытым и использует около 0-15% ЦП. Это не происходит при выборе Show Keyboard Viewer из меню ввода. Так что лучше выбрать пункт меню:

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 where description is "text input") of menu bar 1
        click
        click (menu item 1 where title ends with "Keyboard Viewer") of menu 1
    end tell
end tell

Оба сценария требуют, чтобы доступ к вспомогательным устройствам был включен на панели настроек доступности.

Lri
источник
2

Это не однократный ярлык, а решение, не связанное с мышью. сноска + Ctrl + F8 сосредоточиться на Меню статуса значки в правой части строки меню. ( Раздел 4 )

enter image description here

Стрелки переместят вас к значку «Настройки клавиатуры» и опциям «Показать / Скрыть». Когда вы вводите сноска + Ctrl + F8 значок, расположенный слева от значков «Меню состояния», которые находятся в правой части строки меню, будет выделен. Как только он выбран, затем используйте Стрелка вправо → перейти к тому, что вы хотите. Использовать Стрелка вниз ↓ открыть меню и выбрать нужный вариант. Обратите внимание, что вариант Клавиша сделает различные пункты меню доступными в некоторых «меню состояния».

enter image description here

Отметить, сноска + Ctrl + F2 активирует значок меню Apple  с левой стороны. Оттуда Стрелка вправо → даст вам доступ к меню приложения. Эти параметры доступны в Системных настройках & gt; & gt; Клавиатура & gt; & gt; Ярлыки :: Клавиатура:

enter image description here

В зависимости от того, как у вас настроены функциональные клавиши, сноска необязательно.

enter image description here

В macOS Sierra вы также можете использовать Siri, чтобы помочь с этим. Вызывайте Siri с помощью любого сочетания клавиш, которое вы выберете в Системных настройках & gt; & gt; Siri :: Сочетание клавиш, например вариант + Пробел

enter image description here

... затем скажите «Включите Keyboard Viewer»

enter image description here

... и вуаля:

enter image description here

К сожалению, Siri не закроет Keyboard Viewer и не будет Command⌘ + вес

Mr. Kennedy
источник
0

Вы можете сделать все, что Automator:

  1. Откройте Automator и выберите «Приложение»
  2. в верхней части библиотеки найдите «Запустить приложение», дважды щелкните его
  3. выберите «другое» и перейдите к файлу KeyboardViewer в / Система / Библиотека / Методы ввода
  4. Сохранить с именем, как «Пуск клавиатура». Попробуй это.

Следующая часть должна закрыть клавиатуру:

  1. Откройте Automator и выберите «Приложение»
  2. в верхней части библиотеки найдите «Выход из приложения», дважды щелкните по нему
  3. выберите «другое» и перейдите к файлу KeyboardViewer в / Система / Библиотека / Методы ввода

  4. Сохранить с именем, как «выйти из клавиатуры». Попробуй это.

Теперь у вас будет два файла: один для открытия, другой для закрытия.

все, что вам нужно, это связать свои кнопки мыши, чтобы запустить эти два файла!

Например, я использую Microsoft Bluetooth Notebook Mouse 5000 и это

отлично работает для меня в 10.9.1

Eugene Nogalsky
источник
0

Монитор активности, KeyboardViewer.app запускается из

Местоположение искателя: / Система / Библиотека / Методы ввода / KeyboardViewer.app ,

Нормальное использование: открыт с Строка меню , закройте курсор мыши, чтобы просмотреть кнопки окна, где (х) закрыть кнопка может быть нажата. Включить Строка меню панель, Системные настройки , клавиатура , клавиатура выберите вкладку Показать Клавиатуру и Emoji Viewers в строке меню ,

Апплет KeyboardViewer демонстрирует ограниченное поведение.

  1. Окно апплета не реагирует на ⌘-Q , ⌘-W ,
  2. Как ни странно, при открытии из папки Методы ввода , затем Activity Monitor показывает, что апплет продолжает работать после закрытия его окна.
  3. Автоматизатор AppleScript, показанный ниже, работает медленно в фоновом режиме, службы клавиатуры занимают секунды, чтобы зарегистрировать действия открытия и закрытия в Activity Monitor.
  4. Сценарий сочетания клавиш, показанный ниже, работает без ошибок, но система, кажется, игнорирует.
  5. Sierra Automator's Выйти из приложения не закроет KeyboardViewer.app

Следующий скрипт Automator можно сохранить как приложение для открыто закрыто KeyboardViewer.app с одним щелчок (Activity Monitor также показывает эту операцию открытия-закрытия), и она хорошо работает, когда помещается в док.

Automator: новый , заявка , Запустите AppleScript сохранить этот скрипт

-- see above post, Render
    on run {input, parameters}
        if application "KeyboardViewer" is running then
            quit application "KeyboardViewer"
        else 
            activate application "KeyboardViewer"
        end if
        return input
    end run
-- icon /System/Library/PreferencePanes Keyboard.prefPane/Contents/Resources/Keyboard.icns

К сожалению, это не добавляет сочетание клавиш. Тем не менее, он предлагает обходной путь в один клик. Там может быть какой-то способ добавить сочетание клавиш с помощью Automator. Общий ярлык выглядит примерно так (но не уверен, как его включить).

tell application "System Events"
    set application "KeyboardViewer" to keystroke "K" using control down
end tell

(macOS Sierra 10.12.6 на MP 6,1)

mark stewart
источник