我今天早些时候下载了 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
我建议不要使用计数器和跳过轮事件,而是使用Sleep. 您的方法的问题在于,在最坏的情况下,它会跳过前三个轮子事件。当您开始滚动时,您不希望发生这种情况。也就是说,在较长时间不滚动之后,第一个事件应该立即触发滚动,而不是在您多次旋转滚轮之后。
通过根据您的需要调整持续时间Sleep,此代码应该可以解决问题:
$WheelUp::
    Send {WheelDown}
    Sleep, 75
Return
$WheelDown::
    Send {WheelUp}
    Sleep, 75
Return
对于您的代码:该global声明仅在函数内的第一行中有意义。奇怪的是,代码确实可以编译,但在语法上是无意义的。无论如何,自动执行部分或(热键)标签中定义的变量都是全局的。
此外,默认情况下在 AHK 中发送密钥会触发其自己的热键。在这里,发送WheelDown最终将导致发送WheelUp,反之亦然。修改$器将阻止这种情况发生。