remedy for a no scroll wheel trackball?

30

12

I am thinking to buy an trackball and my option is Logitech trackman marble. But then I found that there is no scroll wheel. How do you tackle with that? Do I definitely want to buy a trackball with scroll wheel? I scroll a lot using facebook.

I don't want to click with my index and middle fingers, so some trackball mice will not work for me, like the Trackman Wheel.

lamwaiman1988

Posted 2011-06-29T01:14:23.440

Reputation: 2 551

Try the Trackman Wheel by Logitech. The offer a wired or wireless model. – Moab – 2011-06-29T01:18:28.793

I don't want to click with my index and middle fingers, that's why I want a trackball with the ball at the center. Thanks. – lamwaiman1988 – 2011-06-29T01:20:33.390

You can usually set things up like this with your mouse software. From there you can do a variety of things (hold down the right-click button while moving the trackball, etc...). I'm assuming that you've probably fixed your problem already by now, because you posted this a year ago. If not, good luck to ya. – HelpingHand – 2013-05-30T14:03:57.657

@HelpingHand Nope I still couldn't find a viable solution. Now I am using PageUp and PageDown for scrolling. – lamwaiman1988 – 2013-08-28T06:29:35.283

Answers

13

If you're on Windows I'd suggest trying out AutoHotKey, other users have already tackled scrolling with the Marble Mouse (I used the script a the bottom):

http://www.autohotkey.com/board/topic/4677-wheel-button-emulation-script/

Logitech's solution that comes with their drivers is strange: you click once to enable 4 way scrolling and click again to disable it. You can't hold and scroll which is what I was after. I wound up uninstalling their software.

user1146719

Posted 2011-06-29T01:14:23.440

Reputation: 301

NOTE: the AHK script only works for trackballs with X-buttons, or 4+ button trackballs. – Michael Paulukonis – 2014-08-13T13:45:45.863

It's very simple to update the script to use a different button. There is a comment above a variable assignment near the top -- change "XButton1" to another value to use that button instead. There's a list of special keys in the AHK help file (just run AHK from the Start menu) under "List of Keys, Mouse Buttons, and Joystick Controls", where you can pick any key/button to act as the modifier. – James B – 2015-11-11T12:57:53.117

This solution works but only support the small left button on the trackball so it disable the default 'back' function of it for web page. Anyway, I may accept this answer after trying it out for a few days. – lamwaiman1988 – 2013-08-28T06:38:04.737

9

I have the same trackball and the solution is very elegant: when you click on a chosen button, the ball itself become a scrolling wheel. I've chosen the big right button that I press with the little finger.

This is very convenient and it takes only a few day to get used.

You will quickly consider that any scrollwheel (on a mouse or a trackball) is something unusable. Trust me, it worth it ;-)

