首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自OS升级后模拟键命令无法工作

自OS升级后模拟键命令无法工作
EN

Stack Overflow用户
提问于 2017-08-16 02:22:40
回答 2查看 403关注 0票数 2

我曾考虑过将它发布到Ask Different上,但我认为它属于这里,因为它主要集中在代码上。

我已经在我的mac上创建了一个宏,用于切换空间,并且自从升级到Sierra之后,下面的AppleScript就不再工作了。有人知道有什么改变了吗?

代码语言:javascript
复制
tell application "System Events" to key code 124 using control down

代码语言:javascript
复制
tell application "System Events" to key code 123 using control down

这是在终端中运行时的输出(注意^[[1;5D):

代码语言:javascript
复制
14:16 isaac@Isaac ~ $ osascript -e 'tell application "System Events" to key code 123 using control down'
^[[1;5D14:18 isaac@Isaac ~ $ ;5D

当通过AppleScript编辑器运行时,什么都不会发生。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-21 22:32:24

是的,是个窃听器。

要使用Control键模拟全局快捷方式,该命令需要fn键(的解决方案)。

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

下面是模拟这个快捷方式的脚本-> (Right Arrow + Control),您可以在终端中运行脚本(在sh、bash或任何类似的shell中)

代码语言:javascript
复制
/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)'

下面是一个在“脚本编辑器”应用程序中测试的

代码语言:javascript
复制
--  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)'"
票数 2
EN

Stack Overflow用户

发布于 2017-08-16 16:18:36

确保您的键代码与系统首选项中的键盘快捷键匹配。以下是我在系统首选项中的键盘快捷键,它们与我的AppleScript命令完全一致。

代码语言:javascript
复制
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

这些功能对我来说在最新版本的塞拉是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45704155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档