好的,我知道如何从NSEvent中确定是否按下了修改键:
if ([theEvent modifierFlags] & NSAlternateKeyMask) {
// The Option/Alt key was pressed
}
但这也会同时捕获optionkey和另一个修饰符key,例如Option+Shift,或与optionkey的任何组合。
如何只测试选项键而不测试其他选项键?
像这样:
const NSUInteger kNotAlt = NSAlphaShiftKeyMask | NSShiftKeyMask | NSControlKeyMask | NSCommandKeyMask;
NSUInteger modFlags = [theEvent modifierFlags];
if (((modFlags & NSAlternateKeyMask) != 0) &&
((modFlags & kNotAlt) == 0))
{
// Only alt was pressed
}
您也可以尝试
NSUInteger modFlags = [theEvent modifierFlags];
if ((modFlags & NSCommandKeyMask) && !(modFlags & ~NSCommandKeyMask))
{
// Only alt was pressed
}