我刚刚尝试了addLocalMonitorForEventsMatchingMask:handler:
NSEvent 中的方法并遇到了以下问题:如何确定是否只按下了某些修饰符?
将此问题置于上下文中的一个简短示例:我想听快捷键“⌘+W”。因此,我编写了以下代码:
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *theEvent) {
if ([theEvent modifierFlags] & NSCommandKeyMask && [theEvent keyCode] == 13) {
[self.window performClose:self];
}
return theEvent;
}];
这很好用,但是即使按下了更多修饰键,也会触发快捷方式,例如“⌃+⌘+W”或“⇧+⌃+⌥+⌘+W”。有没有办法绕过这个?
一个简单的解决方案是检查所有其他修饰键并确保它们没有被按下。这似乎很乏味且容易出错 - 除了它现在与一元“&”一样丑陋之外。此外,如果(出于某种原因)在键盘布局中添加了另一个修饰键,您可能会遇到麻烦。
一如既往,我感谢任何建议。