我正在尝试触发诸如 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)

关于Swift2 : CGEventSetFlags with multi CGEventFlags,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35274099/

10-12 14:32