Як показати або приховати переглядач клавіатури за допомогою комбінації клавіш?


19

Я хотів би відобразити та приховати переглядач клавіатури за допомогою ярлика.

  • Чи існує спосіб відображення програми перегляду клавіатури за допомогою комбінації клавіш?
  • Чи є спосіб автоматично відобразити переглядач клавіатури, коли я перейду на певну мову?

Ідеальним рішенням було б призначити ярлик клавіатури Apple Script, який показує клавіатуру.
duci9y

Відповіді:


15

Запустіть програму перегляду клавіатури за допомогою сервісу (покращено)

Ви можете запустити переглядач клавіатур за допомогою ярлика, використовуючи Automator та функціонал OS X Services.

Програма перегляду клавіатур працює у /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. Зберегти з ім'ям , як «Open Keyboard Viewer», потім відкрийте Параметри клавіатури до Сполучення клавіш вкладки. Виберіть Служби на лівій панелі та прокрутіть донизу, де ви побачите назву вашої служби у розділі Загальні.
  5. Переконайтесь, що прапорець встановлено, щоб увімкнути його, потім виберіть його та натисніть кнопку Додати ярлик, щоб встановити гарячу клавішу .
  6. Після встановлення гарячої клавіші відкрийте меню Сервіси в будь-якій програмі (тобто Finder> Services), а потім закрийте її. Чомусь мій гарячий ключ не працював, поки я цього не зробив.

Пара зазначає:

  • Сценарій вимагає встановити прапорець Увімкнути доступ для допоміжних пристроїв на панелі налаштувань Universal Access .
  • Закриття вікна програми перегляду клавіатури насправді не закриває програму, і, як зазначає Лрі, це може бути трохи зависачем ресурсів, тому repeatцикл перевіряє кожні 5 секунд, чи немає у клавіатурного переглядача відкритих вікон, а якщо ні, закриває процес.
  • Якщо ви використовуєте попередньо Lion OS, ви можете потрібно замінити екземпляри KeyboardViewerз KeyboardViewerServer. Я не маю нічого перед-Лева зручного для перевірки цього (якщо хтось інший міг би повідомити про це в коментарях, це було б чудово.
  • Оскільки сценарій циклізує, поки програма перегляду клавіатури не закрита, піктограма автоматичного віджиму Автоматизатора з’явиться на панелі меню, поки вона не закриється.

ТАК! Це саме те, на що я дивлюся. Я знайомий з автоматизатором і сценарієм оболонок, потрібен був лише підказку. Дуже дякую ... :)
jm666

Я оновив це за допомогою Applescript, який запускає перевірку, щоб перевірити, чи вікно було закрито, і якщо так, виходить із процесу, щоб уникнути зниження продуктивності. Усі, хто цікавиться старою версією на базі, можуть знайти цю версію тут .
robmathers

З мінімальною модифікацією цей сценарій перемикає глядача. Замініть "end if" на "else" і перемістіть "else if" до кінця.
АдамАЛ

Прекрасне рішення. Однак пункт меню "Показати переглядач клавіатури" не знає, що переглядач клавіатури працює? Тож цей вид порушує цей пункт меню, якщо ви випадково використовуєте їх обидва.
Метт Сефтон

/System/Library/Input Methods/KeyboardViewer.appне існує на Каталіні. Я відкрив усі програми, /System/Library/Input Methodsі жоден з них не відкрив переглядач клавіатури. Будь-які ідеї?
Індіана Кернік

4

В Додаткові скрипти Plugin з Quicksilver пропонує цю функцію, надаючи Показати клавіатуру Viewer.scpt .

Крім того, коли ви створите запуск Quicksilver для Show Keyboard Viewer.scpt з дією Виконати , ви отримаєте глобальну гарячу клавішу Viewer 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% процесора.


Зазвичай мені не подобається встановлювати сторонні додатки для простих сценаріїв, але це виняток . :) Дуже дякую, працюючи як шарм. ;)
jm666

Якщо ви хочете уникнути стороннього програмного забезпечення, я щойно опублікував відповідь, яка зробить те ж саме із вбудованим програмним забезпеченням.
robmathers

sry mach, @CanuckSkier опублікував відповідь, що мені більше подобається, тому прийнявши його відповідь. +1 у будь-якому випадку для QuickSilver. ;)
jm666

4

Радий, що знайшов цю тему. На підставі відповідей вище, я створив сценарій розширення Альфреда, який перемикає переглядач клавіатури.

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

Він надає ключове слово alfred "kv", яке вмикає та вимикає переглядач клавіатури, запустивши наступний яблучний сценарій:

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

Я залишив коментар про альтернативну реалізацію, якщо у мене виникли проблеми з ефективністю, яких потрібно було уникнути.


1
Перервана посилання. Чи будете ви такими люб'язними, щоб знову опублікувати його. Це я використовував би Альфред Робочий процес.
ddaa

Ось ми переймемо це (я також додав комбінацію клавіш Cmd + Alt + Ctrl + Shift + K): packal.org/workflow/toggle-keyboard-viewer-0
Метт Сефтон

