2013-10-14 150 views
3

今天早些時候我下載了AutoHotKey,以便恢復在我的華碩筆記本電腦上滾動。我找到了一個腳本,在腳本里做了回覆,我很容易理解它。使用autohotkey減慢滾動速度

這是原始腳本 - 它的工作。

WheelUp:: 
Send {WheelDown} 
Return 

WheelDown:: 
Send {WheelUp} 
Return 

但是,滾動速度過快,我決定製作自己的腳本,這會減慢滾動速度。我目前正在攻讀計算機科學碩士學位,所以我已經編程了幾年,所以我認爲這項任務很簡單 - 它確實是一個簡單的腳本。

所以我給了它一個,我想出了一些代碼 - 只有問題是:它不工作!沒有編譯錯誤,我不知道爲什麼。問題是:爲什麼下面的代碼不工作?它根本不起作用,但是卷軸被註冊,因爲啓用了太多輸入的警告。

global UpSpeed := 0 
global DownSpeed := 0 

WheelUp:: 
global UpSpeed := global UpSpeed++ 
    if (global UpSpeed > 2) 
    { 
    Send {WheelDown} 
    global UpSpeed := 0 
    } 
    Return 



WheelDown:: 
global DownSpeed := global DownSpeed++ 
    if (global UpSpeed > 2) 
    { 
    Send {WheelUp} 
    global DownSpeed := 0 
    } 
    Return 

回答

3

而不是使用計數器和跳過輪事件,我建議用Sleep去。你的方法存在的問題是,在最糟糕的情況下,它會跳過前三輪事件。當你開始滾動時你不希望發生這種情況。也就是說,在較長時間不滾動之後,第一個事件應該立即觸發滾動,而不是多次旋轉輪子之後。
通過調整Sleep期間您的需要,這個代碼應該做的伎倆:

$WheelUp:: 
    Send {WheelDown} 
    Sleep, 75 
Return 

$WheelDown:: 
    Send {WheelUp} 
    Sleep, 75 
Return 

你的代碼:該global聲明纔有的功能中的意義,在第一線。奇怪的是,代碼確實會編譯,但是是語法上的廢話。無論如何,自動執行部分中定義的變量或(熱鍵)標籤都是全局變量。
此外,默認情況下,在AHK中發送密鑰會觸發其自己的熱鍵。在這裏,發送WheelDown將最終導致發送WheelUp,反之亦然。 $修飾符將防止這種情況發生。