请求支持:我以前在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
返回的错误代码表明仅空格和括号是适当的,并且,
是保留给参数的。但是,如果删除,
,则会弹出其他错误。
答案 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