Home » Questions » Computers [ Ask a new question ]

Make mouse pointer invisible on idle

Make mouse pointer invisible on idle

Is there a way to make the mouse pointer disappear when the computer goes idle? If the solution could work in both Windows XP and Windows 7, that would be great.

Asked by: Guest | Views: 213
Total answers/comments: 2
Guest [Entry]

"Based on what I found here, I was able to make the following AutoHotkey code:

SystemCursor(""Init"")

SetTimer, CheckIdle, 250
return

CheckIdle:
TimeIdle := A_TimeIdlePhysical // 1000
if TimeIdle >= 3
{
SystemCursor(""Off"")
}
else
{
SystemCursor(""On"")
}
return

#Persistent
OnExit, ShowCursor ; Ensure the cursor is made visible when the script exits.
return

ShowCursor:
SystemCursor(""On"")
ExitApp

SystemCursor(OnOff=1) ; INIT = ""I"",""Init""; OFF = 0,""Off""; TOGGLE = -1,""T"",""Toggle""; ON = others
{
static AndMask, XorMask, $, h_cursor
,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors
if (OnOff = ""Init"" or OnOff = ""I"" or $ = """") ; init when requested or at first call
{
$ = h ; active default cursors
VarSetCapacity( h_cursor,4444, 1 )
VarSetCapacity( AndMask, 32*4, 0xFF )
VarSetCapacity( XorMask, 32*4, 0 )
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
StringSplit c, system_cursors, `,
Loop %c0%
{
h_cursor := DllCall( ""LoadCursor"", ""uint"",0, ""uint"",c%A_Index% )
h%A_Index% := DllCall( ""CopyImage"", ""uint"",h_cursor, ""uint"",2, ""int"",0, ""int"",0, ""uint"",0 )
b%A_Index% := DllCall(""CreateCursor"",""uint"",0, ""int"",0, ""int"",0
, ""int"",32, ""int"",32, ""uint"",&AndMask, ""uint"",&XorMask )
}
}
if (OnOff = 0 or OnOff = ""Off"" or $ = ""h"" and (OnOff < 0 or OnOff = ""Toggle"" or OnOff = ""T""))
$ = b ; use blank cursors
else
$ = h ; use the saved cursors

Loop %c0%
{
h_cursor := DllCall( ""CopyImage"", ""uint"",%$%%A_Index%, ""uint"",2, ""int"",0, ""int"",0, ""uint"",0 )
DllCall( ""SetSystemCursor"", ""uint"",h_cursor, ""uint"",c%A_Index% )
}
}"
Guest [Entry]

If you don't mind that little coding will be probably necessary, you can use AutoHotkey. See this forum post for more info on what you want to achieve.