AutoHotKey:用另一个热键切换鼠标热键

问题描述:

我想创建一个热键(Win + Shift + Q)来打开/关闭另一个热键,将右边的Alt键改变为鼠标左键单击;然而,我无法让它工作。AutoHotKey:用另一个热键切换鼠标热键

预期的行为:

  1. 按Windows + Shift + Q键将首先切换右Alt键充当鼠标左键。
  2. 再次按下Windows + Shift + Q会将右Alt键恢复为右Alt键。
  3. 再次按下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/并查看问题是否仍然存在。

+0

不知道为什么我的旧版本无法正常工作。我还必须将我的初始Hotkey(Hotkey,RAlt,MyClick,On)移动到我的文件顶部,否则我会一直收到错误(这可能会修复旧版本,我不知道)。 – chewmewaba4

bState:=False 

#If bState 
    RAlt::Click 
#If 

#+vk51:: ; win + shift + q 
    KeyWait, vk51 
    TrayTip, % "state of switch", % (bState:=!bState) ? "on":"off" 
    Return