Simulieren Sie den Tastendruck für systemweite Hotkeys

Ich muss Tastenanschläge in OSX simulieren. So mache ich es:

-(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);
}

Es funktioniert problemlos für jeden Hotkey oder für einfache Tastenanschläge in jeder App, funktioniert jedoch beispielsweise nicht für systemweite VerknüpfungenOption + Leerzeichen zum Starten von Spotlight odercmd + shift + 4 um einen Screenshot zu machen oderStrg + ` iTerm2-Fenster öffnen.

Ich habe versucht, die Quelle der Veranstaltung zu ändern, und der Ort, an dem die Veranstaltung veröffentlicht werden soll, hilft nicht. Irgendwelche Ideen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage