首页 > 解决方案 > 请求支持 CapsLock 密钥代码

问题描述

请求支持:我之前在 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

返回的错误代码表明只有空格和括号是合适的,并且,s 是为参数保留的。但是,如果我删除,s,则会弹出其他错误。

标签: autohotkey

解决方案


我无法得到与您相同的错误;事实上,根本没有出现错误。(我怀疑该错误来自未显示的其他代码部分。)但是,它也没有像您描述的那样对我起作用。我不得不增加到A_TimeSinceThisHotkey >= 5A_TimeSinceThisHotkey >= 50005 秒而不是 5 毫秒)并更改!(state = "D")(state = "D")(寻找“开启”状态而不是“开启”(“关闭”))以使其按照我认为您所描述的方式工作。我的理解是,如果按下它会锁定“开启”,但除非按下一段时间(在这种情况下为 5 秒),否则不会关闭“关闭”;这个对吗?

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

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

推荐阅读