Имитация нажатия клавиш для системных горячих клавиш

Мне нужно имитировать нажатия клавиш в OSX. Вот как я это делаю:

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

Он отлично работает для каждой горячей клавиши или простого нажатия клавиши в любом приложении, но не работает, например, для общесистемных сочетаний клавиш.option + space запустить Spotlight илиcmd + shift + 4 сделать скриншот илиctrl + ` открыть окно iTerm2.

Я пытался изменить источник события и местоположение, в котором нужно опубликовать событие, не помогает. Есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос