I want give my CapsLock key more functionality:
1.when single-pressed,CapsLock works as usual;
2.when long-pressed,switch input language and keyboard layout.(win+space);
3.when held down and in combination with IJKL it will function as arrow keys.
So I copy and modified two scripts from viewtopic.php?t=88662 and https://stackoverflow.com/questions/57311941/make-capslock-work-properly-when-single-double-and-combo-pressed.
Code: Select all
CapsLock::
KeyWait, %A_ThisHotkey%, T.25
if held := ErrorLevel
;SoundBeep, 1000, 120
KeyWait, %A_ThisHotkey%
Send % held ? "#{Space}" : ""
SetTimer, RestoreCapsLockState, 50
Return
~Capslock Up:: Return
CapsLock & J::Send {Left}
CapsLock & K::Send {Down}
CapsLock & L::Send {Right}
CapsLock & I::Send {Up}
RestoreCapslockState:
KeyWait, CapsLock ; wait for Capslock to be released
SetTimer, RestoreCapsLockState, Off
If (A_PriorKey != "CapsLock")
SetCapsLockState % !GetKeyState("CapsLock", "T") ; Toggles CapsLock to its opposite state, requires [v1.1.30+]
Return
when I long-press CapsLock,it will send #{Space} but also CapsLock,so whenever I long-press CapsLock it will set my CapsLock state oppositely.When CapsLock is off,I long press CapsLock,my input language changed and CapsLock is on,but I want CapsLock stay the same.
I just want when I long press CapsLock it will send win+space but CapsLock state stay the same as before,can anyone help?