Many years ago, I was an avid World of Warcraft player. However, I often found it difficult to hold down the Press to Talk key (L-Ctrl) to talk to the rest of the team, while still attempting to carry out my DPS rotation.
To solve this problem, I built a one-button joystick. It used the 15-pin gameport connector, commonly found on many computer sound cards. The X and Y axis pins were permanently held in the center position, and the one button was connected to a foot switch. Mapping the Press to Talk switch to the lone joystick button allowed me to retain full use of my hands while still manually activating my microphone.
That was then. The world has changed.
15-pin gameport connectors are no longer common; now all game controllers are USB devices.
After a conversation made me think back to the foot controller, I wondered if that there was some simple way to re-create that project, updating it to instead use today's common USB interface.
Enter the Arduino Micro, and this project.
Fortunately, Matthew Heironimus had already done the heavy lifting, having already produced the excellent Arduino Joystick library. My code cribs extensively from his examples, and it is fair to say that this project would not have been anywhere near as simple or successful without his efforts.
Having discovered the Arduino Joystick library, it was a simple matter of obtaining an Arduino Micro and writing the firmware code.