Aquí está mi código:OSX cuarzo Evento: Taps tipos de eventos y cómo editar eventos
#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;
}
En primer lugar .. lo que si quería editar el evento? Por ejemplo, escucho el evento keyDown y si es una "a" lo convierto en una "b", o edito la posición del mouse en tiempo real, o simplemente capturo un evento y lo hago sin efecto (desactivando un particular clave por ejemplo ...)
Segundo .. CGEventType se define con una enumeración que enumera solo algunos tipos ... por ejemplo, cuando pulso CMD obtengo un 12, pero eso no coincide con el valor especificado en la enumeración .. lo que me estoy perdiendo?
respondido bien por Dave DeLong aquí: http://stackoverflow.com/questions/5785630/modify-nsevent-to -send-a-different-key-than-the-one-that-was-pressed/5785895 # 5785895 – cksubs