右键操作的代码如下:
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)
这也解释了为什么网站注册左&右居中,但它没有解释为什么右键仍然有效(打开上下文菜单),但我猜这就是你在不正确查看文档时要处理的问题。