потому что это делает мир разницы ...
сто экспериментировал с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». Есть ли способ обойти это?
Простым решением было бы проверить все остальные клавиши-модификаторы и убедиться, что они не нажаты. Это кажется утомительным и подверженным ошибкам - к тому же это достаточно уродливо, как сейчас с унарным «&». Кроме того, у вас могут возникнуть проблемы, если (по какой-то причине) добавить другую клавишу-модификатор в раскладки клавиатуры.
Как всегда, я благодарен за любые рекомендации.