3

Я знайшов спосіб через BetterTouchTool зробити наступне:

  • Активуйте переглядач клавіатури ярликом
  • Закрийте переглядач клавіатури ще одним ярликом
  • Увімкнення переглядача клавіатури одним ярликом (не потрібно попередніх двох)
  • Я також завантажив AppleScript для зручності

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


Активуйте переглядач клавіатури ярликом

  • Запустіть BetterTouchTool
  • Додати комбінацію клавіш
  • Додати попередньо визначені дії >> Відкрити додаток / файл / скрипт ...
  • Перейдіть до Macintosh HD / Система / Бібліотека / Методи введення /
  • Виберіть KeyboardViewer

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

ЯКЩО я помітив, що натискання червоної кнопки X насправді не закриває програму, а це означає, що переглядач клавіатури активується лише один раз. Тому вам потрібно створити сценарій, щоб вийти з програми.

Щоб вирішити цю проблему:


Закрийте переглядач клавіатури іншим ярликом клавіатури

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

Тепер у вас є спосіб назавжди вийти з переглядача клавіатури після його активації. Використовуйте його замість червоної кнопки X. Поки я не з’ясую, чому переглядач клавіатури не повністю вимикається при натисканні кнопки X, це має бути вашим рішенням.

EDIT

Я розібрався із способом ОБЕРЕЖИТИ переглядач клавіатури !!


ВИГОТОВЛЕННЯ КЛЮЧОВОГО КЛЮЧА одним комбінацією клавіш

той же процес, що і раніше, але код змінюється:

  • Відкрийте Автоматизатор
  • Виберіть Додаток як тип документа
  • Додати 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


Сподіваюсь, це допомагає комусь, як і мені допоміг :)


фантастичний !! Я думав, що додавання клавіатури VistaViewer безпосередньо до мого індексу запуску буде гарною заміною для моїх цілей, але немає можливості закривати kbv, як тільки він працює! тож не можна вдруге викликати це - дивно. так чи інакше ваш сценарій працює частуванням! (Мені довелося зберегти його як сценарій / запустити лише для того, щоб він працював для мене.) Tx!
ptim

@memeLab Рада, що це працювало для вас :)
Візуалізуйте

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% процесора. Це не відбувається, якщо в меню введення вибирати Показати переглядач клавіатури. Тож кращим варіантом може бути натискання на пункт меню:

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

В обох сценаріях потрібен доступ для допоміжних пристроїв, щоб їх було включено на панелі налаштувань доступності.


2

Це не однотактний ярлик, але рішення, яке не стосується " 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


0

Ви можете зробити все за допомогою Automator:

  1. відкрити Automator і вибрати "Application"
  2. вгорі бібліотеки знайдіть "Запустити додаток", двічі клацніть по ньому
  3. виберіть "інше" та перейдіть до файлу KeyboardViewer в / Система / Бібліотека / Методи введення
  4. Збережіть таку назву, як "запустити клавіатуру". перевірити його.

Наступна частина - закрити клавіатуру:

  1. відкрити Automator і вибрати "Application"
  2. вгорі бібліотеки знайдіть "Закрити додаток", двічі клацніть по ньому
  3. виберіть "інше" та перейдіть до файлу KeyboardViewer в / Система / Бібліотека / Методи введення

  4. Збережіть таку назву, як "вийти з клавіатури". перевірити його.

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

все, що вам потрібно, це пов’язати кнопки миші, щоб запустити ці два файли!

наприклад, я використовую Microsoft Bluetooth Notebook Mouse 5000 і його

для мене чудово працює 10.9.1


0

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

Місце знаходження: / Система / Бібліотека / Методи введення / KeyboardViewer.app .

Звичайне використання: відкрийте на панелі меню , закрийте від наведення миші, щоб переглянути кнопки вікна, де (x) кнопка закриття можна натиснути. Щоб увімкнути панель " Меню ", "Налаштування системи" , " Клавіатура" , " Клавіатура" , виберіть " Показувати клавіатуру" та "Переглядачі смайликів" у рядку меню .

Аплет KeyboardViewer демонструє обмежувальну поведінку.

  1. Вікно аплетів не реагує на ⌘-Q , ⌘-W .
  2. Як не дивно, коли відкривається з папки Методи введення , тоді Monitor Monitor показує, що аплет залишається запущеним після закриття вікна.
  3. Автоматизатор AppleScript, показаний нижче, працює повільно у фоновому режимі, сервісам клавіатури потрібні секунди для реєстрації відкритих та закритих дій у "Моніторі діяльності".
  4. Показаний нижче сценарій комбінації клавіш працює без помилок, але система, здається, ігнорує.
  5. Запуск програми Sierra Automator не закриє KeyboardViewer.app

Наступний скрипт Automator можна зберегти як додаток для відкриття-закриття KeyboardViewer.app одним натисканням кнопки (Монітор активності також показує цю активність відкриття-закриття), і він добре працює, розміщуючи його в 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)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.