NSEvent: тестирование только для одного modfierkey - PullRequest
5 голосов
/ 04 февраля 2012

Хорошо, я понимаю, как определить из NSEvent, нажата ли клавиша-модификатор:

if ([theEvent modifierFlags] & NSAlternateKeyMask) {
        // The Option/Alt key was pressed
    }

Но при этом одновременно фиксируются также клавиша-опция и другая клавиша-модификатор, например, Option + Shift, или любая комбинацияс помощью опции.

Как проверить только опция и ничего больше?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Вы также можете попробовать

NSUInteger modFlags = [theEvent modifierFlags];
if ((modFlags & NSCommandKeyMask) && !(modFlags & ~NSCommandKeyMask))
{
    // Only alt was pressed
}
4 голосов
/ 04 февраля 2012

Как это:

const NSUInteger kNotAlt = NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask;
NSUInteger modFlags = [theEvent modifierFlags];
if (((modFlags & NSAlternateKeyMask) != 0) &&
    ((modFlags & kNotAlt) == 0))
{
    // Only alt was pressed
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...