我正在使用原始输入实现鼠标输入。 但缺点是,指针弹道不包括在内。不幸的是,微软处理这个话题的网站不再上网了。此外,我无法找到一个函数检索窗口中设置的指针加速度(也许我太愚蠢)。原始输入和光标加速
我该如何获得加速度,以及如何使用它来计算原始x和y偏移量之外的新直观光标位置?
编辑:
所以关于IInspectable张贴在他的评论的文档,计算加速的代码将是:
long xPos = raw->data.mouse.lLastX;
long yPos = raw->data.mouse.lLastY;
int speed;
int acceleration[3];
SystemParametersInfo(SPI_GETMOUSESPEED, 0, &speed, 0);
SystemParametersInfo(SPI_GETMOUSE, 0, acceleration, 0);
if (acceleration[2] > 0 && acceleration[0] < abs(raw->data.mouse.lLastX))
xPos *= 2;
else if (acceleration[2] > 1 && acceleration[1] < abs(raw->data.mouse.lLastX))
xPos *= 2;
if (acceleration[2] > 0 && acceleration[0] < abs(raw->data.mouse.lLastX))
yPos *= 2;
else if (acceleration[2] > 1 && acceleration[1] < abs(raw->data.mouse.lLastX))
yPos *= 2;
xPos *= round((float)speed/10.0f);
yPos *= round((float)speed/10.0f);
我说得对,这是如何加速添加到原始鼠标输入?
奇怪的是,即使我改变窗口中的指针加速度,当我使用SystemParametersInfo和SPI_GETMOUSE检索加速度时,值仍然保持在{6,10,1}。
您查询通过使用'SPI_GETMOUSE'参数调用[SystemParametersInfo](https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947.aspx)来实现鼠标加速。有关鼠标加速的信息,请参见[mouse_event](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260.aspx)文档的*备注*部分。 – IInspectable