1

Мне нужен метод клавиатуры для открытия экранной клавиатуры Mac. Я мог бы быть командой Терминала. Строка будет введена в USB-порт пользователя Mac нашим устройством; "Вуаля, ОСК!"

2 ответа2

2

По крайней мере, в 10.7 и позже вы можете просто открыть приложение KeyboardViewer:

open -a KeyboardViewer

У него есть несколько недостатков:

  • Если вы закроете окно клавиатуры, например, нажав кнопку закрытия, процесс KeyboardViewer останется запущенным и продолжит использовать что-то вроде 0-10% CPU.
  • Если после этого вы снова откроете KeyboardViewer, он не откроет окно клавиатуры.
  • Окно клавиатуры становится видимым, когда я запускаю скрипты, которые имитируют нажатия клавиш или используют историю буфера обмена Альфреда.

Всего этого можно избежать, открыв окно клавиатуры из меню ввода:

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

Обходной путь для второй проблемы - завершить KeyboardViewer, если он работает, но не имеет окон:

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
        activate application "KeyboardViewer"
    else
        quit application "KeyboardViewer"
    end if
else
    activate application "KeyboardViewer"
end if
2

Посмотрите это решение для Mac OS X 10.6.

В Mac OS X 10.5 вы можете открыть следующую программу:

/System/Library/Components/KeyboardViewer.component/Contents/SharedSupport/KeyboardViewerServer.app/Contents/MacOS/KeyboardViewerServer

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .