我考虑将此帖子发布到Ask Different,但由于主要关注代码,我认为它属于此处。
我已经在我的mac上创建了一个用于切换空间的宏,并且由于升级到Sierra,以下AppleScript不再有效。有谁知道某些事情是否发生了变化?
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
):
spark.sql.shuffle.partitions
当通过AppleScript编辑器运行时,没有任何反应。
答案 0 :(得分:2)
确保您的密钥代码与系统偏好设置中的键盘快捷键相匹配。以下是我在系统偏好设置中的键盘快捷键,它们与我的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
这些功能在我最新版本的Sierra中正确使用。
答案 1 :(得分:2)
是的,这是一个错误。
要使用 Control 键模拟某些全局快捷方式,该命令需要 fn 键( Sierra 的解决方法)。
使用AppleScript的key code
命令无法使用 fn 键,但可以使用 Python中的Core Graphics
框架的方法 script。
这是模拟此快捷方式的脚本 - > (右箭头+控制),您可以在终端中运行脚本(在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)'
这是在“脚本编辑器”应用程序中测试的AppleScript:
-- 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)'"