gpt4 book ai didi

macos - 在 Swift 中使用带有参数的 CGEventTapCreate 问题

转载 作者:可可西里 更新时间:2023-11-01 02:27:26 31 4
gpt4 key购买 nike

我正在尝试在 Swift 中使用 CGEventTapCreate 等来捕获按键。我想这样做,以便当我的 child 使用 Mac 程序时,我可以限制哪些键可以做某事。我明白我需要启用辅助技术才能让 CGEventTap 工作

我无法理解我需要在 Swift 中做什么才能获得调用中的最终参数。本质上,我不理解 quartz 事件 documentation 的部分文档

特别是

描述的最终参数

refcon: A pointer to user-defined data. This pointer is passed into the callback function specified in the callback parameter.

这是我的代码缺少调用的最后一个参数

@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 中调用等效函数,参见这里:

Objective-C Wrapper for CFunctionPointer to a Swift Closure

我最终用 Objective-C 编写了所有这些东西...

关于macos - 在 Swift 中使用带有参数的 CGEventTapCreate 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26673329/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com