有没有办法在Windows上区分轨迹板和鼠标

Is there a way to distinguish a track pad from a mouse on Windows?

本文关键字:轨迹 鼠标 Windows 有没有      更新时间:2023-10-16

我正在寻找一种方法来确定运行游戏的计算机是否连接了鼠标或触控板,这样我就可以相应地设置默认控件。我试图区分你在台式机上发现的典型键盘+鼠标设置与笔记本电脑,笔记本电脑可能有也可能没有外部鼠标,但会有内置触控板。

在伪代码中,这就是我试图实现的:

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消息。使用此消息,您可以确定输入设备的类型,然后设置默认控件。