作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试触发快捷键,例如 ctrl+cmd+space
一开始我的代码是这样的:
let source = CGEventSourceCreate(.CombinedSessionState)
let keyDown = CGEventCreateKeyboardEvent(source, 49 as CGKeyCode, true)
let keyUp = CGEventCreateKeyboardEvent(source, 49 as CGKeyCode, false)
CGEventSetFlags(keyDown, .MaskCommand)
CGEventSetFlags(keyDown, .MaskControl)
CGEventPost(.CGSessionEventTap, keyDown)
CGEventPost(.CGSessionEventTap, keyUp)
但它不起作用,因为 .MaskControl
覆盖了 .MaskCommand
这意味着我只需要使用方法 CGEventSetFlags
一次并设置两者命令键和控制键。
所以我谷歌了一下,发现你可以在 Swift1 中这样做:CGEventSetFlags(keyDown, .MaskCommand | .MaskControl)
。对吗?好吧,我使用的是 Swift2,但它不起作用。我尝试了 CGEventSetFlags(keyDown, [.MaskCommand, .MaskControl])
,也没有用。
所以,请告诉我在 Swift2 中使用 CGEventSetFlags
的正确方法。谢谢!
最佳答案
“或”原始值并创建一个新的 CGEventFlags
项
let commandControlMask = (CGEventFlags.maskCommand.rawValue | CGEventFlags.maskControl.rawValue)
let commandControlMaskFlags = CGEventFlags(rawValue: commandControlMask)
CGEventSetFlags(keyDown, commandControlMaskFlags)
关于 swift 2 : CGEventSetFlags with multi CGEventFlags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274099/
我正在尝试触发快捷键,例如 ctrl+cmd+space 一开始我的代码是这样的: let source = CGEventSourceCreate(.CombinedSessionState) le
我是一名优秀的程序员,十分优秀!