AutoHotKey:用另一个热键切换鼠标热键
问题描述:
我想创建一个热键(Win + Shift + Q)来打开/关闭另一个热键,将右边的Alt键改变为鼠标左键单击;然而,我无法让它工作。AutoHotKey:用另一个热键切换鼠标热键
预期的行为:
- 按Windows + Shift + Q键将首先切换右Alt键充当鼠标左键。
- 再次按下Windows + Shift + Q会将右Alt键恢复为右Alt键。
- 再次按下Windows + Shift + Q将恢复为左键单击行为(请参阅#1)。等等。
这里是我的代码的最新迭代:
Hotkey, RAlt, MyClick, On
#+Q:: ;Win+Shift+Q :: ::Right-Alt acts as a left mouse button click
switch := !switch
MsgBox %switch%
Hotkey RAlt, % (switch ? "Off": "On")
Return
MyClick:
MouseClick
Return
当我运行我的脚本,我得到以下错误点击MSGBOX OK后和脚本退出:
Error: Nonexistent hotkey
Specifically: RAlt
Line#
141: Hotkey,RAlt,MyClick,On
143: switch:=!switch
144: MsgBox %switch%
-->145: Hotkey RAlt, % (switch ? "Off": "On")
146: Return
149: MouseClick
150: Return
The current thread will exit.
大多数可能涉及的其他帖子(Can AutoHotKey toggle keymapping?,Autohotkey: Toggle a set of keybinds on and off)只处理键映射的键,而不是鼠标映射的关键。我不知道这是否是我的问题的原因。
以前我有这个,但赢+ Shift + Q键没有切换行为,RALT总是充当左击,所以我评论说出来:
#+Q:: ;Win+Shift+Q :: ::Right-Alt acts as a left mouse button click
RAlt::LButton
;Hotkey, RAlt, Toggle ;Does not work for some reason
int += 1
test := mod(int, 2) = 0
if (test) {
msgbox on
Hotkey, RAlt, On
}
else {
msgbox off
Hotkey, leftClick, Off
}
Return
我还要补充一点,我希望跨Windows的这种行为,而不只是一个单一的应用程序(这似乎是其他职位允许#IfWinActive类型的建议/解决方案)的主题。
答
我试过你在AutoHotkey v1.1.13.01 Unicode中的代码的当前迭代32位,并且在消息框上按OK
后没有任何错误,该脚本按照广告的方式工作。
尝试在此处更新您的AutoHotkey版本:http://ahkscript.org/download/并查看问题是否仍然存在。
答
bState:=False
#If bState
RAlt::Click
#If
#+vk51:: ; win + shift + q
KeyWait, vk51
TrayTip, % "state of switch", % (bState:=!bState) ? "on":"off"
Return
不知道为什么我的旧版本无法正常工作。我还必须将我的初始Hotkey(Hotkey,RAlt,MyClick,On)移动到我的文件顶部,否则我会一直收到错误(这可能会修复旧版本,我不知道)。 – chewmewaba4