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