使用 NSEvent 在 OS X 上捕获其他鼠标按钮事件

Capture other mouse button events on OS X with NSEvent

我正在尝试捕获 OS X Yosemite 上的鼠标点击。

据我了解,这段代码应该可以工作:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSOtherMouseDown
    handler:^(NSEvent *event) {
       NSLog(@"Mouse Down, Button: %ld", event.buttonNumber);
    }];

但是,它仅适用于鼠标右键事件,不适用于其他按钮(即多按钮鼠标上的按钮 4、5、6 等)。

使用 Quartz Event Taps,我能够检测到鼠标在这些按钮上的点击,如下所示:

CGEventTapCreate(kCGSessionEventTap,
                 kCGHeadInsertEventTap,
                 0,
                 CGEventMaskBit(kCGEventOtherMouseUp) | CGEventMaskBit(kCGEventOtherMouseDown),
                 MouseEventCallback,
                 NULL);

但我更愿意使用 NSEvent API,因为它更直接。

关于如何使用 NSEvent 捕获其他鼠标按钮事件有什么想法吗?

这可能只是您问题中的错字?,但您的代码缺少 NSEventMaskFromType,例如:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSEventMaskFromType(NSOtherMouseDown) ..
                                               ^^^^^^^^^^^^^^^^^^^