2013-10-02 71 views
0

我每天都會使用一個應用程序來監聽雙擊控制鍵。它還鍵入另一個功能,只需單擊一次控制鍵,應用程序就無法阻止或重新映射一個或其他功能。使用AutoHotkey預防鍵盤按鍵雙擊

我想要做的就是使用AutoHotkey來防止應用程序響應雙控制點擊。

如果在兩個控件keydown事件之間插入鼠標移動,應用程序將不會響應默認雙擊行爲。

有什麼辦法可以編寫一個AutoHotkey腳本來監聽控制鍵的兩個連續點擊,並在第二個控制點擊之前插入一個良性事件(例如鼠標事件)?

我試過下面的代碼,但第二個LControl仍然通過。無論如何阻止第二個LControl通過?

~LControl:: 
if (A_PriorHotkey <> "~LControl" or A_TimeSincePriorHotkey > 400) 
{ 
    ; Too much time between presses, so this isn't a double-press. 
    SendInput {LControl} 
    return 
} 
MouseMove 5,5,10,R 
;SendInput {LControl} 
return 
+0

您可以通過定義「超時」來檢測*雙擊*(通常爲400毫秒)。然後,當前一次按鍵發生時,您可以檢查所需按鍵的每個按鍵。如果在時間範圍內,這是一個雙重壓力。 – MCL

+0

到你的新代碼:看看[熱鍵文檔](http://www.autohotkey.com/docs/Hotkeys.htm)。代字號修飾符'〜'將始終觸發一個鍵的本地函數,也就是說,按CTRL鍵按鍵將按照定義逐漸流過!刪除修飾符,'LControl ::'應該沒問題。 – MCL

回答

-1

下面是我用它來觸發一個動作時,400毫秒內迅速按下左或右控制鍵的方法:

~Control Up:: 
    if ctrl_presses > 0 
    ctrl_presses += 1 
    else { 
    ctrl_presses = 1 
    SetTimer, CtrlPress, 400 
    } 
return 

CtrlPress: 
    SetTimer, CtrlPress, off 
    if ctrl_presses = 2 
    ; DO ACTION HERE 
    ctrl_presses = 0 
return 

有了這個方法,你可以輕鬆地觸發不僅僅是行動雙擊,但更多。

+0

這並不妨礙雙擊。 – this