Вот мой код:
#import <ApplicationServices/ApplicationServices.h>
CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
printf("%u\n", (uint32_t)type);
return event;
}
int main (int argc, const char * argv[]) {
CFMachPortRef eventTap;
CFRunLoopSourceRef runLoopSource;
eventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, 0, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CGEventTapEnable(eventTap, true);
CFRunLoopRun();
return 0;
}
Во-первых ... что, если бы я хотел отредактировать событие? Например, я слушаю событие keyDown, и если это «a», я переворачиваю его на «b», или редактирую положение мыши в реальном времени, или, например, просто захватываю событие и делаю его неэффективным (отключение определенного ключ например ..)
Во-вторых ... CGEventType определяется перечислением, в котором перечислено только несколько типов ... например, когда я нажимаю CMD, я получаю 12, но это не соответствует значению, указанному в перечислении ... что мне не хватает ??