Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 访问键盘API_Objective C_Xcode_Macos_Cocoa - Fatal编程技术网

Objective c 访问键盘API

Objective c 访问键盘API,objective-c,xcode,macos,cocoa,Objective C,Xcode,Macos,Cocoa,我希望在Mac应用程序中拦截键盘事件 我希望用户启动一个“记录”活动,该活动将复制密钥,然后启动一个“停止”活动 这可以通过Cocoa的Mac API实现吗?看一看NSEvent方法addLocalMonitorForEventsMatchingMask:handler:。这将允许您接收应用程序中发生的事件(尤其是在您的情况下的按键事件),然后您可以使用该方法返回的按键执行任何操作。以下是如何使用该方法的简单示例: self.keystrokes = [NSMutableString strin

我希望在Mac应用程序中拦截键盘事件

我希望用户启动一个“记录”活动,该活动将复制密钥,然后启动一个“停止”活动


这可以通过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级别。