请求支持:我之前在Win7专业版64位系统上修改了以下AutoHotkey脚本。使用此脚本在"On“位置禁用CapsLock键(这是所需的),然后在按住几秒钟后返回到正常的开关状态。
我有一个新的Win10 64位系统,代码不再工作。如果您对以下脚本有任何建议和建议,我将不胜感激。
CapsLock::
KeyWait, CapsLock
GetKeyState, state, CapsLock, T
If (A_TimeSinceThisHotkey >= 5) and !(state = "D")
SetCapsLockState, Off
Else
SetCapsLockState, on
Return
返回的错误代码表明只有空格和圆括号是合适的,并且,
是为参数保留的。但是,如果我移除,
,则会弹出其他错误。
发布于 2019-06-17 21:09:16
我不能得到与您相同的错误;事实上,根本没有出现任何错误。(我怀疑错误来自未显示的代码的其他部分。)然而,它也不像你所描述的那样对我起作用。我不得不将A_TimeSinceThisHotkey >= 5
增加到A_TimeSinceThisHotkey >= 5000
(5秒而不是5毫秒),并将!(state = "D")
更改为(state = "D")
(查找"on“状态而不是not "on”("off")),以使其按照我认为的方式工作。我的理解是,如果按下它,它将锁定“开”,但不会关闭,除非按下一段时间(5秒。在这种情况下);这是正确的吗?
请注意,GetKeyState
命令已弃用。为了将来的支持,您可能希望使用GetKeyState()
函数。使用函数还允许您在表达式中使用它,因此不需要将其赋给变量。不管怎样,这是我的最终代码。我使用三元运算符将if语句减少到一行,但这不是必需的,如果设置它的方式,它将会起作用。
CapsLock::
KeyWait , CapsLock
SetCapsLockState , % ( A_TimeSinceThisHotkey >= 5000 ) && !GetKeyState( CapsLock , T ) ? 0 : 1
Return
https://stackoverflow.com/questions/56620099
复制相似问题