autohotkey - 请求支持 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,则会弹出其他错误。
解决方案
我无法得到与您相同的错误;事实上,根本没有出现错误。(我怀疑该错误来自未显示的其他代码部分。)但是,它也没有像您描述的那样对我起作用。我不得不增加到A_TimeSinceThisHotkey >= 5
(A_TimeSinceThisHotkey >= 5000
5 秒而不是 5 毫秒)并更改!(state = "D")
为(state = "D")
(寻找“开启”状态而不是“开启”(“关闭”))以使其按照我认为您所描述的方式工作。我的理解是,如果按下它会锁定“开启”,但除非按下一段时间(在这种情况下为 5 秒),否则不会关闭“关闭”;这个对吗?
请注意,该GetKeyState
命令已弃用。您可能希望使用该GetKeyState()
功能来获得未来的支持。使用该函数还允许您在表达式中使用它,因此您无需将其分配给变量。无论如何,这是我的最终代码。我使用三元运算符将 if 语句减少到一行,但这不是必需的,如果设置了它,它将起作用。
CapsLock::
KeyWait , CapsLock
SetCapsLockState , % ( A_TimeSinceThisHotkey >= 5000 ) && !GetKeyState( CapsLock , T ) ? 0 : 1
Return
推荐阅读
- c# - 我无法使用基于 cUrl 的证书制作 HttpClient Post
- python-3.x - 尝试使用 glob.glob 对多个文件夹中的部分文件名进行模式匹配
- .net-core - IBM MQ 和 .NET Core 应用程序
- javascript - 在 `it` 语句中循环通过 Protractor 的代码
- spring - 当我从 Spring 1.5.21 升级到 2.1.5 时,pom.xml 中出现“未知”错误
- unity3d - Unity:如何通过拖动触摸来旋转第一人称相机?
- spring - 使用 Freemarker 比较 String 和 Spring Security 标签
- java - Java DBUnit AmbiguousTableNameException 错误抛出
- lambda - 是否可以定义存储与参数具有相同数据类型的 lambda 函数的数据类型?
- html - noob div 标签问题 - 自动调整大小和定位