Decrease mouse sensitivity for small movements

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
Getfree
Posts: 231
Joined: 12 Oct 2014, 18:00

Decrease mouse sensitivity for small movements

12 Oct 2014, 18:03

I'm trying to make the mouse movements to be less sensitive in the sense that more physical movement is required to make the pointer move.
Adjusting the pointer speed is of no use. Nor is it to enable the "enhance pointer precision" option. The pointer still moves under very minute mouse movements.

What I need is to control how much physical movement of the mouse is needed for the pointer to move 1 pixel on the screen.

My research so far leads me nowhere. I found out about the ClipCursor DLL function http://msdn.microsof...3(v=vs.85).aspx but i don't think that will be of any use.

Anybody knows how could this be done?
Getfree
Posts: 231
Joined: 12 Oct 2014, 18:00

Re: Decrease mouse sensitivity for small movements

15 Oct 2014, 13:30

I've been experimenting with the pointer acceleration parameters, with no success.
According to the MSDN documentation, you can fine tune the acceleration rate by means of 3 values:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646260.aspx wrote:The system applies two tests to the specified relative mouse motion when applying acceleration. If the specified distance along either the x or y axis is greater than the first mouse threshold value, and the mouse acceleration level is not zero, the operating system doubles the distance. If the specified distance along either the x- or y-axis is greater than the second mouse threshold value, and the mouse acceleration level is equal to two, the operating system doubles the distance that resulted from applying the first threshold test. It is thus possible for the operating system to multiply relatively-specified mouse motion along the x- or y-axis by up to four times.
So I made the following script to test them:

Code: Select all

#F9::
	; this disables mouse acceleration
	setMouseAccelParams({level: 0, thres1: 6, thres2: 10})
	showCurrentAccelParams()
return

#F10::
	; Acceleration enabled
	; system default parameters 1, 6, 10 are used
	setMouseAccelParams({level: 1, thres1: 6, thres2: 10})
	showCurrentAccelParams()
return

#F11::
	; acceleration enabled but with very high thresholds
	; this should result in no acceleration unless the mouse is moved very fast
	setMouseAccelParams({level: 1, thres1: 100, thres2: 150})
	showCurrentAccelParams()
return

#F12::
	; sets acceleration at level 2 with very low thresholds
	; it should result in very high acceleration even for small mouse movements
	setMouseAccelParams({level: 2, thres1: 1, thres2: 2})
	showCurrentAccelParams()
return


showCurrentAccelParams(){
	params := getMouseAccelParams()
	tooltip % "Lvl: " params.level "`nT1: " params.thres1 "`nT2: " params.thres2
}

getMouseAccelParams(){
	VarSetCapacity(params,12)
	DllCall("SystemParametersInfo", UInt,3, UInt,0, Ptr,&params, UInt,0) ; SPI_GETMOUSE = 3
	return {	thres1: NumGet(params,0,"int")
			,	thres2: NumGet(params,4,"int")
			,	level: NumGet(params,8,"int") }
}

setMouseAccelParams(params){
	VarSetCapacity(rawArray,12)
	,NumPut(params.thres1, rawArray, 0,"int")
	,NumPut(params.thres2, rawArray, 4,"int")
	,NumPut(params.level, rawArray, 8,"int")
	,DllCall("SystemParametersInfo", UInt,4, UInt,0, Ptr,&rawArray, UInt,0) ; SPI_SETMOUSE = 4
}
The script defines 4 hotkeys for modifying the parameters:
Win+F9: acceleration disabled
Win+F10: acceleration enabled with default system values
Win+F11: acceleration enabled with tweaked values 1
Win+F12: acceleration enabled with tweaked values 2

The only thing that works is actually enabling or disabling acceleration (the "enhance pointer precision" option in control panel). Win+F9 disables acceleration and the other 3 hotkeys enable it. But I can't notice any difference whatsoever between the 3 acceleration modes. I tried in Win XP and Vista.
I don't know if I'm doing something wrong or what, but it appears as if this parameters are not being honored by the system.

Can someone please try the script and see whether you notice any difference at all in mouse speed, acceleration, precision or anything.
User avatar
noname
Posts: 515
Joined: 19 Nov 2013, 09:15

Re: Decrease mouse sensitivity for small movements

16 Oct 2014, 05:16

I can only test on winXP but did not see differance in mouse handling using the hotkeys.

I use the following code for working with graphics(but lowest speed 10) ,if i use mousespeed setting 1 ,i need to move the mouse 5mm to get to the next pixel while on setting 18 (my normal setting) it moves 3 pixels on the slightest move.

Code: Select all

^numpadadd::

SPI_GETMOUSESPEED:=0x70
SPI_SETMOUSESPEED:=0x71

kSpeedlow:=1
kSpeedhigh:=18

DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,prevSpeed, UInt,0)

kSpeed:= (prevSpeed=kSpeedlow ? kSpeedhigh : kSpeedlow)

Progress, b2 zh0 fs18  w200, Setting mouse speed to %kSpeed%

; 0x70 (SPI_GETMOUSESPEED), third parameter is the speed (range is 1-20, 10 is default)
DllCall("SystemParametersInfo", UInt, SPI_SETMOUSESPEED, UInt, 0, UInt, kSpeed, UInt, 0)
Sleep, 2000
Progress, Off
return
Getfree
Posts: 231
Joined: 12 Oct 2014, 18:00

Re: Decrease mouse sensitivity for small movements

16 Oct 2014, 10:49

The speed setting work fine, no problem there. But the acceleration settings don't seem to do anything aside from just enabling and disabling it.
At least now I know that it's not just me. So it's either my script that is doing something wrong (and I can't figure out what it could be) or else the OS is just ignoring the parameters and in reality is using some fixed hardcoded values internally.

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Google [Bot] and 356 guests