Я только что экспериментировал с методом addLocalMonitorForEventsMatchingMask:handler:
в NSEvent и натолкнулся на следующий вопрос: Как мне узнать, были ли нажаты only *1004* определенные модификаторы?
Короткий пример, чтобы задать этот вопрос в контексте: я хотел послушать ярлык "& # x2318; + W". Поэтому я написал следующий код:
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *theEvent) {
if ([theEvent modifierFlags] & NSCommandKeyMask && [theEvent keyCode] == 13) {
[self.window performClose:self];
}
return theEvent;
}];
Это работает хорошо, однако ярлык будет срабатывать, даже если нажаты другие клавиши-модификаторы, например, "& # x2303; + & # x2318; + W" или "& # x21E7; + & # x2303; + & # x2325; + & # x2318; + W". Есть ли способ обойти это?
Простым решением было бы проверить все остальные клавиши-модификаторы и убедиться, что они не нажаты. Это кажется утомительным и подверженным ошибкам - к тому же это достаточно уродливо, как сейчас с унарным «&». Кроме того, у вас могут возникнуть проблемы, если (по какой-либо причине) добавить другую клавишу-модификатор в раскладки клавиатуры.
Как всегда, я благодарен за любые рекомендации.