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

时间:2014-02-06 16:57:08

标签: windows autohotkey keymapping

我正在尝试创建一个热键(Win + Shift + Q),用于打开/关闭另一个热键,该键可将右Alt键更改为鼠标左键;但是,我无法让它发挥作用。

预期行为:

  1. 按Windows + Shift + Q将首先切换Right-Alt键以充当鼠标左键。
  2. 再次按Windows + Shift + Q将切换Right-Alt键以作为Right-Alt键。
  3. 再次按Windows + Shift + Q将恢复为左键单击行为(请参阅#1)。等等。
  4. 这是我代码的最新迭代:

    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上单击“确定”并退出脚本后,出现以下错误:

    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)仅处理键映射的关键,而不是鼠标映射的关键。我不知道这是否是我的问题的原因。

    之前我有过这个,但Win + 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类型建议/解决方案的主题)。

2 个答案:

答案 0 :(得分:0)

我在AutoHotkey v1.1.13.01 Unicode 32位中尝试了当前的代码迭代,并且在消息框上按OK后没有任何错误,该脚本的工作方式与广告一样。

尝试在此处更新您的AutoHotkey版本:http://ahkscript.org/download/并查看问题是否仍然存在。

答案 1 :(得分:0)

bState:=False

#If bState
   RAlt::Click
#If

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