Objective c 访问键盘API
我希望在Mac应用程序中拦截键盘事件 我希望用户启动一个“记录”活动,该活动将复制密钥,然后启动一个“停止”活动Objective c 访问键盘API,objective-c,xcode,macos,cocoa,Objective C,Xcode,Macos,Cocoa,我希望在Mac应用程序中拦截键盘事件 我希望用户启动一个“记录”活动,该活动将复制密钥,然后启动一个“停止”活动 这可以通过Cocoa的Mac API实现吗?看一看NSEvent方法addLocalMonitorForEventsMatchingMask:handler:。这将允许您接收应用程序中发生的事件(尤其是在您的情况下的按键事件),然后您可以使用该方法返回的按键执行任何操作。以下是如何使用该方法的简单示例: self.keystrokes = [NSMutableString strin
这可以通过Cocoa的Mac API实现吗?看一看NSEvent方法addLocalMonitorForEventsMatchingMask:handler:。这将允许您接收应用程序中发生的事件(尤其是在您的情况下的按键事件),然后您可以使用该方法返回的按键执行任何操作。以下是如何使用该方法的简单示例:
self.keystrokes = [NSMutableString string];
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:^NSEvent* (NSEvent* event){
NSString *keyPressed = event.charactersIgnoringModifiers;
[self.keystrokes appendString:keyPressed];
return event;
}];
要截取所有键盘输入(如果需要,还可以截取鼠标),请查看。有一些代码演示了API的使用。当然你不能截取其他应用程序的按键,是吗?我相信你可以,但是使用全局监视器而不是本地监视器(也是一种NSEvent方法)。使用NSEvent API进行全局监视的大问题是,某些类型的事件你无法获取。(根据操作系统版本的不同,列表略有不同。)因此,如果你必须在Lion中记录全局热键,它们就不会出现。如果您关心这些情况中的任何一个,您别无选择,只能从另一个答案中选择CGEventTap级别。