【发布时间】:2018-12-13 21:06:15
【问题描述】:
我正在尝试在 mac os 上处理具有核心图形和核心基础的事件。
我的代码:
#import <CoreGraphics/CoreGraphics.h>
#import <CoreFoundation/CoreFoundation.h>
static int counter = 0;
CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
printf("event 0x%i\n ", counter++);
return event;
}
int main(int argc, const char * argv[]) {
CFRunLoopRef runner = CFRunLoopGetCurrent();
CFMachPortRef mach = CGEventTapCreate(kCGHIDEventTap,kCGTailAppendEventTap , kCGEventTapOptionDefault, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, mach, 0);
CFRunLoopAddSource(runner, runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(mach, true);
CFRunLoopRun();
printf("end\n");
}
但它只对触摸板事件作出反应。我的程序似乎忽略了键盘事件。我曾尝试更改事件掩码,但我不工作。能给点建议吗?
PS
这是处理事件的好开始吗?我想做全屏OpenGL游戏 核心图形没有像 SFML 或 SDL 这样的库。 我正在使用 CGDisplayCapture 和 CGL 创建 OpeGL 上下文。
【问题讨论】:
标签: macos events core-graphics core-foundation