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