flagsChanged: で keyup か keydown か調べる

keyCode > modifierFlag の変換テーブルを用意して [event modifierFlags] をチェックする、よりスマートな方法があればいいんだけど

- (void)flagsChanged:(NSEvent *)event
{
  unsigned short keyCode = [event keyCode];
  if ([event modifierFlags] & [self modifierFlag:keyCode]) {
    NSLog(@"flags down: %hu", keyCode);
  } else {
    NSLog(@"flags up: %hu", keyCode);
  }
}

- (NSUInteger)modifierFlag:(unsigned short)keyCode
{
  ...