BMOW title
Floppy Emu banner

Multi-Button Mouse Support

Poor Apple, they never did get on board with having more than a single mouse button. That complicates ADB/USB conversion for USB Wombat. When converting USB to ADB, how should it handle the extra buttons on a USB mouse? What about the mouse wheel? And when converting ADB to USB, how can it generate Windows right-click events from an ADB mouse?

With firmware 0.2.0, I’ve added multi-button mouse support. Here’s how it works:

USB mouse wheel movements send up/down arrow events to the host. This works remarkably well for open file dialogs and document scrolling.

The USB mouse right button can operate in one of two modes:

  1. Macintosh mode (default): right click sends control + left click event to the host. Works for context menus in Mac OS 8 and later.
  2. NeXT mode: right click sends a true right click event to the host.

Toggle between Macintosh and NeXT modes by clicking the USB mouse wheel button (button 3).

For ADB-to-USB conversion with firmware 0.2.0, ADB mice and trackballs with more than one button can now use the extra buttons under Windows, OSX, or Linux. Generic multi-button ADB devices using extended Apple mouse protocol should work. I’ve also added vendor specific support for the 4-button Kensington Turbo Mouse 5 model 64210. Other multi-button devices using proprietary protocols may not work. If you’ve got some multi-button ADB mice from MacAlly, Kensington, Logitech, MicoSpeed, Mouse Systems, or others, please give them a try with firmware 0.2.0 and share your results.

Read 3 comments and join the conversation 

3 Comments so far

  1. Tux2000 June 24th, 2017 4:32 am

    Maybe it\’s a silly question, because I\’ve never really used old Apple hardware:

    Why don\’t you use the \”extended Apple mouse protocol\” from the last paragraph to report extra button clicks and scrolling from USB to ADB? I would assume that even the most advanced multi-button ADB mouse could be used on any ADB host, so the extended protocol should be compatible with the basic one-button protocol.

    If that\’s not the case, you could still simulate two ADB devices: One classic one-button mouse for movement and the left button, and one advanced mouse for the extra buttons and wheel(s).

    If an ADB device can detect if the host supports its protocol, you could do something very similar: As soom as the wombat detects that the advanced mouse is supported, stop sending events via the simple mouse and only use the advanced mouse.

  2. Steve June 24th, 2017 6:26 am

    Good question. In short, this way you’ll get more useful functionality in the classic Mac OS. It’s the same solution used by the Basilisk II Macintosh emulator. While the extended mouse protocol defines a way to pass extra button information, the classic OS doesn’t actually do anything with that extra information, and the protocol doesn’t handle things like mouse wheel at all. The semi-rare multi-button ADB mice that I mentioned above required a vendor-specific control panel to function, and extra buttons were used for things like click-lock or macros, not for any native OS function.

  3. Chris M. June 24th, 2017 12:34 pm

    One bonus is this support extends to the Apple IIgs as well, which lacks any special mouse control panels. I do recall at least one two-button ADB mouse that supported click-lock on the 2nd button without any drivers. I don’t recall the brand though, based on my memory of what it looked like and some image searching, it could have been an “Interex” brand mouse.

Leave a reply. Comments may not be monitored regularly. For product support questions, visit the Contact page.