2012-02-04 14 views
5

[OK]を、私はmodifierkeyが押された場合NSEventから決定する方法を理解する:NSEvent:一つだけmodfierkeyためのテスト

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

をしかし、これはまた、オプションキーと同時に別のmodifierkey、例えばオプションをキャプチャ+ Shiftキー、またはオプションキーとの任意の組み合わせ。

のみをテストするにはオプションキーは何もありませんか?このよう

答えて

4

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

感謝を試すことができます - 私はNSEventのカテゴリにこれを作成し、同様に他のキーのための同様の方法を追加します。 – Koen

+0

素晴らしい!これで問題が解決した場合は、左側の緑色のチェックボックスをクリックしてください。 – user1118321

4

あなたはまた、

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

ありがとうございました。その間、私はまた、より一般的な別のソリューションを見つけました。私はフォーマットが大丈夫だと思います。
'NSUInteger修飾子= [イベント修飾子フラグ]&(NSCommandKeyMask | NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask);
if(修飾子== NSAlternateKeyMask)
{
// altのみが押された
} ' – Koen