将保持按钮变成切换按钮的 AHK 脚本
AHK script to turn hold buttons into toggle buttons
例如,当您按住 Shift 按钮时,它会变成大写,而 Capslock 按钮会做同样的事情,但作为切换按钮。
如何将 shift 按钮等保持按钮变为大写锁定按钮等切换按钮?
我试过这个:
if toggle
Send, {LShift down}
else
Send, {LShift up}
LShift::
toggle := !toggle
return
但由于某种原因它不起作用。
我认为它会根据 LShift 按钮更改的切换值抬起或按住 LShift 按钮。但是不行,从来就不是大写字母
我突然想到的第一件事是,您的 If 语句位于代码的 Autoexec 部分,不包含在任何将被多次调用或执行的内容中,因此它只检查一次切换状态,您可以一整天都按 LShift 并更改 Toggle,但不会从那里生成任何代码。
首先我想将您的代码移至热键部分。虽然这个半工作我无法产生一致的结果,请随意尝试:
LShift::
toggle := !toggle
if (toggle = true) ; added this for clarity and consitency
Send, {LShift down}
else
Send, {LShift up}
return
下面是我过去使用过的解决方案,当我记得它时,它起作用的原因是 SetTimer 可以被热键中断,所以无论 Timer 例程在哪里工作,热键都会中断它并设置切换.
解决方案:
SetTimer, Toggler, 100
$LShift::toggle := !toggle
Toggler:
if (toggle = true)
Send, {LShift down}
else
Send, {LShift up}
Return
例如,当您按住 Shift 按钮时,它会变成大写,而 Capslock 按钮会做同样的事情,但作为切换按钮。
如何将 shift 按钮等保持按钮变为大写锁定按钮等切换按钮?
我试过这个:
if toggle
Send, {LShift down}
else
Send, {LShift up}
LShift::
toggle := !toggle
return
但由于某种原因它不起作用。 我认为它会根据 LShift 按钮更改的切换值抬起或按住 LShift 按钮。但是不行,从来就不是大写字母
我突然想到的第一件事是,您的 If 语句位于代码的 Autoexec 部分,不包含在任何将被多次调用或执行的内容中,因此它只检查一次切换状态,您可以一整天都按 LShift 并更改 Toggle,但不会从那里生成任何代码。
首先我想将您的代码移至热键部分。虽然这个半工作我无法产生一致的结果,请随意尝试:
LShift::
toggle := !toggle
if (toggle = true) ; added this for clarity and consitency
Send, {LShift down}
else
Send, {LShift up}
return
下面是我过去使用过的解决方案,当我记得它时,它起作用的原因是 SetTimer 可以被热键中断,所以无论 Timer 例程在哪里工作,热键都会中断它并设置切换.
解决方案:
SetTimer, Toggler, 100
$LShift::toggle := !toggle
Toggler:
if (toggle = true)
Send, {LShift down}
else
Send, {LShift up}
Return