【问题标题】:Using CGEventTapCreate Trouble with parameters in Swift在 Swift 中对参数使用 CGEventTapCreate 问题
【发布时间】:2014-10-31 11:13:28
【问题描述】:

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

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

具体是由

描述的最终参数

refcon:指向用户定义数据的指针。这个指针被传递到 回调参数中指定的回调函数。

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

@IBAction func interceptKeyboard(sender: NSButton) {


    CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, CGEventMask((kCGEventKeyDown) | (kCGEventKeyUp)), MyCallBack: kCGHIDEventTap, )

}

func MyCallBack(myLocation:CGEventTapLocation) -> Void{
    //do Nowt
}

【问题讨论】:

标签: macos swift quartz-graphics


【解决方案1】:

不久前,但我认为当您查看 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 编写了所有这些东西......

【讨论】:

  • 谢谢。早在很久以前就应该标记你了。
猜你喜欢
  • 1970-01-01
  • 2015-10-31
  • 2016-02-04
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多