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?