2015-10-14 309 views
1

例如,按住Shift按鈕可以使事物在您按住時保持不變,而Capslock按鈕可以做同樣的事情,但可以切換。AHK腳本將按住按鈕轉換到切換按鈕

如何將一個保持按鈕(如shift按鈕)像一個切換按鈕一樣操作,就像大寫鎖定按鈕一樣?

我已經試過這樣:

if toggle 
     Send, {LShift down} 
    else 
     Send, {LShift up} 

LShift:: 
    toggle := !toggle 
    return 

但它並不適用於某些原因。 我認爲它會擡起或按住LShift按鈕,具體取決於由LShift按鈕更改的切換值。但它不起作用,它從來不是大寫字母。

回答

1

首先向我彈出的是,您的If語句位於代碼的Autoexec部分,並且不包含在任何將被調用或執行多次的任何內容中,因此它只檢查切換狀態一次,您可以點擊LShift和更改切換整天,但沒有代碼會從那裏發生。

首先我想將您的代碼移到熱鍵部分。雖然這半工作,我沒能產生一致的結果,隨意嘗試自己:

LShift:: 
    toggle := !toggle 
    if (toggle = true) ; added this for clarity and consitency 
     Send, {LShift down} 
    else 
     Send, {LShift up} 
    return 

下面是我在過去使用的解決方案,當我想起它,這個工作的原因是SetTimer的是由熱鍵中斷的,所以無論Timer例程在哪裏工作,熱鍵都會中斷它並設置切換。

解決方案:

SetTimer, Toggler, 100 

$LShift::toggle := !toggle 

Toggler: 
    if (toggle = true) 
     Send, {LShift down} 
    else 
     Send, {LShift up} 
Return 
+0

謝謝!請你也可以添加一個解釋,說明爲什麼我試過的東西沒有工作 – Aequitas

+0

哦,好吧,這是有道理的,所以它只發生過一次,如果我已經在頂部的部分包含了一個while循環,它會工作嗎?像'而真'? – Aequitas

+0

有可能,通常有多種解決方案可以解決您在編碼時遇到的每個問題。 – errorseven