Dus*_*son 3 macos cocoa objective-c quartz-core
在处理Quartz事件时,我似乎找不到关于0x1D,29是什么以及如何处理事件的任何文档。
我在这里查看过各种头文件... https://developer.apple.com/documentation/coregraphics/cgeventtype?language=objc
使用触摸栏和触控板时会产生相关事件。
我的特定问题是点击陷阱键盘上的软键,如转义。当用户触摸转义时,将触发一个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中可用的信息。
有时这样的事情被“隐藏”在头文件中。如果查看NSEvent.h(CGEventType并将其NSEventType映射到相同的值),则会找到您的值:
// snip...
/* The following event types are available on some hardware on 10.5.2 and later */
NSEventTypeGesture NS_ENUM_AVAILABLE_MAC(10_5)       = 29,
NSEventTypeMagnify NS_ENUM_AVAILABLE_MAC(10_5)       = 30,
NSEventTypeSwipe   NS_ENUM_AVAILABLE_MAC(10_5)       = 31,
// snip...
因此29是一种“姿态”事件。
| 归档时间: | 
 | 
| 查看次数: | 149 次 | 
| 最近记录: |