求关于在打字时隐藏指针不生效的解决办法?

不知道从什么时候开始,打字的时候鼠标的指针不会自动隐藏了,会导致经常阻挡到候选文字。

可是就在我刚刚打这段文字的时候,过了大概十来秒,却会隐藏了。如果是切换到英文输入法的话,输入时就会马上隐藏鼠标指针。我试过微软输入法和RIME,也是这情况。

我已经在win10的鼠标设置里面勾选了“打字时隐藏指针”的选项。

请教各位这是什么原因?

1 个赞

https://www.zhihu.com/question/522909880/answer/2590926239
微软内部几乎没人用母语版本的Windows和Office,大家用的都是英文版Windows和Office。这导致了很多“本地化”相关的Bug,研发人员永远不会自己发现。

2 个赞
1 个赞

感谢,我分别尝试了这两个软件:

AutoHideMouseCursor: 我的win10系统,只有主功能是有效的,也就是倒数X秒之后自动隐藏。假如勾选了Hide when key pressed. 没效果,甚至主功能都失效。就有点搞笑;

Cursor Hider:这个小软件有效,但是醒目大字提醒未注册,试用期30天。官网也找不到,注册码也找不到。

结果,在找注册码的过程中,看到CSDN上面有一篇文章《【亲测免费】 Windows-Cursor-Hider 使用教程》,顺藤摸瓜,找到了GitHub上面的post 的Autohotkey脚本,亲测有效,也非常对我的胃口,直接加入到AHK Script Manager的自动启动项里面。

附上Github的链接

贴上Autohotkey代码如下:

; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         Stefan Z Camilleri - [email protected]

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Initialize the mouse cursor
SystemCursor("Init")

; Get the current mouse position, and store its coordinates
MouseGetPos mX0, mY0

; Set a timer to check if the mouse is still idle every 250ms
SetTimer, CheckIdle, 250

; Register the keys you want to listen on
keys = ``1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./

; For every defined key, register a call to hide the mouse cursor
Loop Parse, keys
   HotKey ~*%A_LoopField%, Hoty
return

; Checks if the mouse has moved, and if so, shows it and records the new position
CheckIdle:
MouseGetPos mX, mY
if (mX0 != mX && mY0 != mY)
{
    SystemCursor("On")
    mX0 := mX, mY0 := mY
}
return

; Hides the mouse cursor
Hoty:
   SystemCursor("Off")
return

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

; Shows the mouse cursor
ShowCursor:
SystemCursor("On")
ExitApp

; Function to hide or show the mouse cursor
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% )
    }
}

你找到的不就是我fork的源头嘛……

确实,你fork的是源头,我没留意到链接,抱歉。只看着后面的一大串文字。因为那啥,AutoHideMouseCursor您没说之前我已经下载过了,没有生效,所以试试您发的链接。被吸引了注意力。