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

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

  • Есть ли способ отобразить средство просмотра клавиатуры с помощью сочетания клавиш?
  • Есть ли способ автоматически отображать средство просмотра клавиатуры после переключения на определенный язык?
Идеальным решением было бы назначить сочетание клавиш для сценария Apple, который показывает клавиатуру.
Я нашел этот способ в Монтерее: Системные настройки> Специальные возможности> Клавиатура> Viwer - включить; в «Опциях...» выберите HotCorner для отображения/скрытия и уменьшите время задержки до 0,25 сек. Тогда кажется, что он работает достаточно хорошо с указателем мыши в углу экрана.

Ответы (11)

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

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

Программа 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 > Службы), затем закройте его. По какой-то причине моя горячая клавиша не работала, пока я не сделал это.

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

  • Сценарий требует, чтобы вы установили флажок Разрешить доступ для вспомогательных устройств на панели настроек универсального доступа .
  • Закрытие окна средства просмотра клавиатуры на самом деле не приводит к выходу из приложения, и, как указывает Lri, это может немного пожирать ресурсы, поэтому repeatцикл проверяет каждые 5 секунд, есть ли в средстве просмотра клавиатуры какие-либо открытые окна, и, если нет, закрывает приложение. процесс.
  • Если вы используете ОС до Lion, вам может потребоваться заменить экземпляры KeyboardViewerна KeyboardViewerServer. У меня нет ничего подходящего до Lion, чтобы проверить это (если бы кто-то еще мог сообщить в комментариях, это было бы здорово.
  • Поскольку сценарий повторяется до тех пор, пока средство просмотра клавиатуры не будет закрыто, значок вращающейся шестеренки Automator будет отображаться в строке меню, пока оно не закроется.
ДА! Это именно то, что я ищу. Я знаком с автоматом и сценариями оболочки, мне нужна была только подсказка. Большое спасибо... :)
Я обновил это с помощью Applescript, который проверяет, было ли окно закрыто, и если да, то завершает процесс, чтобы избежать снижения производительности. Любой, кто интересуется старой версией на основе bash, может найти эту версию здесь .
С минимальными изменениями этот скрипт переключает средство просмотра. Замените «end if» на «else» и переместите «else if» в конец.
Отличное решение. Однако пункт меню «Показать средство просмотра клавиатуры» не знает, что средство просмотра клавиатуры запущено? Так что этот вид ломает этот пункт меню, если вы используете их оба.
/System/Library/Input Methods/KeyboardViewer.appне существует на Каталине. Я открыл все приложения, /System/Library/Input Methodsи ни одно из них не открыло программу просмотра клавиатуры. Есть идеи?
Есть ли обновления для Монтерея? Я не могу настроить там какое-либо решение... :(

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

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

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


Активировать Keyboard Viewer с помощью ярлыка

  • Запустите BetterTouchTool
  • Добавить сочетание клавиш
  • Добавить предопределенное действие >> Открыть приложение/файл/скрипт...
  • Перейдите к Macintosh HD/System/Library/Input Methods/
  • Выберите программу просмотра клавиатуры

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

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

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


Закройте средство просмотра клавиатуры с помощью другого сочетания клавиш

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

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

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

Я нашел способ ПЕРЕКЛЮЧАТЬ просмотр клавиатуры !!


ПЕРЕКЛЮЧАТЬ ПРОСМОТР КЛАВИАТУР одним сочетанием клавиш

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

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

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


Ссылка для AppleScript

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

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


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

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

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

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

Он предоставляет ключевое слово альфреда «kv», которое включает и выключает средство просмотра клавиатуры, запустив следующий сценарий Apple:

-- 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

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

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

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

Кроме того, когда вы создаете Quicksilver Trigger для Show Keyboard Viewer.scpt с действием Run , вы получаете глобальную горячую клавишу 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, а главное окно закрыто, процесс Keyboard Viewer остается открытым и продолжает использовать около 0-20% ЦП.

Обычно я не люблю устанавливать сторонние приложения для простых скриптовых вещей, но это исключение . :) Большое спасибо, работает как шарм. ;)
Если вы хотите избежать стороннего программного обеспечения, я только что опубликовал ответ, который будет делать то же самое со встроенным программным обеспечением.
прости, мах, @CanuckSkier опубликовал ответ, который мне нравится больше, поэтому принимаю его ответ. +1 в любом случае для QuickSilver. ;)
Этот скрипт не работает у меня на Catalina.

В Каталине он мертв — больше нет приложения под названием KeyboardViewer.

Вместо этого используйте параметры специальных возможностей в Системных настройках и отключите все остальное, чтобы ярлык параметров специальных возможностей (⌘ + ⎇ + F5) только включал и выключал клавиатуру специальных возможностей. Конечно, если вам нужны другие опции и увидеть клавиатуру, вы обречены. Спасибо, Apple!!

Параметры доступности с выбранной только клавиатурой

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

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% ЦП. Этого не происходит при выборе «Показать средство просмотра клавиатуры» в меню ввода. Поэтому лучшим вариантом может быть щелчок по пункту меню:

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

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

Выбранный ответ не работает на Каталине. Это делает:

activate application "System Preferences"
tell application "System Preferences"
    reveal anchor "Virtual_Keyboard" in pane id "com.apple.preference.universalaccess"
end tell

tell application "System Events"
    tell process "System Preferences"
        delay 1
        set theCheckbox to checkbox "Enable Accessibility Keyboard" of tab group 1 of group 1 of window 1
        if (value of theCheckbox as boolean) then
            click theCheckbox
            key code 36 -- Handle the confirmation dialog
        else
            click theCheckbox
        end if
        delay 1
    end tell
end tell
tell application "System Preferences" to quit
Используя Keyboard Maestro, средство просмотра клавиатуры можно переключать, автоматизируя щелчок по пункту меню. Это пропускает панель управления и намного быстрее.

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

... затем скажите «Включить просмотр клавиатуры»

введите описание изображения здесь

...и вуаля:

введите описание изображения здесь

К сожалению, Siri не закроет средство просмотра клавиатуры и не закроет Command⌘+w

вы можете сделать все с помощью Automator:

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

следующая часть - закрыть клавиатуру:

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

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

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

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

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

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

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

Расположение Finder: /System/Library/Input Methods/KeyboardViewer.app .

Обычное использование: открыть из строки меню , закрыть при наведении мыши, чтобы просмотреть кнопки окна, где можно нажать кнопку (x) закрытия . Чтобы включить панель « Строка меню », « Системные настройки », « Клавиатура » , вкладку « Клавиатура », выберите « Показать клавиатуру и средства просмотра эмодзи» в строке меню .

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

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

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

Автоматизатор: Создать , Приложение , Запустить 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)

Это не ярлык, но работает для меня. Сначала нажмите Показать средство просмотра клавиатуры. После того, как вы пойдете с мышью в угол, маленький треугольник показывает. Когда он будет готов, программа просмотра клавиатуры скроется. Следующее это показывает.

Вот небольшое видео об этом: https://dai.ly/x7t7x60

Весь смысл этого вопроса в том, как это сделать Без мышки.