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

C++ 有没有办法在Windows上区分轨迹板和鼠标?,c++,winapi,mouse,trackpad,C++,Winapi,Mouse,Trackpad,我正在寻找一种方法来确定我的游戏运行的计算机是否连接了鼠标或触摸板,以便我可以相应地设置默认控件。我试图区分桌面上的典型键盘+鼠标设置和笔记本电脑,笔记本电脑可能有也可能没有外部鼠标,但会有内置的轨迹板 在伪代码中,这就是我试图实现的目标: if (hasMouse()) { setUpMouseControls(); } else if (hasTrackPad()) { setUpTrackPadControls(); } 是否有一个API使其可行?我的支持目标是Windo

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

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

if (hasMouse())
{
    setUpMouseControls();
}
else if (hasTrackPad())
{
    setUpTrackPadControls();
}

是否有一个API使其可行?我的支持目标是Windows 7+。我用C++编写游戏。

< P>一些轨迹板具有特殊功能,可以与一个特殊的驱动程序一起使用(比如在轨迹板的边框上滚动条)。在这种情况下,可能会检测到某个设备驱动程序(例如Acme Trackpad驱动程序)的存在

然而,这只适用于某些履带板型号

您始终可以通过VID/PID检测USB触控板

但是,这两种方法仅适用于程序已知的轨迹板型号

其他的轨迹板(特别是PS/2的——可能内置在笔记本电脑中)不把自己识别为轨迹板——它们“告诉”电脑它们是一个普通的鼠标

没有机会检测到这样的触控板

点击此链接:

您可以使用RegisterRarWinPutDevices函数接收WM_输入消息。使用此消息,您可以确定输入设备的类型,然后设置默认控件