有没有办法在Windows上区分轨迹板和鼠标
Is there a way to distinguish a track pad from a mouse on Windows?
我正在寻找一种方法来确定运行游戏的计算机是否连接了鼠标或触控板,这样我就可以相应地设置默认控件。我试图区分你在台式机上发现的典型键盘+鼠标设置与笔记本电脑,笔记本电脑可能有也可能没有外部鼠标,但会有内置触控板。
在伪代码中,这就是我试图实现的:
if (hasMouse())
{
setUpMouseControls();
}
else if (hasTrackPad())
{
setUpTrackPadControls();
}
有没有一个API可以实现这一点?我的支持目标是Windows7+。我正在用C++编写游戏。
一些触控板具有特殊功能,可以与特殊驱动程序一起使用(如触控板边界的滚动条)。在这种情况下,可能检测到某个设备驱动程序(例如Acme Trackpad驱动程序)的存在。
然而,这只适用于某些履带板型号!
你总是可以通过VID/PID检测到USB触控板。
然而,这两种方法只适用于程序已知的触控板模型。
其他触控板(尤其是PS/2触控板——可能内置在笔记本电脑中)不会将自己识别为触控板——它们会"告诉"电脑它们是一只普通的鼠标。
没有机会检测到这样的触控板!
点击此链接:http://msdn.microsoft.com/en-us/library/ms645600%28VS.85%29.aspx
您可以使用RegisterRawInputDevices函数来接收WM_INPUT消息。使用此消息,您可以确定输入设备的类型,然后设置默认控件。
相关文章:
- WinAPI挂钩鼠标
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- Win32 发送输入鼠标移动滞后并冻结
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在QSplashScreen中禁用鼠标单击
- C++鼠标单击时的屏幕截图不起作用
- 如何将鼠标坐标转换为"mm"
- 标签检测鼠标单击 c++
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在 OpenGL 中使用透视与正交投影时的光线投射(鼠标拾取)
- 如何使用鼠标单击选择多个 QLabel 对象?
- 有没有办法在Windows上区分轨迹板和鼠标