Как можно использовать AppleScript для отправки кодов клавиш (или их эквивалента) непосредственно в приложение? - PullRequest
0 голосов
/ 09 декабря 2018

Например, хотя следующее может отправлять несколько ключей (shift + h) в приложение «Системные события», сценарий не будет компилироваться при попытке отправить эти коды ключей в приложение, такое как Google Chrome.Есть ли другой способ?

tell application "System Events" (* won't work with "Google Chrome" *)
    key code 58  
    key code 4 
end tell    

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Как "прокомментировано", коды клавиш и нажатия клавиш НЕ могут отправляться в приложения BG с помощью AppleScript!

Это ТОЛЬКО возможнозапускать другие («видимые»!) элементы пользовательского интерфейса в фоновом режиме.
Для этого вы должны °ИВ можете «выбрать» приложение, не выводя его на передний план:

do shell script "open -g /System/Library/PreferencePanes/Keyboard.prefPane/"

… который работает, даже если приложение уже «открыто» в фоновом режиме.

°ИВ Мне напомнили: AS может reveal Sys.Prefs в фоновом режиме, другие приложения не могут.
Второй вариант в AS - launch, который с некоторыми (!) приложениями будет работать как"open -g …".

Как упоминает CJK, любая следующая команда может быть отправлена ​​через AppleScript:

tell application "System Events" to tell process "System Preferences" ¬
  to click checkbox 1 of tab group 1 of window 1

Я использую эту функцию для переключения некоторых настроек Sys-Prefs без потери фокуса.*

Помните : ONLY команды для «видимых элементов» (флажки, кнопки…) будут выполнены;поэтому пункты меню исключены (= не видны в фоновом режиме).


* ["Дома" я использую эти строки в ярлыке Карабинера, где AS нужна osascript упаковка.]

0 голосов
/ 09 декабря 2018

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

tell application "System Events"
    tell process "Google Chrome"
        set frontmost to true
        key code 4
        key code 14
        key code 37
        key code 35
    end tell
end tell

Вы можете попробовать это, сначала открыв Google Chrome и убедившись, что фокус находится на (пустом) поле URL, а затемзапустите приведенный выше скрипт - он должен напечатать «help» в поле URL.

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

...