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, но это нене соответствует значению, указанному в перечислении .. что ям мне не хватает ??