修饰符标志的NSEvent全局事件监视返回混合结果

时间:2012-03-07 13:41:59

标签: objective-c macos cocoa nsevent

关于修改标志更改的全局监控,出现了一个特殊问题。

假设显示器如下......

_flagsChangedGlobalEventHandler = [NSEvent addGlobalMonitorForEventsMatchingMask:NSFlagsChangedMask
handler:^(NSEvent *event) {

    NSLog(@"Global flags changed event");

    NSLog(@"[NSEvent modifierFlags] is %i and [event modifierFlags] is %i",
          [NSEvent modifierFlags], [event modifierFlags]);
}

最初,当按下左命令时,日志提供以下内容:

[NSEvent modifierFlags]为1048576,[event modifierFlags]为1048840

并在释放左命令后:

[NSEvent modifierFlags]为0且[event modifierFlags]为256

现在,在我使用标题栏区域上的三个手指按住MacBook上的窗口后,同一个显示器的结果如下:

[NSEvent modifierFlags]为1048576,[event modifierFlags]为1048584

并在释放左命令后: [NSEvent modifierFlags]为0,[event modifierFlags]为0

问题:

  1. 为什么[event modifierFlags]会返回不同的值,特别是当没有保存修饰符时为256?

  2. 为什么三指窗口移动手势导致[event modifierFlags]改变-256?

  3. 我认为它可能与大写锁定有关,但我不确定为什么类和ivar modifierFlags会返回不同的结果。

    我在10.7.3。

0 个答案:

没有答案