NeXT mouse models and their features

Started by andreas_g, Apr 04, 2026, 09:09 AM

Previous topic - Next topic

andreas_g

Hello all,

in the context of improving mouse movement handling on Previous I want to open this new discussion.

Can we collect some information about NeXT mice? Which models exist and what features do they have? I am especially looking for the sensitivity (CPI - counts per inch, like DPI but for mice) of the different mice. Several sources on the internet suggest, that the NeXT ADB Mouse has 100 CPI but I could not find any information about non-ADB models.

stepleton

I don't know the answer to how many non-ADB mice there are, but I have one or two spare of one kind or another. The mice are all "bus mice" or "quadrature mice" which means they are pretty easy to interface with an Arduino or similar if that's something that is wieldy to you. Therefore one option would be for me to send you one of my spares so that you could rig up some kind of apparatus to measure the performance for yourself somehow. (Mouse treadmill?) Let me know.

The mice on black hardware have always had strange dynamics to me, ever since I first used one as a teen. I assume this was a consequence of how the mouse driver worked inside NeXTstep. They seemed to move slowly at first but then accelerate quite quickly, a bit like pushing around an object with high static friction but low dynamic friction.

andreas_g

Thank you very much for the offer! Unfortunately I have no equipment to test real hardware. Probably the non-ADB mouse also uses 100 CPI.
The strange mouse behaviour on NeXTstep that you describe makes it hard to get the values right. Somehow it always feels odd to use the mouse on NeXTstep.

stepleton

#3
The idea would be for someone to make the equipment in this case :-)
I assume this is not what you're looking for, but I'll share the general idea here just for fun. Note that this is not complete information; you would need to find some additional details to execute this plan.

Equipment I'd collect before starting (you may not need all of it):
- an Arduino of the most basic, classic kind, like an Arduino Uno (not the new Uno-Q).
- a solderless breadboard; can be small
- an eight-pin Mini-DIN socket
- some dupont "breadboarding" jumper wires with pins (plugs) at both ends (like this)
- some 10k resistors

The first and by far most annoying job is to turn the Mini-DIN socket into something you can plug into your breadboard: those little connectors can be a real pig to wire up. (Photo to make the point: those are very thin wires, and the entire connector is about the size of a chick pea.) If you don't have some soldering experience, I would not make this your first project; instead, I might find if there's a makerspace nearby and challenge someone there to prove their skill :-) In any case, what you want to get is each connector pin connected to a wire with a pin at the end for plugging into the breadboard.

Once you've got that done, the rest of the hardware work is a tool-free wiring job that finds you connecting the DIN connector to the Arduino with the solderless breadboard as a kind of patch panel. You'll need to connect the four quadrature lines (and if you care, the two mouse buttons as well) to individual GPIO pins on the Arduino, and of course you will also need to bridge the Arduino's +5V and ground pins into the mouse as well. Some of the six signal lines may also need to be connected to +5V or GND via a 10K resistor, called a "pull-up" or "pull-down" respectively depending on which you're connecting it to. To find out the full details necessary to complete this step, search around for other people who've hacked their NeXT mouse to work with something besides a NeXT.

The final step is programming. You'll find from online references that "bus mice" work by raising and lowering the voltages on the quadrature lines whenever you move the mouse. There are two signal lines for X and two for Y, but in your case, you will only need your program to monitor one of these wiggling lines. (So actually you didn't really need to connect all four quadrature lines in the last step!) Write an Arduino program to do a tight loop counting the number of times that the monitored line transitions from high to low. For the greatest simplicity, just loop blindly like this for ten seconds or so. Once it's done, have the program print the count over the USB serial connection.

Now you're ready to measure. Place the mouse flush with a nice long ruler or measuring stick. Start the program and then move the mouse (in one direction only) some distance over the next ten seconds. You don't have to move it at any particular speed; it's OK to move slowly if you like. Divide the displayed number of counts by inches moved and there is your answer!

Here's a well-explained example of someone's NeXT mouse interfacing project --- and while it uses something different to an Arduino, it also mentions a far less annoying Mini-DIN socket, without the difficult soldering I warned about above! It's definitely what I would use if I were undertaking this project.

But probably better than all of this is to hope to hear from someone who knows the actual CPI...

Archer

I can say the next adb mouse uses the exact same chip as the apple adb mouse.

Which is:
Resolution: 100 CPI (Counts Per Inch) standard for the original ADB mouse.
Power: 5V DC, max 100mA usage.