From: pls123 on


Hello !!

i need to make a little change to the normal behavior of the mouse....

the normal relation between mouse movement and pointer is linear..
but i neeed it to be with a little exponential correction:

pointermovement = mousemovement ^1,1 (value at editable user's choice)

this is to have a kind of continuous acceleration,
necessary to have more precision for the pointer at low speed of mouse,
and also more response when making a fast spin ...

what should i do..?

tx paolo ita

From: Doron Holan [MSFT] on
windows already does something similar. while the raw data from the hw is
linear, windows computes mouse movement in a non linear fashion. if you
really think you want to do this, write a mouse upper filter driver and
alter the raw hardware information. remember that there is no floating
point math libraries available to you in the kenrel.

d

--

This posting is provided "AS IS" with no warranties, and confers no rights.


"pls123" <pls123(a)discussions.microsoft.com> wrote in message
news:3C0D9BF4-EEBF-4F6C-A680-019074642303(a)microsoft.com...
>
>
> Hello !!
>
> i need to make a little change to the normal behavior of the mouse....
>
> the normal relation between mouse movement and pointer is linear..
> but i neeed it to be with a little exponential correction:
>
> pointermovement = mousemovement ^1,1 (value at editable user's choice)
>
> this is to have a kind of continuous acceleration,
> necessary to have more precision for the pointer at low speed of mouse,
> and also more response when making a fast spin ...
>
> what should i do..?
>
> tx paolo ita
>
From: m on
IIRC a similar algorithm has been implemented by Microsoft and the
parameters are adjustable via control panel -> mouse / registry settings.

"Doron Holan [MSFT]" <doron.holan(a)online.microsoft.com> wrote in message
news:ecr0UT#3KHA.5324(a)TK2MSFTNGP05.phx.gbl...
> windows already does something similar. while the raw data from the hw is
> linear, windows computes mouse movement in a non linear fashion. if you
> really think you want to do this, write a mouse upper filter driver and
> alter the raw hardware information. remember that there is no floating
> point math libraries available to you in the kenrel.
>
> d
>
> --
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
>
> "pls123" <pls123(a)discussions.microsoft.com> wrote in message
> news:3C0D9BF4-EEBF-4F6C-A680-019074642303(a)microsoft.com...
>>
>>
>> Hello !!
>>
>> i need to make a little change to the normal behavior of the mouse....
>>
>> the normal relation between mouse movement and pointer is linear..
>> but i neeed it to be with a little exponential correction:
>>
>> pointermovement = mousemovement ^1,1 (value at editable user's choice)
>>
>> this is to have a kind of continuous acceleration,
>> necessary to have more precision for the pointer at low speed of mouse,
>> and also more response when making a fast spin ...
>>
>> what should i do..?
>>
>> tx paolo ita
>>
From: USH on
Hi sorry for the delay..
there was a problem with EMail notification...

tx Doron for help but i don't have any idea about how to procede in that way
!!

i could follow the way suggested by m ,
but i have no link to the registry in my vista control panel / mouse ...

perhaps because i have intellipoint panel installed, but it should add
things and not hide others !!

i heard by a friend about making a mouse hook..
should i study for it ??
tx for any suggestion !!


"pls123" wrote:

>
>
> Hello !!
>
> i need to make a little change to the normal behavior of the mouse....
>
> the normal relation between mouse movement and pointer is linear..
> but i neeed it to be with a little exponential correction:
>
> pointermovement = mousemovement ^1,1 (value at editable user's choice)
>
> this is to have a kind of continuous acceleration,
> necessary to have more precision for the pointer at low speed of mouse,
> and also more response when making a fast spin ...
>
> what should i do..?
>
> tx paolo ita
>
From: Ray Trent on
On 4/19/2010 10:21 AM, Doron Holan [MSFT] wrote:
> you really think you want to do this, write a mouse upper filter driver
> and alter the raw hardware information. remember that there is no
> floating point math libraries available to you in the kenrel.

Unfortunately, this advice isn't entirely possible to actually implement. The function Windows uses
is non-reversible, optimized for mice only, and has some really quirky and subtle bugs/"features"
that I've tried to get fixed in the past with little success.

Perhaps the most obvious of the difficulties is that you can only send integer amounts of motion in
X and Y, and that quantization is amplified by the Windows transfer functions in non-reversible
ways. You also can't just send a whole bunch of single mickey movements because of some bugs in the
way Windows tries to compensate for mouse report rates (I suspect, though of course that's very hard
to prove without looking at the source), and due to at least one bug I suspect to be a simple
rounding or overflow error involving small motions specifically in the up & left directions.

The only way to *really* "do what you want" (assuming that's actually a desirable goal here) is to
have your filter suppress *all* reports, send its packets up to a usermode service that can query
the position of the pointer, and update it itself to the absolute position on the screen where it
calculates it wants it. Even that doesn't work perfectly, because there's no atomic way to
relatively move the cursor other than through the Windows ballistics. Also, you can't use the
absolute mode interface in the kernel because people can hork the pointer around the screen under
software control and there's no way to query the position from the kernel.

I've always found it easier to just live with the Windows mouse ballistics, even though there are
several cases where I feel I could improve on them when using non-mouse devices (like pointing
sticks and touchpads) having different usage models and constraints.
--
Ray