自动热键 (.ahk)。大写锁定激活

AutoHotkey (.ahk). capslock activated

我使用 .ahk 已经有几天了,使用起来很酷。 我试着说,如果 CapsLock 被激活,我的代码运行/或不运行。 下面的代码检查此时 CapsLock 是否被按下(有效)。

GetKeyState, CapLck, CapsLock, P
if ( CapLck == "D" ) {
some statement
}

我想更改一下,如果我在 CapsLock 激活后单击它 - 当我再次按下它时它会停用。

我研究发现,GetKeyState, CapLck, CapsLock, P 中的参数 P 检查此时 CapsLock 是否被物理按下。如果这是真的,它会返回用于检查下面的 if 语句的 D。

所以我尝试更改代码

GetKeyState, CapLck, CapsLock, P
if ( CapLck == "D" ) {
some statement
}

至此

GetKeyState, CapLck, CapsLock, T
if ( CapLck == 1 ) {
some statement
}

如果我正确阅读了 GetKeyState 文档,参数 T 将检查 CapsLock 是否已激活。如果被激活,它返回 1 表示真; 0 表示错误。

遗憾的是,我的更改不适用并且不起作用。有什么想法吗?

谢谢。

试试这个:

#If GetKeyState("CapsLock", "T") ; If Capslock is On
    a::MsgBox % "CAPSLOCK IS ON"
#If

a::MsgBox % "CAPSLOCK IS OFF"

为了检查 CapsLock 是否被激活,只需更改

GetKeyState, CapLck, CapsLock, P
if ( CapLck == "D" ) {
some statement
}

GetKeyState, CapLck, CapsLock, T
if ( CapLck == "D" ) {
some statement
}

与 AutoHotKey 文档相反,参数 T 返回 "D" 表示 true 而不是 1。