I wanted a better controller than a keyboard to play Asteroids and Pac-Man. I found that you could buy controllers, but they didn't have the button layout of the original Asteroids cabinet, so I decided to make my own. My first thought was to make it by tearing apart a USB keyboard, and that probably could have worked, but figuring out the keyboard matrix to make my buttons look like the right switches wouldn't have been any fun. Knowing more than I did then, rollover also might have been terrible, so I'm glad I took the route I did.
I looked around for ready-to-use USB joystick devices, and found Circuit for USB game controller with 12 inputs (8 buttons + 4 directions) from Raphaël Assénat. It had the features I needed and then some! I only needed 5 buttons, and this had 8. The schematic was simple enough too, and I had etched circuit boards before, so I decided to make my own.
I looked at available open-source EDA software, and found GEDA and KiCAD. After playing around with both some, I decided to go with KiCAD, and went to work creating my first real circuit board. Looking back on the designs, I can't help but laugh at all the wasted space. A trip to Staples later, I printed some circuit board art and did the iron-on toner transfer. Then I did it a few more times until it worked right. After etching and drilling, I had to wait for parts to come in. Yawn.
At least I could work on the case in the mean time. I made drawings in [whatever CAD program I used] based on pictures of Asteroids cabinets and drawings of the buttons I picked out. Then I cut six pieces of plywood to size and drilled holes in them. I really should've used nicer plywood than I did, because there were some large splinters missing that no amount of sanding could satisfactorily smooth out. After way too many coats of paint, I finally had a somewhat nice black plywood box with holes in it.
Meanwhile, the parts arrived. Once the paint was dry, I mounted the buttons and PCB. We didn't have any PCB standoffs the right size, but that's nothing a lathe can't solve. After wiring all the buttons, I connected the whole thing to the computer and I'll be damned if it didn't work. All in all, it was a fun successful project that taught me a lot of great skills, and gave me a nice controller I still use to this day.