我正在尝试在Swift中使用CGEventTapCreate等来捕获按键。我想这样做,以便当我的孩子使用Mac程序时,我可以限制哪些键可以执行某些操作。我很欣赏我需要启用辅助技术才能使CGEventTap正常工作
我在理解我需要在Swift中做什么以获取调用中的最终参数时遇到了麻烦。本质上,我不了解石英事件文档中的部分文档
具体而言,最终参数由
refcon:指向用户定义数据的指针。该指针传递到callback参数中指定的回调函数中。
这是我的代码从调用中丢失了最后一个参数
@IBAction func interceptKeyboard(sender: NSButton) {
CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, CGEventMask((kCGEventKeyDown) | (kCGEventKeyUp)), MyCallBack: kCGHIDEventTap, )
}
func MyCallBack(myLocation:CGEventTapLocation) -> Void{
//do Nowt
}
不久前,但是我认为当您查看CGEventTapCallback的类型时,您会看到它是一个CFunctionPointer:
typealias CGEventTapCallBack = CFunctionPointer<((CGEventTapProxy,
CGEventType, CGEvent!, UnsafeMutablePointer<Void>) -> Unmanaged<CGEvent>!)>
目前,您无法在Swift中创建这些函数,因此您必须加入Objective-C,在其中创建一个函数,然后可以在Swift中调用等效函数,请参见此处:
用于快速关闭的CFunctionPointer的Objective-C包装器
我最终用Objective-C编写了所有这些东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句