【问题标题】:Slowing scroll speed down with autohotkey使用自动热键减慢滚动速度
【发布时间】:2013-10-14 20:28:07
【问题描述】:

我今天早些时候下载了 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

【问题讨论】:

    标签: scroll autohotkey


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 2018-04-25
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多