В настоящее время я реализую ввод с помощью мыши, используя необработанный ввод. Недостатком является то, что баллистический указатель не включен. К сожалению, веб-сайт Microsoft, посвященный этой теме, больше не доступен в сети. Кроме того, я не могу найти функцию, извлекающую ускорение указателя, установленное в Windows (может быть, я слишком глуп).
Как мне получить ускорение и как его использовать для расчета новой интуитивно понятной позиции курсора из исходного смещения 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
параметр. Информация об ускорении мыши доступна в разделе Примечания mouse_event. - person IInspectable   schedule 26.04.2016