【发布时间】:2017-07-03 18:58:32
【问题描述】:
在处理 Quartz 事件时,我似乎找不到任何关于事件 0x1D, 29 是什么以及如何处理它的文档。
我在这里查看了各种头文件... https://developer.apple.com/documentation/coregraphics/cgeventtype?language=objc
使用触控栏和触控板时会产生相关事件。
我的具体问题是点击像逃逸这样的陷阱触摸栏软键。当用户触摸 escape 时,会触发 0x1D 事件。如果事件回调未返回此事件,则永远不会触发 kCGEventKeyDown 和 kCGEventKeyUp 事件。如果返回此事件,则会触发后续事件,就像按钮在传统键盘上一样。
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, 0, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
//No touch bar soft key events will ever fire
CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
if(type == 0x1D) {
return NULL;
}
}
显然,我总是可以盲目地返回这种类型的事件,但我更愿意了解这个事件代表什么以及它的 CGEventRef 中有哪些可用信息。
【问题讨论】:
标签: objective-c macos cocoa quartz-core