我正在尝试为我的mac应用程序检测系统范围的键盘输入。为此,我使用以下代码:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSEventMaskKeyDown
handler:^(NSEvent *event) {
NSString *eventChars = [event characters];
unichar keyChar = [eventChars characterAtIndex:0];
NSLog(@"keyboard char is %c",keyChar);
}];
虽然这可以完美地运行并跟踪在Safari上任何位置输入的键盘输入,但只有当用户尝试在任何网页中输入密码时,处理程序才会被触发(例如:facebook登录页面中的密码框,任何带密码框的登录页面) 。虽然可以跟踪用户名输入,但密码输入不能。
这是预期的行为还是我遗漏了一些东西,因为这与Chrome完美配合。所有键盘输入都可以通过Google Chrome的全局监视器进行跟踪。但仅限于Safari中的这种特殊情况。
答案 0 :(得分:0)
发送到NSSecureTextField
(或NSSecureTextFieldCell
)的关键事件被屏蔽,以便事件监视器不会拦截或读取它们。这是一项安全功能,可以防止应用程序在输入密码时窃取密码,并且没有API可以绕过它。