2017-08-16 47 views
2

我认为这张张贴到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 [email protected] ~ $ osascript -e 'tell application "System Events" to key code 123 using control down' 
^[[1;5D14:18 [email protected] ~ $ ;5D 

,并通过AppleScript的编辑器中运行时,没有任何反应。

回答

2

是的,这是一个错误。

为了模拟与控制键一些全局快捷键,命令需要FN键(一种解决方法塞拉利昂)。

这是不可能使用与AppleScript的的key code命令FN键,但它可能与Core Graphics框架在的Python脚本的方法。


这里的脚本来模拟这个快捷键 - >(右箭头+控制),可以运行在的终端脚本(在sh,bash或任何类似壳)

/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)'" 
+0

你的传说......我以为有东西出现了 – Isaac

2

确保您的键码与系统偏好设置中的键盘快捷键匹配。以下是系统偏好设置中的键盘快捷键,它们与我的AppleScript命令正确配合。

enter image description here

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 

在塞拉利昂的最新版本,这些功能正常对我来说。

+0

这很奇怪,这些键似乎工作...通过不按Ctrl +左或CTRL +右命令 – Isaac