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