потому что это делает мир разницы ...

сто экспериментировал с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». Есть ли способ обойти это?

Простым решением было бы проверить все остальные клавиши-модификаторы и убедиться, что они не нажаты. Это кажется утомительным и подверженным ошибкам - к тому же это достаточно уродливо, как сейчас с унарным «&». Кроме того, у вас могут возникнуть проблемы, если (по какой-то причине) добавить другую клавишу-модификатор в раскладки клавиатуры.

Как всегда, я благодарен за любые рекомендации.

Ответы на вопрос(2)

Ваш ответ на вопрос