Я пытаюсь обрабатывать события с основной графикой и основным финансированием в 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.