Cocoaでキーボードの押下状態取得その2


やあ子どもたち。元気でやっているか。six figure salary の意味は皆知ってるかな。これはsix figure つまり6桁ドル稼ぐ人=年収が大台に乗っている人のことを指すそうだぞ。勉強になったな。
さて暖かくなってきたからといって夜更かししまくるのではなく、早く寝て、その分早起きしてやった方が何にしても効率があがるから実行してみよう。

今日はCocoaでキーボード取得の第2弾だ。前回は、コードの任意箇所で、今キーボードのどのキーが押されているかということを調べるための内容を扱ったが、今回は、SHIFTキーが押されたり、リリースされたりするのを検出する方法についてメモしておくぞ。
まずは、ViewをFirstResponderにします。

- (void)awakeFromNib
{
    //..
    [[self window] makeFirstResponder: self];
    //..

次に、以下をオーバーライドします。

- (void)flagsChanged:(NSEvent *)event
{
    if ([event modifierFlags] & NSShiftKeyMask) {
        NSLog( @"SHIFT key has pressed" );
    }else{
        NSLog( @"SHIFT key has released" );
    }
    return;
}

いかがだろうか。SHIFTキーもキーなので、ついkeyDown()とかをオーバーライドしたくなってしまいがちだが、それではだめさ。
AltやCommand、Shiftといったキーは、普通のキーではなくて、普通のキーに付加的な意味を与えるための「修飾キー」という扱いで、その状態は「修飾フラグ」とでも呼ぶべき、modifierFlagというものに反映されるようになっている。
なので、このフラグが変換した時に呼ばれるコールバックで押した離したを取得するという寸法だ。
それでは今日はこの辺で。チャオ!