AutoHotkey getting control key stuck

2019-04-10 16:18发布

I have several situations when my control key gets stuck, and it happens only when I have AutoHotkey running. This happens with multiple different modifier keys (# (windows) key, ! (alt) key especially).

Similar problems have been posted several times before: 1, 2, 3. Some solutions exists, and the one suggested here partially helped me (decreased the frequency of the problem), but the control key still get stuck occasionally.

I have two questions:

  1. Is it possible to prevent this problem?
  2. Is there a good way to have AutoHotkey fix this as soon as it happens?

I have tried everything suggested, and created my own version of a StuckKeyUp function (as suggested here:

StuckKeyUp(){
sleep 300 
send {<# up} 
send {># up} 
send {# up} 
send {+ up} 
send {<+ up} 
send {! up} 
send {<! up} 
send {>! up} 
send {^<^^>! up} 
send {^<^>! up} 
send {^ up} 
send {Ctrl down} 
send {Ctrl up}

Send {§ up}         
Send {Shift Up}
Send {LShift Up}
Send {RShift Up}
Send {Alt Up}
Send {LAlt Up}
Send {RAlt Up}
Send {Control Up}
Send {LControl Up}  
Send {<^ down}      
Send {<^ Up}        ; solves some issues, but not all
Send {>^ down}      
Send {>^ Up}        
Send {RControl Up}
Send {LControl Up}
Send {LWin Up}
Send {RWin Up}
sleep 100 
; reload, ; Avoid - Reloading AutoHotkey File causes functions depending on this function to break
return 
}

1条回答
Root(大扎)
2楼-- · 2019-04-10 16:37

Among other debugging methods you can try this:

Put this code at specific positions in your script (within hotkey definitions that send the control key or in a timer)

If GetKeyState("Ctrl")           ; If the OS believes the key to be in (logical state),
{
    If !GetKeyState("Ctrl","P")  ; but  the user isn't physically holding it down (physical state)
    {
        Send {Blind}{Ctrl Up}
        MsgBox,,, Ctrl released
        KeyHistory
    }
}

and look in the KeyHistory (after closing the message box) in which situations the key gets stuck.

查看更多
登录 后发表回答