【问题标题】:Simulating a kCGEventOtherMouseDown only works for right-clicking模拟 kCGEventOtherMouseDown 仅适用于右键单击
【发布时间】:2021-10-24 20:45:06
【问题描述】:

以下代码用于右键单击工作:

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

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

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

为什么左键不起作用,我该如何做?

【问题讨论】:

    标签: c++ macos mouseevent simulate quartz


    【解决方案1】:

    我能够通过使用kCGEventLeftMouseDown 而不是kCGEventOtherMouseDown 来解决这个问题。这与Apple documentation of kCGEventOtherMouseDown 密切相关:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多