使用CapsLock键代码请求支持

时间:2019-06-16 15:14:10

标签: autohotkey

请求支持:我以前在Win7 Pro 64位系统上修改了以下AutoHotkey脚本。使用此脚本将CapsLock键禁用在“打开”位置(这是可取的),如果按住几秒钟,则返回到正常的开-关切换状态。

我有一个新的Win10 64位系统,该代码不再起作用。对于下面的脚本,我将不胜感激。

CapsLock::
    KeyWait, CapsLock
    GetKeyState, state, CapsLock, T
    If (A_TimeSinceThisHotkey >= 5) and !(state = "D")
        SetCapsLockState, Off
    Else
        SetCapsLockState, on
Return

返回的错误代码表明仅空格和括号是适当的,并且,是保留给参数的。但是,如果删除,,则会弹出其他错误。

1 个答案:

答案 0 :(得分:0)

我无法获得与您相同的错误;实际上,完全没有错误。 (我怀疑该错误是由于其他未显示的代码所致。)但是,它也对您不起作用。我必须将A_TimeSinceThisHotkey >= 5增加到A_TimeSinceThisHotkey >= 5000(5秒而不是5毫秒),并将!(state = "D")改变为(state = "D")(寻找“ on”状态而不是“ on”( “ off”)),以使其按照我认为的描述进行工作。我的理解是,如果按下它,它将锁定为“ on”,但是除非按下一段时间(在这种情况下为5秒),否则它不会关闭。这是正确的吗?

请注意,GetKeyState命令已被弃用。您可能希望使用GetKeyState()函数来获得将来的支持。使用该函数还可以在表达式中使用它,因此无需将其分配给变量。无论如何,这是我的最终代码。我使用三元运算符将if语句减少到一行,但这不是必需的,并且如果您设置了它,它将可以工作。

CapsLock::
KeyWait , CapsLock
SetCapsLockState , % ( A_TimeSinceThisHotkey >= 5000 ) && !GetKeyState( CapsLock , T ) ? 0 : 1
Return