Advantages:

  • 2D scrolling instead of 1D
  • quicker and more precise scrolling than a wheel
  • more comfortable for long scroll (thanks to the ball's inertia). Perfect for your facebook example.

I cannot live without it anymore.

Configuring that under any Linux OS is not hard. It only requires you to create a /etc/X11/xorg.conf file (see my config here: Configure a trackball under Linux without editing Xorg.conf )

More details can be found here: https://help.ubuntu.com/community/Logitech_Marblemouse_USB

On Windows, I've no experience but I think a configuration tool is delivered with the trackball.

ploum

Posted 2011-06-29T01:14:23.440

Reputation: 416

2My working environment is mostly windows so this isn't a viable option for me and I have no idea how to port this into windows. – lamwaiman1988 – 2013-08-28T06:31:52.060

8

You could try the Marble Mouse Scroll Wheel, developed especially for that mouse :

Marble Mouse Scroll Wheel, or just Marble Scroll, is a small program designed to simulate a scroll wheel on any trackball or mouse without one. It was specifically designed for the Logitech Marble Mouse but can work with any standard mouse or trackball. It is designed for Windows 2000 and up.

Marble Scroll is a replacement for Logitech's Autoscroll and Universal Scroll functions; neither properly emulate a real scroll wheel and both have limitations and flaws.

Marble Scroll works with any mouse or trackball and does not require Logitech's SetPoint or MouseWare drivers to be installed.

Features

  • Add a scroll wheel to any mouse with more than two buttons
  • Compatiblity with most applications that support a scroll wheel (for any type of input)
  • Adjustable acceleration
  • Adjustable scrolling distance (per "step" - see below)
  • Stepped scrolling to simulate a real mouse wheel
  • Quick left/right handed mode switcher
  • Quick enable/disable by clicking on the tray icon
  • Small and light on system resources

The product's website seems currently down, but here is a copy of the site's text on Archive.org.

A download link is here.

harrymc

Posted 2011-06-29T01:14:23.440

Reputation: 306 093

This still works great on Win7 & 8. Holding the back button on my mouse lets me scroll using the trackball. Yet I can still use the back button as a back button. Basically it added functionality without taking away anything. The best kind of solution. – japzone – 2014-09-22T19:57:57.380

1Doesn't seem to work reliably on Windows 10 :( – askvictor – 2015-08-03T00:12:44.007

1The linked download mirror shows up as malware - not sure if it's a false positive, but not chancing it for now. – James B – 2015-11-11T11:59:53.973

@JamesB: This product is from 2009 and has been installed many times. It must be a false positive. I note that I have no idea how well it works on newer versions of Windows. – harrymc – 2015-11-11T12:59:47.073

1

I've used it for years, and it works fine up to Windows 8, in which it became unreliable. Haven't tried it in Win 10. I emailed the orignal author who responded (!) and though he'd lost the source code, told me the basic gist of how to do it. The gist he gave me is what this other answer has done: http://superuser.com/a/782571/127024

– Johann – 2016-02-29T22:55:29.753

Compared all suggested solutions, this is the best so far. AHK scripts does not block pointer movement during scroll, which causes wrong selection in case of select+scroll. – dy_ – 2016-09-22T15:57:30.430

On windows 8 it works well. – Justinas Dūdėnas – 2013-09-25T08:57:55.167

8

There is a simple 100 line C++ alternative which is quite similar to the AutoHotKey solutions, that is

  • sending vertical/horizontal scroll wheel events by moving the trackball while holding one of the X-Buttons and
  • middle click when pressing and releasing an X-Button without moving the trackball.

https://github.com/Seelge/TrackballScroll

Edit: Newer versions provide a systray-icon, work on Windows 10 and are based on C#.

Silpion

Posted 2011-06-29T01:14:23.440

Reputation: 206

This solution is superior to any of the AutoHotKey scripts I've tried, all of which suffer from an annoying "cursor jiggle", due to a time-driven event that "moves the mouse back to its original position" every so many milliseconds while scrolling. This simple TrackballScroll executable suffers no such limitation and works very well. The only caveat is that it does not work reliably on Windows 10 Creator's Update, as of this writing: https://github.com/Seelge/TrackballScroll/issues/14

– Ben Johnson – 2017-06-05T19:02:50.853

I was using this for years and loved it (I even +1'd this answer over a year ago) but after switching to Windows 10 last week I'd like to point out that the the bug mentioned in the other comment still isn't fixed, and the unreliability has made it completely unusable for me in practice. – mtraceur – 2019-11-04T18:22:12.753

4

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 {XButton1}
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 {XButton1}
    Send {XButton1Up}
}
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

user318097

Posted 2011-06-29T01:14:23.440

Reputation: 41

If you'd rather use the right-click, replace "XButton1" with "RButton". – Matt Woelk – 2014-08-18T16:21:09.800

This is working just about perfectly for me, but is there any way to make the scrolling action smoother? I've tried both the SendMessage and WheelUp/Down methods for vertical scrolling, and they both do a 'jump' – askvictor – 2015-08-03T00:11:33.000

3

It's such a shame Logitech didn't implement a scroll wheel simulation. Their driver promises a feature to do so, but it does not work for all applications, rendering it quite useless. They were so close to creating the perfect mouse! :s

The only workaround I've found is to use an AutoHotkey script for it. With it you can make the tiny left/right buttons scroll up and down. It works perfectly, but it is a real hassle to get it configured: you'll need to learn the AutoHotkey basics first. If you decide to do so, here is my AutoHotkey script. It is an adaptation of Jerbo's original script. A single click will start scrolling at a normal pace, but a double or tripple click will start scrolling faster.

; This script remaps the two small buttons on a Logitech Trackman® Marble® Mouse
; to act as scroll up and scroll down

global lastXButton1ClickTime := 0
global nrSubsequentXButton1Clicks := 0

ScrollTheWheel(direction, scrollKey)
{
    now := A_TickCount
    timeSinceLastClick := now - lastXButton1ClickTime 
    lastXButton1ClickTime := now
    if (timeSinceLastClick < 300)
    {
        nrSubsequentXButton1Clicks := nrSubsequentXButton1Clicks + 1
    }
    else
    {
        nrSubsequentXButton1Clicks := 1
    }        

    sleepingFraction := 5

    if (nrSubsequentXButton1Clicks <= 1)
        scrollSpeed := 30
    if (nrSubsequentXButton1Clicks == 2)
        scrollSpeed := 15
    if (nrSubsequentXButton1Clicks >= 3)
        scrollSpeed := 5

    timeSlept := scrollSpeed

    loop 
    {
        if (direction == 1) ; Scroll down
        {
            static downKeyState
            if (scrollKey == 0) 
                GetKeyState, downKeyState, XButton1, P
            else
                GetKeyState, downKeyState, PgDn, P

            if downKeyState = U ; The key has been released, so break out of the loop
               break

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelDown}
                timeSlept = 0                
            }
        }
        else ; Scroll up
        {
            static upKeyState
            if (scrollKey == 0)
                GetKeyState, upKeyState, XButton2, P
            else
                GetKeyState, upKeyState, PgUp, P

            if upKeyState = U ; The key has been released, so break out of the loop
               break            

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelUp}
                timeSlept = 0                
            }
        }   

        Sleep, sleepingFraction
        timeSlept := timeSlept + sleepingFraction
    }    
}

