Xcode Mac应用程序:像Ventrilo一样在后台监听按键事件



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

我在cocoa中唯一知道的方法是使用全局事件监视器。如果你调用下面的方法,应用程序会监听控件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);
    }]; 
}

相关内容

最新更新