Je suis en train d'enregistrer des événements clés en utilisant ce code mondial:Problème avec CGEventTapCreate() appelez
void function()
{
CFMachPortRef keyUpEventTap = CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventKeyUp),&keyUpCallback,NULL);
CFRunLoopSourceRef keyUpRunLoopSourceRef = CFMachPortCreateRunLoopSource(NULL, keyUpEventTap, 0);
CFRelease(keyUpEventTap);
CFRunLoopAddSource(CFRunLoopGetCurrent(), keyUpRunLoopSourceRef, kCFRunLoopDefaultMode);
CFRelease(keyUpRunLoopSourceRef);
}
l'application se bloque lors de l'exécution appel CFMachPortCreateRunLoopSource(). Je pense que le crash est dû à CGEventMaskBit (kCGEventKeyUp) lorsque je crée un événement tap.
Mais si je crée un événement tap en utilisant CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventFlagsChanged),&keyUpCallback,NULL)
, l'application fonctionne bien. Ça ne plante pas. Je reçois des rappels quand une touche de modification est enfoncée. Mais je dois obtenir des rappels pour la touche de suppression appuyée.
Des idées?
Merci,
Dheeraj.
Avez-vous essayé de regarder pour des événements clés en bas? – JWWalker
oui j'ai essayé aussi pour les événements clés. Les deux claviers en haut et en bas. – Dheeraj