Page 1 of 1

Toggle NumLock ScrollLock & CapsLock Issue

Posted: 01 May 2024, 16:03
by OrangeCat
I was provided a CapsLock toggle answer that works perfect for CapsLock
I tried to replicate the same for NumLock and ScrollLock but they don't toggle at all.
What is it that I'm doing wrong?

Code: Select all

    TOGGLE_CapsLock:
        If GetKeyState("CapsLock", "T") = 1
            SetCapsLockState, Off
        Else If GetKeyState("CapsLock", "F") = 0
            SetCapsLockState, On
        Return
    RETURN

    TOGGLE_NumLock:
        If GetKeyState("NumLock", "T") = 1
            SetNumLockState, Off
        Else If GetKeyState("NumLock", "F") = 0
            SetNumLockState, On
        Return
    RETURN

    TOGGLE_ScrollLock:
        If GetKeyState("ScrollLock", "T") = 1
            SetScrollLockState, Off
        Else If GetKeyState("ScrollLock", "F") = 0
            SetScrollLockState, On
        Return
    RETURN
    
    ; ============================================================================
    
    Shift & CapsLock::Gosub, TOGGLE_CapsLock ; <------- works
    Shift & NumLock::Gosub, TOGGLE_NumLock ; <--------- doesn't work
    Shift & ScrollLock::Gosub, TOGGLE_ScrollLock ; <--- doesn't work

Re: Toggle NumLock ScrollLock & CapsLock Issue

Posted: 01 May 2024, 17:49
by mikeyww
Hello,

I would read the "Mode" section on the following page.

https://www.autohotkey.com/docs/v1/lib/GetKeyState.htm#Function_Parameters

Re: Toggle NumLock ScrollLock & CapsLock Issue

Posted: 02 May 2024, 00:22
by Rohwedder
Hallo,
GetKeyState has no “F” mode! Try:

Code: Select all

    TOGGLE_CapsLock:
        If GetKeyState("CapsLock", "T") = 1
            SetCapsLockState, Off
        Else If GetKeyState("CapsLock", "T") = 0
            SetCapsLockState, On
        Return
    RETURN

    TOGGLE_NumLock:
        If GetKeyState("NumLock", "T") = 1
            SetNumLockState, Off
        Else If GetKeyState("NumLock", "T") = 0
            SetNumLockState, On
        Return
    RETURN

    TOGGLE_ScrollLock:
        If GetKeyState("ScrollLock", "T") = 1
            SetScrollLockState, Off
        Else If GetKeyState("ScrollLock", "T") = 0
            SetScrollLockState, On
        Return
    RETURN
    
    ; ============================================================================
    
    Shift & CapsLock::Gosub, TOGGLE_CapsLock ; <------- works
    Shift & NumLock::Gosub, TOGGLE_NumLock ; <--------- works
    Shift & ScrollLock::Gosub, TOGGLE_ScrollLock ; <--- works
or:

Code: Select all

+CapsLock::SetCapsLockState,% !GetKeyState("CapsLock", "T") ; <--------- works
+NumLock::SetNumLockState,% !GetKeyState("NumLock", "T") ; <------------ works
+ScrollLock::SetScrollLockState,% !GetKeyState("ScrollLock", "T") ; <--- works