XButton2::
    ScrollTheWheel(0, 0)
    return
XButton1::
    ScrollTheWheel(1, 0)
    return
!PgUp::
    ScrollTheWheel(0, 1)
    return
!PgDn::
    ScrollTheWheel(1, 1)
    return

Dimitri C.

Posted 2011-06-29T01:14:23.440

Reputation: 2 232

I might as well press the PageUp/PageUp key directly.... – lamwaiman1988 – 2013-08-28T06:39:57.980

2

I just got a Logitech Marble mouse and also had the problem of scrolling. So I have made this script on AutoHotKey. The left Xbutton enables scrolling, meaning that while down you can scroll vertically and horizontally with the ball, and move forward and backwards in the browser with the left and right buttons. The right Xbutton has the same action as the middle button.

Im on windows 7.

#SINGLEINSTANCE FORCE  
GLOBAL status := "basic"
GLOBAL cnt_x
GLOBAL cnt_y

XButton2::MButton

$*XButton1::
    status := "scroll"
    cnt_x := 0
    cnt_y := 0
    MOUSEGETPOS, st_x, st_y
    SETTIMER, _scroll, 30
RETURN

$*XButton1 UP::
    status := "basic"
    SETTIMER, _scroll, OFF
RETURN

_scroll:
    MOUSEGETPOS, cur_x, cur_y
    MOUSEMOVE, st_x, st_y

IF(abs(cur_x-st_x) > abs(cur_y-st_y)) {
    cnt_x := cnt_x + (cur_x-st_x)
    ControlGetFocus, control, A 
    IF (cnt_x > 7) {
        cnt := floor(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 0, 0, %control%, A
        }
        cnt_x := cnt_x - 8*floor(cnt_x / 8)
    } ELSE IF (cnt_x < -7) {
        cnt := -ceil(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 1, 0, %control%, A
        }
        cnt_x := cnt_x - 8*ceil(cnt_x / 8)
    }
} ELSE {
    IF (cur_y >= st_y) {
        cnt_y := cnt_y + (cur_y-st_y)**1.2
    } ELSE {
        cnt_y := cnt_y -(st_y-cur_y)**1.2
    }   
    IF (cnt_y > 7) {
        cnt := floor(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelUp
        }
        cnt_y := cnt_y - 8*floor(cnt_y / 8)
    } ELSE IF (cnt_y < -7) {
        cnt := -ceil(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelDown
        }
        cnt_y := cnt_y - 8*ceil(cnt_y / 8)
    }
}   
RETURN

