NSEvent: test for only one modfierkey

2.4k views Asked by At

Ok, I understand how to determine from an NSEvent if a modifierkey is pressed :

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

But this also captures the optionkey and another modifierkey at the same time, eg Option+Shift, or any combination with the optionkey.

How do I test for only the optionkey and nothing else?

2

There are 2 answers

2
user1118321 On BEST ANSWER

Like this:

const NSUInteger kNotAlt = NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask;
NSUInteger modFlags = [theEvent modifierFlags];
if (((modFlags & NSAlternateKeyMask) != 0) &&
    ((modFlags & kNotAlt) == 0))
{
    // Only alt was pressed
}
1
Tony On

You can also try

NSUInteger modFlags = [theEvent modifierFlags];
if ((modFlags & NSCommandKeyMask) && !(modFlags & ~NSCommandKeyMask))
{
    // Only alt was pressed
}