模拟 kCGEventOtherMouseDown 仅适用于右键单击

Simulating a kCGEventOtherMouseDown only works for right-clicking

以下右键单击代码有效:

auto event = CGEventCreateMouseEvent(nullptr, kCGEventOtherMouseDown,
                                     {x, y}, kCGMouseButtonRight);
CGEventSetIntegerValueField(event, kCGMouseEventClickState, 1);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);

然而,将 kCGMouseButtonRight 替换为 kCGMouseButtonLeft 的完全相同的代码不会。

旁注:我想知道这是否是由于后一个事件没有注册,所以我尝试了 a "Key Test" 并发现这两个事件都注册为中间按钮(尽管右键单击按预期工作用于其他应用程序)。

为什么左键点击不起作用,我该如何实现?

我使用 kCGEventLeftMouseDown 而不是 kCGEventOtherMouseDown 解决了这个问题。这与 Apple documentation of kCGEventOtherMouseDown:

Specifies a mouse down event with one of buttons 2-31.

(左 = 0,右 = 1,中 = 2,额外按钮 = 3-31)

这也解释了为什么网站将左和右注册为中心,但它没有解释为什么右键单击仍然有效(打开上下文菜单),但我想这就是你在不看的时候要处理的问题文档正确。