4

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

假设监视器如下...

_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] is 0 and [event modifierFlags] is 0

问题:

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

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

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

我在 10.7.3。

4

0 回答 0