A Fightstick, also known as an Arcade stick, is a video game controller, designed for fighting games such as Street Fighter or Tekken. It typically features a joystick alongside 6 or more buttons for attacks.
I decided to take the challenge of designing and building my own fight stick, dubbed the Fightstick project. However, I wanted to focus on creating a portable, minimalist design, so I spent much of the planning process figuring out ways to reduce the size of the fightstick. Notable design choices include:
- Using low-profile mechanical keyboard switches (Kailh Chocs) instead of standard Arcade-style buttons, which are typically thicker
- Using mechanical keyboard switches are best used on a PCB, so I had to design a custom keyboard PCB to mount the switches to
- Laser cutting a custom acrylic case to hold all the components at the desired dimensions
- Using four buttons instead of a joystick, since a joystick sticks upwards out of the case, making it more difficult to carry
- Soldering as many connections as possible, instead of using pin and header connections which take up more space

Typical Arcade Stick (Pictured: Mayflash F500)
Project files (including extra media) can be found here.

Completed Functional Fightstick (Missing extra mechanical switches & square keycaps, but otherwise totally functional)

PCB pre-soldering inside the Acrylic case

Soldered PCB with keyboard switches (worked on this at Hack the North!)
To-dos remaining
- Add support for the USB port to avoid damage over time
Tools and parts used
Mistakes and Lessons
In the process of doing this project, I have made several errors and learned much about electrical and product design. Errors include:
- Printing the PCB with the wrong footprint
- My first version of the keyboard PCB used the Cherry MX switch footprints, which were different than the Kailh choc switches I had. Thus I had to redesign and reorder the PCB with the correct Kailh footprints
- I learned that I need to do a better job of double and triple checking compatibility before I commit to a design
- Deciding a USB receptacle was faulty, when in reality the USB-C cable protocol was causing issues
- Upon soldering all my connections, I realized that plugging in my fightstick into my computer via USB A-C cable did not work at all. I labeled it as due to a faulty USB receptacle, and sought a replacement.
- However, upon replacing the USB receptacle, the issue still persisted, which led me to dig a little deeper. I eventually realized that the USB-C signal protocol is much more complex compared to USB 2.0, and it was likely causing my fightstick to not work.
- Upon resoldering all the appropriate connections to a new board, using a USB A-A cable resolved the issue.
- I learned that, whenever possible, keeping supplies and equipment used on my project will reduce the risk of random issues or unknown details from affecting its function. If I was using a USB A-A cable from the start, I would have removed another potential point of failure from the project, as I can be sure the USB A-A cable behaves like a wire between my PC and the fightstick.

Early prototype drawings

PCB Schematic on KiCAD