Autohotkey,切换布尔值不起作用
Autohotkey, toggling a boolean doesn't work
我有一个模拟 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
来使 colemak
成为“超级全局”变量。
最终代码:
global colemak := true
#If %colemak% = true
hotkeys...
#If
#Space::ChangeLayout()
ChangeLayout()
{
colemak := !colemak
if (colemak = false) {
MsgBox Colemak deactivated.
} else {
MsgBox Colemak activated.
}
}
我有一个模拟 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
来使colemak
成为“超级全局”变量。
最终代码:
global colemak := true
#If %colemak% = true
hotkeys...
#If
#Space::ChangeLayout()
ChangeLayout()
{
colemak := !colemak
if (colemak = false) {
MsgBox Colemak deactivated.
} else {
MsgBox Colemak activated.
}
}