如何使用AppleScript直接将密钥代码(或等效代码)发送到应用程序?

时间:2018-12-09 11:09:00

标签: macos automation keyboard applescript

例如,尽管以下代码能够将多个键(shift + h)发送到应用程序“系统事件”,但是当尝试将这些键代码发送到诸如Google Chrome的应用程序时,脚本不会编译。还有另一种方法吗?

Gladiator::Gladiator()

2 个答案:

答案 0 :(得分:0)

您可以通过“系统事件”将键代码发送到这样的应用程序:

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

您可以尝试以下方法:先打开Goog​​le Chrome浏览器,并确保焦点位于(空)URL字段上,然后运行上面的脚本-它应在URL字段中键入“ help”。

如果您不希望Chrome浏览器停留在前面,则可以在发送键码后再次将其隐藏。

答案 1 :(得分:0)

作为“已注释”,AppleScript无法将键代码和击键发送到BG应用!

只能在后台触发其他一些(“可见”!)UI元素。
为此,您必须°°可以通过以下方式“选择”应用程序而无需将其置于最前面:

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

…即使该应用程序已经在后台“打开”,该功能仍然有效。

°°提醒我:AS 可以 reveal在后​​台使用Sys.Prefs,其他应用 不能。
AS中的第二种替代方法是launch,它与 some(!)应用一起使用,就像"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设置。 *

记住:将执行“可见元素”(复选框,按钮…)的命令;因此排除了菜单项(=在后台不可见)。


* [“在家”,我在需要AS的 osascript 包装纸的Karabiner快捷方式中使用这些行。