$*LButton::
    IF (status = "basic") {
        CLICK DOWN Left
    } ELSE IF (status = "scroll") {
        SEND {Browser_Back}
    }
RETURN

$*LButton UP::
    IF (status = "basic") {
        CLICK UP Left
    }
RETURN

$*RButton::
    IF (status = "basic") {
        CLICK DOWN Right
    } ELSE IF (status = "scroll") {
        SEND {Browser_Forward}
    }
RETURN

$*RButton UP::
    IF (status = "basic") {
        CLICK UP Right
    }
RETURN

Amiral_JCDG

Posted 2011-06-29T01:14:23.440

Reputation: 21

I had given up and used up and down keys on keyboards. Also I would press on the empty space on the scroll bar to move the page up and down. – lamwaiman1988 – 2015-07-10T18:05:10.260

1

Another solution for Windows 7 that allows scrolling in all applications, including Internet Explorer:

  1. Install AutoHotKey.
  2. Save this script as scroll.ahk to the Desktop.
  3. Right-click on scroll.ahk.
  4. Select Run Script.
  5. Confirm, if prompted.

This will make holding the small right button scroll vertically when moving the trackball. The small left button is the back button.


In case the link to Erik Elmore's code disappears, here it is:

;;
;; Emulate_Scrolling_Middle_Button.ahk
;; Author: Erik Elmore <erik@ironsavior.net>
;; Version: 1.1 (Aug 16, 2005)
;;
;; Enables you to use any key with cursor movement
;; to emulate a scrolling middle button.  While
;; the TriggerKey is held down, you may move the
;; mouse cursor up and down to send scroll wheel
;; events.  If the cursor does not move by the
;; time the TriggerKey is released, then a middle
;; button click is generated.  I wrote this for my
;; 4-button Logitech Marble Mouse (trackball),  
;; which has no middle button or scroll wheel.
;;

;; Configuration

;#NoTrayIcon

;; Higher numbers mean less sensitivity
esmb_Threshold = 7

;; This key/Button activates scrolling
esmb_TriggerKey = XButton2

;; End of configuration

#Persistent
CoordMode, Mouse, Screen
Hotkey, %esmb_TriggerKey%, esmb_TriggerKeyDown
HotKey, %esmb_TriggerKey% Up, esmb_TriggerKeyUp
esmb_KeyDown = n
SetTimer, esmb_CheckForScrollEventAndExecute, 10
return

esmb_TriggerKeyDown:
  esmb_Moved = n
  esmb_FirstIteration = y
  esmb_KeyDown = y
  MouseGetPos, esmb_OrigX, esmb_OrigY
  esmb_AccumulatedDistance = 0
return

esmb_TriggerKeyUp:
  esmb_KeyDown = n
  ;; Send a middle-click if we did not scroll
  if esmb_Moved = n
    MouseClick, Middle
return

