Encontrei isso nos fóruns do AutoHotkey e o modifiquei para incluir a rolagem horizontal. Segurar o alt e mover o mouse executará uma rolagem na direção do movimento do mouse.
~*Alt::
Loop
{
If !GetKeyState("Alt","P")
break
MouseGetPos, ax,ay
Sleep, 50
MouseGetPos,bx,by
Send % (ay<by ? "{WheelDown " : "{WheelUp ") . round(Abs(ay-by)/(GetKeyState("Shift","P") ? 10 : 1)) . "}"
Send % (ax<bx ? "{WheelRight " : "{WheelLeft ") . round(Abs(ax-bx)/(GetKeyState("Shift","P") ? 10 : 1)) . "}"
}
Return