Приложение Xcode Mac: прослушивание событий нажатия клавиш в фоновом режиме, как Ventrilo - PullRequest
1 голос
/ 25 марта 2012

Я искал прошедшие дни, пытаясь выяснить, как и можно ли было бы прослушивать события нажатия клавиш в фоновом режиме.Например, при использовании программы «Ventrilo» или «Teamspeak» она позволяет вам разговаривать с вашей командой по видеоиграм, играя в видеоигры.Поэтому эти две программы слушают ключ, когда они находятся в фоновом режиме.Мой вопрос: как это сделать?Некоторые примеры, учебники были бы потрясающими!Я также все еще немного новичок в этом, поэтому, пожалуйста, будьте описательными.

1 Ответ

3 голосов
/ 25 марта 2012

Единственный способ, которым я знаю в какао, - использовать глобальный монитор событий. Если вы вызываете метод ниже, приложение будет прослушивать control-alt- /, а затем выдает предупреждение. Возможная проблема с этим подходом состоит в том, что блок будет запускаться (но не отображать предупреждение) каждый раз, когда вы нажимаете клавишу, если вы делаете что-то очень интенсивно использующее процессор, это может немного замедлить его. Я думаю, что есть способ сделать это в Carbon, у которого нет этой проблемы, но я не знаю достаточно о Carbon, чтобы писать об этом.

+(void)listenForKey {
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event)
{
    NSUInteger key = 44; // 44 is forward slash
    NSUInteger modifier = NSControlKeyMask | NSAlternateKeyMask; 
    if ([event keyCode] == key && [NSEvent modifierFlags] == modifier)
        NSRunCriticalAlertPanel(nil,@"Control-alt / was detected",nil,nil,nil);
    }]; 
}
...