在Swift中使用CGEventTapCreate麻烦和参数

nerak99

我正在尝试在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章