最多支持十一个鼠标按钮?
Support for up to eleven mouse buttons?
我正在编写一个小的概念证明,用于检测 Windows 上鼠标和键盘的额外输入,这是否可能以及如何检测 [=12] 中大量按钮的输入=] API?据我所知,只支持 5 个按钮,但许多鼠标的按钮比这更多,我的问题甚至可以用 Windows API,是否有可能在 Windows?
您可以直接从 mouse/keyboard 驱动程序使用 Raw Input API to receive WM_INPUT
消息。有 5 个标准鼠标按钮(左、中、右、x1 和 x2)的结构字段。除了标准按钮之外,其他按钮由您必须根据需要进行编码的供应商特定数据处理。 API 可以让您访问原始值,但您必须参考供应商驱动程序文档以了解如何解释它们。有时额外的按钮实际上被报告为键盘输入而不是鼠标输入。
或者,尝试使用 DirectInput API to interact with DirectInput devices to receive Mouse Data and Keyboard Data。
或者,您可以使用 XInput API, which is the successor of DirectInput. However, XInput is more limited than DirectInput, as it is designed primarily for interacting with the Xbox 360 controller, whereas DirectInput is designed to interact with any controller. See XInput and DirectInput 了解更多详情。
很简单:使用GetKeyState
SHORT WINAPI GetKeyState(
_In_ int nVirtKey
);
接下来是逻辑:
- 要求用户不要按按钮
- 所有按钮 0-255
循环 GetKeyState
- Drop pressed buttons state(有些虚拟键不按也能按,不知道为什么)
- 现在启动键监视线程以获取剩余键代码并将它们保存到任何结构(循环之间的暂停时间为 25 毫秒就足够了)
- 要求用户按下按钮
- 从按键监视器数组中,您将看到用户按下的任何按钮
直接输入和所有其他输入更适用于其他用户输入设备。对于键盘和鼠标 - GetKeyState
最好。
我正在编写一个小的概念证明,用于检测 Windows 上鼠标和键盘的额外输入,这是否可能以及如何检测 [=12] 中大量按钮的输入=] API?据我所知,只支持 5 个按钮,但许多鼠标的按钮比这更多,我的问题甚至可以用 Windows API,是否有可能在 Windows?
您可以直接从 mouse/keyboard 驱动程序使用 Raw Input API to receive WM_INPUT
消息。有 5 个标准鼠标按钮(左、中、右、x1 和 x2)的结构字段。除了标准按钮之外,其他按钮由您必须根据需要进行编码的供应商特定数据处理。 API 可以让您访问原始值,但您必须参考供应商驱动程序文档以了解如何解释它们。有时额外的按钮实际上被报告为键盘输入而不是鼠标输入。
或者,尝试使用 DirectInput API to interact with DirectInput devices to receive Mouse Data and Keyboard Data。
或者,您可以使用 XInput API, which is the successor of DirectInput. However, XInput is more limited than DirectInput, as it is designed primarily for interacting with the Xbox 360 controller, whereas DirectInput is designed to interact with any controller. See XInput and DirectInput 了解更多详情。
很简单:使用GetKeyState
SHORT WINAPI GetKeyState(
_In_ int nVirtKey
);
接下来是逻辑:
- 要求用户不要按按钮
- 所有按钮 0-255 循环
- Drop pressed buttons state(有些虚拟键不按也能按,不知道为什么)
- 现在启动键监视线程以获取剩余键代码并将它们保存到任何结构(循环之间的暂停时间为 25 毫秒就足够了)
- 要求用户按下按钮
- 从按键监视器数组中,您将看到用户按下的任何按钮
GetKeyState
直接输入和所有其他输入更适用于其他用户输入设备。对于键盘和鼠标 - GetKeyState
最好。