Here's the AutoHotKey script that I use. You scroll by holding down the left small button and rolling the ball up/down. However clicking the left small button still does BACK. It can also scroll left/right but that was too sensitive for me so it's commented out here (the block that starts with ;timesX := Abs(movedx) / 4
).
I found the original version at http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/. I posted my version there as anotherperson8923.
$*XButton1:: Hotkey, $*XButton1 Up, XButton1up, off ;KeyWait, XButton1, T0.4 ;If ErrorLevel = 1 ;{ Hotkey, $*XButton1 Up, XButton1up, on MouseGetPos, ox, oy SetTimer, WatchTheMouse, 5 movedx := 0 movedy := 0 pixelsMoved := 0 ; TrayTip, Scrolling started, Emulating scroll wheel ;} ;Else ; Send return XButton1up: Hotkey, $*XButton1 Up, XButton1up, off SetTimer, WatchTheMouse, off ;TrayTip If (pixelsMoved = 0) { ;The mouse was not moved, send the click event ; (May want to make it PGUP or something) Send Send } return WatchTheMouse: MouseGetPos, nx, ny movedx := movedx+nx-ox movedy := movedy+ny-oy pixelsMoved := pixelsMoved + Abs(nx-ox) + Abs(ny-oy) ;timesX := Abs(movedx) / 4 ;ControlGetFocus, control, A ;Loop, %timesX% ;{ ; If (movedx > 0) ; { ; SendMessage, 0x114, 1, 0, %control%, A ; 0x114 is WM_HSCROLL ; movedx := movedx - 4 ; } ; Else ; { ; SendMessage, 0x114, 0, 0, %control%, A ; 0x114 is WM_HSCROLL ; movedx := movedx + 4 ; } ;} timesY := Abs(movedy) / 4 Loop, %timesY% { If (movedy > 0) { Click WheelDown movedy := movedy - 4 } Else { Click WheelUp movedy := movedy + 4 } } MouseMove ox, oy return