And that, folks, is how you hack a Trackman Marble to get rid of clicking glitches by making full use of its SPDT switches. The process should be very similar on any mouse utilizing similar hardware. The only mildly tricky part is figuring out how each switch gets read by the mouse's controller, particularly if it does something fancier than directly read whether the switch signal is high or low. It turned out slightly more complicated than I expected due to the odd circuitry on the left and right buttons tying into the PS/2 signals. But once that part got sorted out, the rest fell into place quickly enough. In the end, I would say the worst part of this little experiment was the tedious job of stripping and soldering over a dozen tiny wires.
When I gave the mouse a test-drive, all the button fussiness was gone. There were no misclicks or random drag-and-drop actions. It felt strange to have solid button behavior when my last memories of using the Trackman were so frustrating.
Was this all worthwhile? As a hobby or for curiosity's sake, it was a simple little project that I tackled mainly to prove that there is no reason for ancient switches to render your pointing device unusable due to contact bounce. For that purpose, I believe the project paid off, even though I doubt I'll use the Trackman for anything more than a spare.
Would I go through the hassle again? Probably not. After using the Trackman a bit for fun, I found that I did not like the left button's noticeably weaker feel. If I really wanted to repair this thing, I should have at least installed a new left button switch, though that would render my mod redundant. When my G500S' switches wear out, I'll be more inclined to simply replace the switches instead of modifying the PCB.
How about the total cost of my modification?
|2N3904||$0.50 ($0.25 x 2)|
|Solder and other supplies||$1.00|
Financially, it makes little sense to bother with the repair unless you're trying to prove something to yourself. Repair costs that often exceed a replacement are the main reason why most consumer goods are rarely worth fixing. That doesn't change the fact that I am always annoyed when I run into easily preventable failures. The most expensive parts of my “perfect debounce” implementations are the SPDT switches, and those are already present, so there's no cost excuse to fall back on.
Are there any mouse manufacturers that use a variant of my SPDT debounce implementations? If not, I hope this little bit of increased consumer awareness will motivate manufacturers to do the right thing and implement one of these penny-scale fixes. There is no patent excuse for not doing so, since these techniques have been known for decades. I hadn't read through TI's CD4043's datasheet beyond the pin-out initially, but when I revisited the document to check something else, I noticed that SPDT debouncing is even given as an example application, albeit with 1MΩ resistors instead of the 10kΩ I used.
I would gladly pay $5 more for a mouse that offers lifetime glitch-free buttons over an otherwise identical model that doesn't. How much would such a feature be worth to you?