Two Mice Are Better Than One

In an attempt to mitigate the RSI in my right wrist, I’m teaching myself to mouse left-handed. It’s going reasonably well, but I’m still faster and more accurate with my right hand. I’d really like the option of using a right-handed mouse when I’m doing something very important, such as playing a game of Mines.

Of course, I can easily attach two USB mice to my computer, and they both work. The problem is that the mouse preferences apply to all mice. I need a way to set mouse properties per-mouse. (Incidentally, I’ve wanted this feature before to set the sensitivity differently for my laptop’s touchpad from an external mouse.)

I’ll buy a beer for the first person with a solution. I’ll buy two beers for the first person to say “Hey, this should just be easy” and change the mouse preferences capplet to make the solution all clicky-clicky.

10 thoughts on “Two Mice Are Better Than One”

  1. Do you want something like (/etc/X11/xorg.conf):

    Section “ServerLayout”
    Identifier “X.org Configured”
    Screen 0 “Screen0” 0 0
    InputDevice “Mouse0” “CorePointer”
    InputDevice “TouchPad” “AlwaysCore”
    InputDevice “Keyboard0” “CoreKeyboard”
    EndSection

    Section “InputDevice”
    Identifier “Mouse0”
    Driver “mouse”
    Option “Protocol” “auto”
    Option “Device” “/dev/input/mice” # mouse0
    Option “ZAxisMapping” “4 5 6 7”
    EndSection

    Section “InputDevice”
    Identifier “TouchPad”
    Driver “synaptics”
    Option “SHMConfig” “on”
    Option “SendCoreEvents” “true”
    Option “Protocol” “auto”
    Option “Device” “/dev/input/mouse1”
    Option “LeftEdge” “130”
    Option “RightEdge” “840”
    Option “TopEdge” “130”
    Option “BottomEdge” “640”
    Option “FingerLow” “7”
    Option “FingerHigh” “8”
    Option “MaxTapTime” “180”
    Option “MinTapTime” “110”
    Option “ClickTime” “0”
    Option “EmulateMidButtonTime” “75”
    Option “VertScrollDelta” “20”
    Option “HorizScrollDelta” “20”
    Option “MinSpeed” “0.40”
    Option “MaxSpeed” “0.65”
    Option “AccelFactor” “0.030”
    Option “EdgeMotionMinSpeed” “200”
    Option “EdgeMotionMaxSpeed” “200”
    Option “UpDownScrolling” “1”
    Option “CircularScrolling” “1”
    Option “CircScrollDelta” “0.1”
    Option “CircScrollTrigger” “3”
    Option “Emulate3Buttons” “on”
    Option “VertEdgeScroll” “on”
    EndSection

    ?

  2. actually, forget new configurations, learn to use your left pinky as the main button depressor. I have gotten really used to it actually, and I use a tablet stylus in the the right hand.

  3. Harass ajax to put xorg-server 1.4.0 with working HAL hotplug in Rawhide, then you can use xmodmap (if not, it’s a small fix to xmodmap) to change your mice individually. Or you could patch the relevant capplet to work on multiple X devices. 🙂

  4. I’ve been using a trackball more and more. Logitech makes a nice one with 2 buttons + a scrollwheel on the right and the ball is all thumb.

    I used to make fun of a a friend for using this trackball, but I have to tell you it’s really comfortable.

    (Note, I don’t have RSI, but I used to get pretty “tired” using a mouse, but with the trackball I can go all day)

    Here’s the url: http://www.logitech.com/index.cfm/mice_pointers/trackballs/devices/166&cl=us,en

  5. Jakub:

    I believe this won’t work in Xorg 1.4. The new evdev driver ends up detecting 3 mouses and 2 keyboards with the above configuration and either touchpad or the mouse stops responding.

  6. I was in the exact same situation a while back. I remember writing a python-script using HAL to find which /dev/input entry corresponded to which mouse (they weren’t the same on each boot) using the HAL-generated id. I then called xsetpointer and xset in the correct order to do what I want, which was switching the left and right buttons on the left mouse, I didn’t change the sensitivity. Then the python api changed and the script didn’t work and I don’t think I have it around anymore. It was all very hackish because there was no good support from X for using different settings for different pointing devices, but I think the support is better now.

    I do believe extending the mouse preferences capplet to support several devices would be very useful for a growing number of gnome laptop users, and being able to use more than one pointing device is perhaps the single most effective way of reducing RSI.

    I myself am using a total of six different pointing devices in different combinations. The trackpoint and touchpad of the laptop itself, a rollerbar mouse and regular mouse while docked at work, another mouse when travelling and another when docked at home.

    I’m thinking the capplet should display a tab (or select box) for each pointing device currently attached. And all settings should then be mapped to for instance the HAL info.udi of that device. This way I could disconnect the device and it will not show in preferences and when I reconnect, my settings for that device would be brought back from the mapping. I don’t know how complex this would be to implement and I’m sure there are issues with usability and so on, but I sure think it would be useful, maybe a good candidate for the next Summer of Code?

  7. You should try a trackball. They’re incredibly weird for mice users at first, but they’re a lot better for RSI, since they don’t require you moving your wrist all the time.

  8. Jorge and Nicolas,
    I actually used to use a trackball, many many years ago. I gave it up when I kept getting my ass kicked at Quake. Perhaps it’s time to try one again, since I don’t really play FPS games anymore.

Comments are closed.

Creative Commons Attribution 3.0 United States
This work by Shaun McCance is licensed under a Creative Commons Attribution 3.0 United States.