(Last updated: May 26, 2023)
A three-button mouse

Peter da Silva eloquently asked, "Where are all the three button [optical] mice?" I agree with his exasperated sentiment. To clarify, what we're both talking about is mice with a full-size set of three buttons on top, so that there's a "real" middle mouse button instead of just a scrollwheel which you can awkwardly press down on.

Years ago, in the absence of good options, I actually ended up giving up and using a "modern" mouse with a middle scrollwheel. The Logitech m500s (and the m500 before it) has become the one that I've been relying on. I just retrained myself to use a thumb button as my "middle" button, which admittedly does work well enough for my own purposes. In an ideal world I'd still like that middle button back, though!

Current Options (as of May 2023)

The three-button mouse marketplace in mid-2023 actually seems a heck of a lot more promising than it did about five years ago! The Perfit Optical seemed to be about it for quite awhile, but it seems that other options have been bubbling around.

Unavailable Options

Other options have come and gone over the years. I've pruned out the ones which don't even have "discontinued" store pages to look at, but this one, at least, remains online, a testament to What Once Was:

Thumb-Button Mapping

I mentioned above that I eventually resigned myself to the realities of the market and got used to using a thumb button instead of a middle button. I wanted the thumb button to actually emit the "middle button" signal, rather than having to remap things on any random app which might ordinarily be making use of the middle button. I still use X.Org on Linux, so I accomplished it with the following little script:

MOUSE_INPUT=`xinput --list --id-only 'Logitech USB Laser Mouse'`
if [[ -n "$MOUSE_INPUT" ]]; then
    xinput --set-button-map ${MOUSE_INPUT} 1 2 3 4 5 6 7 2 2

I've got that in my ~/.xinitrc and also as a little shell script in my ~/bin so I can run it as needed, in case I end up swapping USB cables around or such. I'm sure there's some fancy udev or systemd way to have it do that automatically, but this works well enough for me.

The Logitech USB Laser Mouse string would have to be adapted to your specific device report string, if you wanted to use this. Just check the output of xinput --list to find the right string for your mouse. Presumably this won't work for anyone running Wayland instead of X.org.


May 26, 2023
  • Added links to ELECOM and Beatus CAD Mouses
  • Some more cleanup, rearrangement, and dead-link pruning
  • Added Linux/X.Org button mapping info
July 2017
  • Presumably just some formatting cleanup
  • Original Rant