是否有可能在用户每次按下按键时运行方法。基本上我想在按下按键时运行iPhone或iPad上的声音。 我不希望在我的窗口或某个控件中检测到按键,我想要检测所有按键(例如,当他们在Safari中输入什么内容时)我不需要知道密钥是什么Objective-C/Cocoa:检测所有按键
感谢
是否有可能在用户每次按下按键时运行方法。基本上我想在按下按键时运行iPhone或iPad上的声音。 我不希望在我的窗口或某个控件中检测到按键,我想要检测所有按键(例如,当他们在Safari中输入什么内容时)我不需要知道密钥是什么Objective-C/Cocoa:检测所有按键
感谢
使用CGEventTapCreate
这里记载:
或者使用NSEvents addGlobalMonitorForEventsMatchingMask:handler:
这里记载:
NSEvent例子:
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:^(NSEvent *event){
[self keyWasPressedFunction: event];
//Or just put your code here
}];
我想说NSEvents更容易。 ..
注:
出于安全原因,苹果要求你“启用辅助设备的访问”系统偏好设置开启,为了使用上述方法醚。
是的,一个示例会很有用,谢谢。 – 2012-04-29 01:55:38
@Oliver:好的,添加NSEvent示例,CGEventTaps要复杂得多,对于你想要做的事情来说不是必需的。 – Teak 2012-04-29 02:08:35
你可以得到相当接近有石英事件丝锥,但有些按键都不能检测甚至一个安全。
着想。如果你告诉我们你心目中的大目标,我们可以提出其他建议,您是否正在尝试为您的应用建立一个全球热键?您正在编写键盘记录程序还是恶意软件?什么?
所有我想要要做的就是制作一款应用程序,当他们按下某个键时,可以播放iPad或iPhone按键的敲击噪音。 – 2012-04-29 01:44:05
然后,你应该看看事件水龙头。同样,出于安全原因,并非所有按键都可以被检测到(例如,当使用密码字段时,您无法获得按键事件。) – 2012-04-29 01:44:56
使用NSEvents addGlobalMonitorForEventsMatchingMask:handler:
在applicationDidFinishLaunching
添加以下代码,建立&去!
[NSEvent addGlobalMonitorForEventsMatchingMask:(NSKeyDownMask) handler:^(NSEvent *event){
NSLog(@"%@", event.characters);
}];
Apple要求您在系统偏好设置中启用“启用对辅助设备的访问”。
不要忘记在applicationWillClose函数中释放监视器 – jQwierdy 2015-10-21 19:03:40
这是一个有点题外话,但目前已经是现有做到这一点的应用程序:http://sustworks.com/site/prod_keyclick_overview.html(然而付费软件) – Teak 2012-04-29 01:49:55