等到AppleScript中保存任何键?

时间:2016-04-24 11:39:59

标签: macos applescript osx-elcapitan

我有一个AppleScript后台脚本,可以System Events生成热键事件。因此我需要在生成击键之前停止脚本并等待用户释放所有键(否则效果将无法预测)。

我怎样才能完成这项工作? 我不需要AppleScript解决方案。没关系,我可以调用外部Python / Bash / ObjC / Swift。什么,但我只是非常不喜欢运行模糊不清的二进制文件。

1 个答案:

答案 0 :(得分:1)

我不知道任何键,但是您可以等待释放修饰键。

例如在用户释放Option和Shift键之前不要继续

use framework "AppKit"

property NSShiftKeyMask : a reference to 131072
property NSAlternateKeyMask : a reference to 524288
property NSEvent : a reference to current application's NSEvent

set modifier_down to true
repeat while modifier_down
    set modifier_flags to NSEvent's modifierFlags()
    set option_down to ((modifier_flags div (get NSAlternateKeyMask)) mod 2) = 1
    set shift_down to ((modifier_flags div (get NSShiftKeyMask)) mod 2) = 1
    set modifier_down to option_down or shift_down
end repeat

这是其他修饰符的键码

property NSCapsLockMask : a reference to 65536
property NSControlKeyMask : a reference to 262144
property NSCommandKeyMask : a reference to 1048576
property NSFunctionKeyMask : a reference to 8388608