1

我一直在寻找过去几天,试图弄清楚如何以及是否可以在后台收听 keydown 事件。例如,当使用“Ventrilo”或“Teamspeak”程序时,它允许您在玩视频游戏时与您的视频游戏团队交谈。因此,这两个程序在后台监听密钥。我的问题是这是怎么做到的?一些例子,教程会很棒!我在这方面还是有点新的,所以请描述一下。

4

1 回答 1

4

我在可可中知道的唯一方法是使用全局事件监视器。如果您调用下面的方法,应用程序将侦听 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);
    }]; 
}
于 2012-03-25T16:19:07.990 回答