3

我正在寻找拦截 Mac 应用程序中的键盘事件。

我希望用户启动一个“记录”活动,该活动将复制基石,然后是一个“停止”活动。

这可以通过 Cocoa 的 Mac API 实现吗?

4

2 回答 2

6

看看 NSEvent 方法 addLocalMonitorForEventsMatchingMask:handler:。这将允许您接收在您的应用程序中发生的事件(特别是在您的情况下的 keyDown 事件),然后您可以使用该方法返回的击键来做任何您想做的事情。这是一个如何使用该方法的简单示例:

self.keystrokes = [NSMutableString string];
    [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:^NSEvent* (NSEvent* event){
        NSString *keyPressed = event.charactersIgnoringModifiers;
        [self.keystrokes appendString:keyPressed];
        return event;
    }];
于 2012-06-05T00:38:01.893 回答
3

要拦截所有键盘输入(如果需要,还可以拦截鼠标),请查看Quartz Events API这篇文章有一些代码演示了 API 的用法。

于 2012-06-05T00:40:45.963 回答