OSX Quartz Event Taps: типы событий и способы их редактирования

Вот'мой код:

#import 

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 и, если онос "а" Я превращаю это в "б"или отредактируйте положение мыши в реальном времени, или, например, просто захватите событие и сделайте так, чтобы оно не имело никакого эффекта (например, отключение определенной клавиши)

Во-вторых .. CGEventType определяется с перечислением, которое перечисляет только несколько типов .. например, когда я нажимаю CMD, я получаю 12, но это нене соответствует значению, указанному в перечислении .. что ям мне не хватает ??

Ответы на вопрос(1)

Ваш ответ на вопрос