esmb_CheckForScrollEventAndExecute:
  if esmb_KeyDown = n
    return

  MouseGetPos,, esmb_NewY
  esmb_Distance := esmb_NewY - esmb_OrigY
  if esmb_Distance
    esmb_Moved = y

  esmb_AccumulatedDistance := (esmb_AccumulatedDistance + esmb_Distance)
  esmb_Ticks := (esmb_AccumulatedDistance // esmb_Threshold) ; floor divide
  esmb_AccumulatedDistance := (esmb_AccumulatedDistance - (esmb_Ticks * esmb_Threshold))
  esmb_WheelDirection := "WheelDown"
  if (esmb_Ticks < 0) {
    esmb_WheelDirection := "WheelUp"
    esmb_Ticks := (-1 * esmb_Ticks)
  }

  ;; Do not send clicks on the first iteration
  if esmb_FirstIteration = y
    esmb_FirstIteration = n
  else {
    Loop % esmb_Ticks {
      MouseClick, %esmb_WheelDirection%
    }
  }

  MouseMove,esmb_OrigX,esmb_OrigY,0
return

Dave Jarvis

Posted 2011-06-29T01:14:23.440

Reputation: 2 126

Thank you for this! I made two small modifications to this script: changed XButton2 to XButton1 as I prefer the left button, and added a * before %esmb_TriggerKey% on two lines in the #Persistent section, so they start Hotkey, *%esmb_TriggerKey%. The latter makes it work flawlessly with modifier keys, so e.g. Ctrl+Scroll works. – cincodenada – 2019-01-10T02:55:58.820

1

Depending on your OS, you may be able to configure one of the buttons to enable scrolling via moving the pointer when held. E.g. the following script enables this on button 10 of my mouse (the "top middle" button of the Logitech MX310):

#!/bin/sh
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 290 10
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 286 1
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 287 6 7 4 5

Ignacio Vazquez-Abrams

Posted 2011-06-29T01:14:23.440

Reputation: 100 516

1

There are such marble mouse (mice) that have a scroll wheel included. Otherwise,it looks like an app or some script would be required for a non wheeled mouse along with the use of one of the buttons to engage a scroll function (that you noted in a comment to another answer, as not an acceptable solution).

So "Why reinvent the wheel?" is a good adage in this case.

In these examples, the element is physically installed and there are many types to choose from. Below are two examples and styles.

wh1

Or something like this:Adesso

wh2

Carl B

Posted 2011-06-29T01:14:23.440

Reputation: 6 430

1

Two non conventional options

enter image description here

Image credit http://www5.pcmag.com/media/images/393268-leap-motion-controller.jpg

spuder

Posted 2011-06-29T01:14:23.440

Reputation: 8 755

1

I'm on Windows7 and using the Kensington Orbit Optical Trackball without scrollring - it's a two-button trackball, without the X-buttons required by most of the AHK scripts and applications pointed out by others.

However, MouseImp is working for me on Windows7. IT's configurable, but I have it set up for right-click + roll to get me a screen of scrolling. It's more like a drag, so the pointer moves, and you've only got one screen at a time [update: the scroll rate is configurable, so it can be more than "one page"].

At the same time, Kensington's TrackballWorks has been configured to give me a page-down scroll on left-click + right-click. Unfortunately it can't then scroll back up a page at a time (one or the other).

This is not a product plug - it's just what I've found to work with this model/type of trackball.

Caveat: you are constantly right and left clicking, and this can lead to confusing, and links being followed/js-activated when you just want to stop scrolling. :::sigh:::

Michael Paulukonis

Posted 2011-06-29T01:14:23.440

Reputation: 1 749

1

A simple (and ergonomic dare I say) solution is to put the function of scrolling on your lefthand.

This could be achieved by using a mouse with your left hand/ by using a keyboard with a built-in scroll wheel on its left edge/ by assigning scrolling functions to the keys of a programmable keypad with a program like Mkey (http://www.seriosoft.org/en/index.php).

Why do I think this is more ergonomic - because this approach distributes tension more evenly on both hands. (More about this: http://capsoff.org/checklist).

drabsv

Posted 2011-06-29T01:14:23.440

Reputation: 205

1

I just got an orbit wireless trackball from kensington, it it´s pretty amazing. You have the ball, you have both buttons on each side and you have a kind of circle outside the trackball that makes possible to scroll up or down the page. It really works, and I am using on Windows and Mac OSX.

andremartins

Posted 2011-06-29T01:14:23.440

Reputation: 31

1

I actually made something for this using AutoHotkey a while back and figured I'd share it here as well: Mouse Wheel Emulator

This emulates mouse wheel scrolling by moving the mouse around while holding the left and right mouse buttons.

You can also emulate a middle click by clicking the left and right mouse buttons at the same time.

blah238

Posted 2011-06-29T01:14:23.440

Reputation: 263

0

Another Trackman Marble user here.

I'm using X-Mouse Button Control for scroll emulation. This feature implementation isn't perfect there (yet?), but it is much more usable than the Logitech implementation in their own SetPoint™ software.

I recommend XMBC to anyone who don't want to mess with AutoHotKey and looking for something that just works.

Killy.MXI

Posted 2011-06-29T01:14:23.440

Reputation: 1