我曾考虑过将它发布到Ask Different上,但我认为它属于这里,因为它主要集中在代码上。
我已经在我的mac上创建了一个宏,用于切换空间,并且自从升级到Sierra之后,下面的AppleScript就不再工作了。有人知道有什么改变了吗?
tell application "System Events" to key code 124 using control down和
tell application "System Events" to key code 123 using control down这是在终端中运行时的输出(注意^[[1;5D):
14:16 isaac@Isaac ~ $ osascript -e 'tell application "System Events" to key code 123 using control down'
^[[1;5D14:18 isaac@Isaac ~ $ ;5D当通过AppleScript编辑器运行时,什么都不会发生。
发布于 2017-08-21 22:32:24
是的,是个窃听器。
要使用Control键模拟全局快捷方式,该命令需要fn键(的解决方案)。
AppleScript的 key code命令不可能使用Core Graphics fnkey code键,但在Python脚本中使用Core Graphics框架的方法是可能的。
下面是模拟这个快捷方式的脚本-> (Right Arrow + Control),您可以在终端中运行脚本(在sh、bash或任何类似的shell中)
/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)'下面是一个在“脚本编辑器”应用程序中测试的:
-- For switching spaces, 124 = the Right Arrow key, use 123 for the Left Arrow key
do shell script "/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)'"发布于 2017-08-16 16:18:36
确保您的键代码与系统首选项中的键盘快捷键匹配。以下是我在系统首选项中的键盘快捷键,它们与我的AppleScript命令完全一致。

tell application "System Events"
key code 18 using (control down) -- Desktop 1
end tell
tell application "System Events"
key code 19 using (control down) -- Desktop 2
end tell
tell application "System Events"
key code 20 using (control down) -- Desktop 3
end tell
tell application "System Events"
key code 21 using (control down) -- Desktop 4
end tell这些功能对我来说在最新版本的塞拉是正确的。
https://stackoverflow.com/questions/45704155
复制相似问题