autohotkey - Autohotkey,切换布尔值不起作用
问题描述
我有一个应该模拟 Colemak 键盘布局的脚本。我希望能够使用 Win+Space 切换布局
这是脚本:
colemak = true
#If %colemak% = true
hotkeys...
#If
#Space::ChangeLayout()
ChangeLayout()
{
colemak := !colemak
if (colemak = false) {
MsgBox Colemak deactivated.
} else {
MsgBox Colemak activated.
}
}
当我按下 Win+Space 时,colemak 变量没有改变,它保持在true
. 我在这里做错了什么?
另外,我想得到某种反馈,告诉用户布局发生了变化。MsgBox 并不是我真正要寻找的东西,因为它需要用户按确定。我想要一个弹出窗口或类似的东西,它只是告诉用户它在不需要或可能进行任何交互的情况下发生了变化。有哪些可能性?
解决方案
两件事情:
为了声明一个变量,你需要使用
:=
操作符。因此,您不需要最初声明colemak = true
,而是需要colemak := true
.该函数
ChangeLayout()
有自己的作用域,其中全局变量的初始声明colemak
是不可见的。为了解决这个问题,你需要在它前面colemak
添加一个“超级全局”变量。global
最终代码:
global colemak := true
#If %colemak% = true
hotkeys...
#If
#Space::ChangeLayout()
ChangeLayout()
{
colemak := !colemak
if (colemak = false) {
MsgBox Colemak deactivated.
} else {
MsgBox Colemak activated.
}
}
推荐阅读
- encryption - 用于蒙特卡洛测试的 AES CBC 解密验证
- typescript - 如何扩展子界面元素?
- spring - Spring 启动器依赖项
- java - 如何保持Android版本之间的应用兼容性?
- html - 在相反方向上对齐项目以适应较小的屏幕
- python - Pyinstaller 一切都在本地机器上运行,但在另一台机器上失败
- javascript - 在 iOS Chrome 中使用 blob 下载的文件将名称和扩展类型更改为 document.data
- javascript - 如何清除 npm 错误并让我的端口运行?
- user-interface - Grafana 使用什么进行仪表板定制?
- javascript - 如何将承载授权标头传递给外部 api,在 loopback4 中使用 openapi 规范创建服务