This is an old post, preserved for reference.
The products and services mentioned within are no longer available.
These use the standard 9 way D pinout common to machines from the 2600 through the C64 and VIC20 to the ST and Amiga, but not the Spectrum +2 (thanks Amstrad for changing the pinout).
Most of these are pretty solid, but I picked one up recently that wouldn't move up. It didn't click when moved up, so was probably the switch at fault, which I verified by shorting the contacts on the up switch and it moved up.
The microswitch is a standard size and shape, and has been used since at least the 1970s on various devices, and is still available today. There are various options for force and actuator and connection types. Most have common, normally open and normally closed contacts. The ones in this joystick only needed common and normally open, the extra tag can just be ignored.
In order to maintain a uniform feel, I opted to replace all four direction microswitches. The two fire buttons were different type, with a blue edge. These worked fine, so I left those in place.
The new microswitches I have used are Cherry D45Y, these are rated for 100,000 operations, so should last a while. These are high current versions, which I think have a more solid click than the low current ones that could have been used. These have larger spade connectors than the originals, but since some of the original connectors have been soldered to, and some are frayed, I replaced all the crimps with larger larger ones. With the removal of the autofire, the ground wiring was rejigged slightly, so I made a new ground connection for most of the switches, all chained together.
After the case had a cosmetic cleanup, time to reassemble and test. Here I'm using my old faithful joystick tester - just a battery and some LEDs in a box wired to a 9 way D connector, but quite handy for quick testing like this.