我看到很多像这样的AppleScript的例子
tell application "TextEdit"
activate
tell application "System Events"
keystroke "s"
end tell
end tell
预期结果是字母“s”将被输入到TextEdit中的活动文档中(假设至少有一个文档窗口)。但它总是试图保存文档(为更改的文档做了它,如果它是新的则打开保存对话框)。任何时候任何应用程序中的任何键都会发生同样的事情......
有人知道系统事件为什么总是发送“...使用{command down}”这样的击键?
答案 0 :(得分:8)
我使用Cmd + R从AppleScript编辑器运行脚本,而不是单击“运行”按钮。在我按下“R”键之后脚本立即开始执行,并且该脚本在我释放Cmd或R之前发送击键“S”。这就是为什么发送按键“S”由TextEdit解释为修饰符Cmd。
解决方法是单击按钮运行或在脚本开头添加延迟并使用Cmd + R:
delay 0.2 -- 0.2 second delay is enough
tell application "TextEdit"
activate
答案 1 :(得分:1)
s
。您仍然必须使用key down {command}
或key up {command}
进行保存(⌘命令 S )。
您可能需要查看有关WikiBooks的this文章,这可以帮助您更好地理解它。
答案 2 :(得分:1)
你是如何执行脚本的?如果您使用涉及Command键的键盘快捷键进行操作,则按住键而不是脚本。
答案 3 :(得分:1)
更好地检查它,并且只在必要时应用延迟,并且只要有必要。 (〜忙着等到用户做了cmd。我甚至使用了一些令人不安的声音来促进它,所以剧本实际上确实在某种程度上提升了。:D)
并且还特别注意到这种方式键序列无法变成命令,因为在cmd关闭时它不会触发。
on check()
do shell script "~/Documents/checkModifierKeys cmd" --DOWNLOAD: http://macscripter.net/viewtopic.php?pid=114479#p114479
end check
on run {input, parameters}
set the date_stamp to do shell script "date '+%Y.%m.%d_%H:%M'"
repeat while check() = "1"
beep
delay 0.2
end repeat
tell application "System Events"
tell process "TextEdit" to keystroke date_stamp
end tell
return input
end run
注意:我使用了downloaded的工具。我还找到了OsX应该具备的实用程序的参考资料,但在Lion上没有运气。但下载的一个肯定是有效的。