[Kekszumquadrat] wanted to use a classic controller to play emulator games on his Android tablet so he set out to convert an SNES gamepad to connect via USB. He found an old USB keyboard at a yard sale for about 3 Euros. He knew that the emulator he prefers has the option of remapping all the inputs to keyboard keys which means a USB keyboard has all of the electronics he would need to pull this off.
Once he had separated the keyboard circuitry from the case [Kekszumquadrat] plugged it into his Linux box and used Xev to establish how the keyboard matrix is set up. Xev is a common package that opens up an active window on the X desktop. When run from command line, any events that happen to the window will be echoed along with verbose data about that event. When it comes to keypresses, you’ll get the keycode you need. He simply shorted columns and rows until he found the desired mapping, then it was on to soldering.
The SNES controllers are very simple devices. As we’ve seen with previous projects, they use a serial-to-parallel shift register to gather button data and send it to the console. [Kekszumquadrat] simply soldered between button traces and keyboard matrix contacts. Once he finished, the keyboard parts were tucked inside of the controller case and he’s left with a USB controller that appears to be unaltered.