C# Control.OnKeyDown是否由Logitech鼠标触发?

C# Control.OnKeyDown是否由Logitech鼠标触发?,c#,mousewheel,onkeydown,logitech,C#,Mousewheel,Onkeydown,Logitech,在我的C#应用程序中,我在OnKeyDown中处理CTRL和SHIFT,如下所示。它按预期工作。但是,当我按下Logitech M705上的中间按钮时,会出现一系列不需要的按键事件。foo()和bar()都会被调用,这显然是不必要的行为。(我想驱动程序会产生几个按键来激活一些特殊的缩放工具?) Q:如何检测这些模拟按键?或者,如何防止在这种特殊情况下调用OnKeyDown protected override void OnKeyDown(System.Windows.Forms.KeyEven

在我的C#应用程序中,我在
OnKeyDown
中处理CTRL和SHIFT,如下所示。它按预期工作。但是,当我按下Logitech M705上的中间按钮时,会出现一系列不需要的按键事件。
foo()
bar()
都会被调用,这显然是不必要的行为。(我想驱动程序会产生几个按键来激活一些特殊的缩放工具?)

Q:如何检测这些模拟按键?或者,如何防止在这种特殊情况下调用
OnKeyDown

protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
    if (e.KeyCode == Keys.ShiftKey)
        foo();
    else if (e.KeyCode == Keys.ControlKey)
        bar();
}

在我看来,您的logitec驱动程序有一个特定的键组合宏绑定到您的鼠标中键单击。由于驱动程序有意模拟键盘输入,我不确定是否可以过滤掉“假”按键。

您在Logitech软件中设置了宏吗?我在Logitech
设置点中设置了默认设置。没有宏。我想可以使用应用程序范围的
WH\u-KEYBOARD\u-LL
hook并检查
LLKHF\u-INJECTED
标志来完成。啊…:/如果鼠标显示为多个HID设备,这实际上可能是在硬件中完成的-在这种情况下,LLKHF_注入标志将不存在。我知道G9和类似的车型确实如此。谢谢你提供的信息。那就没有办法了……:/