模拟kcgeventtothermousedown只适用于右键单击



右键操作的代码如下:

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

但是,用kCGMouseButtonLeft代替kCGMouseButtonRight的完全相同的代码没有。

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

为什么左键不工作,我该怎么做?

我能够通过使用kCGEventLeftMouseDown而不是kCGEventOtherMouseDown来解决这个问题。这与Apple的kCGEventOtherMouseDown文档:

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

(left = 0, right = 1, center = 2, extra buttons = 3-31)

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

最新更新