5

好的,我了解如何从 NSEvent 确定是否按下了修饰键:

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

但这也会同时捕获选项键和另一个修饰键,例如 Option+Shift 或与选项键的任何组合。

如何测试optionkey 而没有其他内容?

4

2 回答 2

4

像这样:

const NSUInteger kNotAlt = NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask;
NSUInteger modFlags = [theEvent modifierFlags];
if (((modFlags & NSAlternateKeyMask) != 0) &&
    ((modFlags & kNotAlt) == 0))
{
    // Only alt was pressed
}
于 2012-02-04T15:49:17.480 回答
4

你也可以试试

NSUInteger modFlags = [theEvent modifierFlags];
if ((modFlags & NSCommandKeyMask) && !(modFlags & ~NSCommandKeyMask))
{
    // Only alt was pressed
}
于 2012-02-05T00:06:07.843 回答