使用autohotkey减慢滚动速度

时间:2013-10-14 11:53:02

标签: scroll autohotkey

我今天早些时候下载了AutoHotKey,以便在我的ASUS笔记本电脑上恢复滚动。我找到了一个回复的脚本,我很容易理解它。

这是原始剧本 - 它正在运作。

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

1 个答案:

答案 0 :(得分:3)

我建议使用Sleep,而不是使用计数器和跳过轮事件。你的方法的问题在于,在最坏的情况下,它会跳过前三轮事件。您不希望在开始滚动时发生这种情况。也就是说,经过较长时间的不滚动后,第一个事件应立即触发滚动,而不是在您多次旋转滚轮后触发滚动。
通过根据您的需要调整Sleep的持续时间,此代码应该可以解决问题:

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

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

代码:global声明仅在第一行的函数中有意义。奇怪的是,代码确实编译,但语法无意义。无论如何,在自动执行部分或(热键)标签中定义的变量是全局的 此外,默认情况下在AHK中发送密钥会触发自己的热键。在此处,发送WheelDown最终会导致WheelUp发送,反之亦然。 $修饰符可以防止这种情况发生。