Tengo dos guiones AHK aquí. Si desea que le explique más de lo que he comentado en los scripts, agregue un comentario a continuación.
El primero es más complejo y probablemente propenso a fallas, pero envía CapsLock como una pulsación de tecla literal después de mantenerlo presionado durante un segundo.
El segundo alterna el estado de "Bloqueo de mayúsculas", que puede no ser deseable si la razón por la que desea el retraso es por la tecla de acceso rápido de Bloqueo de mayúsculas de otro programa.
Puede configurar el retraso cambiando la Delay
variable en la segunda línea.
Envía una pulsación de tecla literal "CapsLock"
; Time to wait in milliseconds
Delay = 1000
; Variable used to ignore key repeats
; (Windows sends them when a key is held down)...
CapsLockHeld = 0
; This starts the timer on key *down*.
; Time is measured in milliseconds.
; Timer resolution should be approximately 20 ms.
; The negative time means run only once.
; It will reset the timer if it is already running.
CapsLock::CapsLockDown()
; This stops the timer on key *up*.
CapsLock Up::CapsLockUp()
; This sends a CapsLock keypress when the timer runs out.
SendCapsLock:
SetTimer, SendCapsLock, Off
HotKey, CapsLock, Off
HotKey, CapsLock Up, Off
SendInput, {CapsLock}
HotKey, CapsLock Up, On
HotKey, CapsLock, On
Return
; Using functions because otherwise global variables die
CapsLockDown() {
global CapsLockHeld
global Delay
If (CapsLockHeld == 1) {
Return
}
CapsLockHeld = 1
SetTimer, SendCapsLock, %Delay%
Return
}
CapsLockUp() {
global CapsLockHeld
CapsLockHeld = 0
SetTimer, SendCapsLock, Off
Return
}
Alterna el estado "Bloqueo de mayúsculas":
; Time to wait in milliseconds
Delay = 1000
; Variable used to ignore key repeats
; (Windows sends them when a key is held down)...
CapsLockHeld = 0
; This starts the timer on key *down*.
; Time is measured in milliseconds.
; Timer resolution should be approximately 20 ms.
; The negative time means run only once.
; It will reset the timer if it is already running.
CapsLock::CapsLockDown()
; This stops the timer on key *up*.
CapsLock Up::CapsLockUp()
; This sends a CapsLock keypress when the timer runs out.
SendCapsLock:
SetTimer, SendCapsLock, Off
If (GetKeyState("CapsLock", "T"))
SetCapsLockState, Off
Else
SetCapsLockState, On
Return
; Using functions because otherwise global variables die
CapsLockDown() {
global CapsLockHeld
global Delay
If (CapsLockHeld == 1) {
Return
}
CapsLockHeld = 1
SetTimer, SendCapsLock, %Delay%
Return
}
CapsLockUp() {
global CapsLockHeld
CapsLockHeld = 0
SetTimer, SendCapsLock, Off
Return
}