A ball or optical mouse hack is cheaper and works just the same and no soldering.
Yeah, I thought about doing that at first but I wanted more buttons and didn't want to sacrifice a nice 6 button mouse for it. Using an Arduino Micro clone and a cheap encoder only cost me around $30 US to build this. And soldering is easy once you get the hang of it. You can add as many buttons to this controller as you like as well. I settled on 6 because it seemed that covered most ball and paddle games. For example in Ghox, I have the first two buttons mapped to player 1 buttons 1 and 2. The next two are for moving up and down and the final 2 are for coin and start. Using the encoder and Arduino also gives you much finer control. The encoder I used is a 600 pulse per rotation one. However, if you track all state changes, which I do, you can read 2400 positions per rotation. Now, that's too many as a USB HID mouse can only be polled at 1ms intervals max. Meaning, the most you can move the pointer (assuming you're moving it by 1 pixel at a time) each second is 1000 pixels. So, I only move the mouse pointer once for every 2 state transitions in either direction. This gives me 1200 positions per rotation of the encoder knob, which is close enough to the max polling rate for my purposes.
I also track the position of the encoder as it relates to the mouse pointer. Meaning, you will not lose any state changes no matter how fast you turn the knob. If you turn the knob from 12 O'clock to 6 O'clock and back as fast as you can as many times as you want, the mouse pointer will always end up in the same positions. I don't have one to test on, but my suspicion is that a mouse hack spinner can't manage that. Even if the hacked mouse is being polled at 1ms intervals (which it probably isn't) you are going to miss movement as nothing is tracking it to make sure the pointer always ends up in the same position corresponding to the knob location. It's still possible to miss movement if you turn the knob fast enough to exceed the 1ms polling rate. But it's much less likely to miss movement than your standard mouse. I'm not knocking the mouse spinners hacks, they are an easy and cheap solution. But using a rotary encoder and microcontroller is
clearly probably better