7

每次用户按键时是否可以运行一个方法。基本上我想在按下一个键时发出类似 iPhone 或 iPad 上的声音。我不想在我的窗口或某个控件中检测按键,我想检测所有按键(例如当他们在 Safari 中输入或其他内容时。我不需要知道键是什么。

谢谢

4

3 回答 3

11

使用CGEventTapCreate记录在这里:

https://developer.apple.com/library/mac/#documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html

或使用此处记录的 NSEvents addGlobalMonitorForEventsMatchingMask:handler:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/nsevent_Class/Reference/Reference.html

NSEvent 示例:

[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:^(NSEvent *event){
    [self keyWasPressedFunction: event];
    //Or just put your code here
}];

我会说 NSEvents 更容易......

笔记:

出于安全原因,Apple 要求您在“系统偏好设置”中打开“启用辅助设备访问”,以便使用上述方法。

于 2012-04-29T01:45:17.883 回答
3

您可以使用 Quartz 事件点击非常接近,但为了安全起见,即使使用一个按键也无法检测到某些按键。

如果您告诉我们您心目中的更广泛目标,我们可以提出替代方案。您是否正在尝试为您的应用程序建立一个全局热键?您是在编写键盘记录程序还是恶意软件?什么?

于 2012-04-29T01:42:38.053 回答
1

采用NSEvents addGlobalMonitorForEventsMatchingMask:handler:

applicationDidFinishLaunching添加以下代码,构建并开始!

[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:^(NSEvent *event){
NSLog(@"%@", event.characters);
}];

Apple 要求您在“系统偏好设置”中打开“启用辅助设备访问”。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/nsevent_Class/Reference/Reference.html

于 2013-06-06T02:16:54.977 回答