Simular keypress para teclas de atalho de todo o sistema
Eu preciso simular as teclas digitadas no OSX. Aqui está como eu faço:
-(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);
}
Ele funciona bem para cada tecla de atalho ou pressionamentos de tecla simples em qualquer aplicativo, mas não funciona para atalhos do sistema, por exemploopção + espaço para lançar o Spotlight oucmd + shift + 4 para fazer uma captura de tela ouctrl + ` para abrir a janela iTerm2.
Eu tentei mudar a fonte do evento e o local onde postar o evento, não ajuda. Alguma ideia?