2014-02-06 185 views
0

我想創建一個熱鍵(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類型的建議/解決方案)的主題。

回答

0

我試過你在AutoHotkey v1.1.13.01 Unicode中的代碼的當前迭代32位,並且在消息框上按OK後沒有任何錯誤,該腳本按照廣告的方式工作。

嘗試在此處更新您的AutoHotkey版本:http://ahkscript.org/download/並查看問題是否仍然存在。

+0

不知道爲什麼我的舊版本無法正常工作。我還必須將我的初始Hotkey(Hotkey,RAlt,MyClick,On)移動到我的文件頂部,否則我會一直收到錯誤(這可能會修復舊版本,我不知道)。 – chewmewaba4

0
bState:=False 

#If bState 
    RAlt::Click 
#If 

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