Simular pulsación de teclas para teclas de acceso rápido en todo el sistema
Necesito simular pulsaciones en OSX. Así es como lo hago:
-(void)execute {
CGEventSourceRef sourceRef =
CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef keyPress = CGEventCreateKeyboardEvent (sourceRef, (CGKeyCode)keyCode, true);
CGEventRef keyUnpress = CGEventCreateKeyboardEvent (sourceRef, (CGKeyCode)keyCode, false);
CGEventSetFlags(keyPress, modifierFlags);
CGEventPost(kCGHIDEventTap, keyPress);
//unpressing the acualkey
CGEventPost(kCGHIDEventTap, keyUnpress);
CFRelease(keyPress);
CFRelease(keyUnpress);
CFRelease(sourceRef);
}
Funciona bien para cada tecla de acceso rápido o pulsaciones simples en cualquier aplicación, pero no funciona para los accesos directos de todo el sistema, por ejemploopción + espacio para lanzar Spotlight ocmd + shift + 4 para hacer una captura de pantalla oCtrl + ` para abrir la ventana de iTerm2.
Intenté cambiar la fuente del evento y la ubicación en la que publicar el evento, no ayuda. ¿Algunas ideas?