Introduction: Make a USB NES Controller

Picture of Make a USB NES Controller

This tutorial combines an original NES controller, USB keyboard, wire and tact switches into a USB NES controller suitable for use with NES and arcade emulators. The basic idea is that the keyboards controller unit is installed in the NES controller housing. The original buttons activate tact switches that are wired to the keyboard controller. When the NES controllers buttons are activated, they're registered by your computer as a key press. If you're comfortable with a soldering iron and don't mind working in small spaces, you should be able to make a USB NES controller with cheap and readily available parts. I would recommend reading the whole tutorial before starting as understanding the whole process will be of great benefit for completing each step.

I found a janky old NES controller that had seen better days in my cupboard. Considering its poor condition, I wanted to sacrifice it for a retro gaming project. I ended up combining it with an old PS2 keyboard as a frankenstein style prototype for this instructable. I was then confident enough to pick up a cheap usb keyboard and sacrifice a controller in decent condition. The benefit of using a keyboard as the brains of the controller is that it wont require drivers and will be compatible with most operating systems. Plus, it's a cheap way to convert an old piece of gaming kit into something you'll get some use out of.

Step 1: Things You Need

Picture of Things You Need

Parts list:
- 1x Nintendo NES controller
- 1x USB Keyboard*
- 8x Tact switches
- Hookup wire. preferably coloured to make life easier when soldering.

* Keyboard controller contained within needs to be small in size. Older keyboards tend to use controllers too large for this project. If unsure what this means, see next step.

- Soldering equipment
- Dremel (rotary tool) with cutting bit
- Drill
- Small files
- Hot glue gun

Step 2: Remove Keyboard Controller

Picture of Remove Keyboard Controller

Disassemble your keyboard. They tend to have half a bazillion screws on the back that need to be removed. A flat head screwdriver helps to pry the keyboard open. Although most keyboards differ slightly they usually contain two sheets of plastic with traces that create the key matrix. These sheets connect to the contacts on the keyboard controller. When a key is pressed, it connects the contacts on both sheets which closes the circuit and registers a key press. We're going to solder wire to the contacts on the keyboard controller however be sure to keep the two sheets as they will provide valuable information on how to wire it all up.

Remove the keyboard controller from the keyboard housing. The contacts on my controller were covered with a protective coating that prevents me from soldering to them. After taking some time to gently scrape the coating off with a scalpel, the contacts were revealed. I had to clip the green LEDs off the controller also as they protruded too much.

Step 3: Determine Controller Configuration

Picture of Determine Controller Configuration

A NES controller has eight inputs (up, right, down, left, select, start, b, a) therefore we need to prepare the keyboard controller to accomodate eight inputs. After looking at the key matrix for my keyboard controller, I can see that the top sheet connects to the first 8 contacts (group A) and the bottom sheet connects to the remaining contacts (group B). Yours may not be the same therefore you should examine which contacts each sheet connects to. This shows that key presses are registered when a connection is made between one of the first 8 contacts and the remaining contacts.

We need to figure out which key presses are registered by connecting the different contacts. You can examine the traces on the key matrix, however considering a NES controller only has 8 buttons. I found it just as easy to connect the controller to a computer, fire up notepad and connect the different contacts with a paperclip. You want to find pin combinations that produce key presses that aren't usually assigned to hot keys or other configuration options. This makes the most ideal inputs the 26 alphabet characters, directional inputs, enter, space etc. Inputs such as the function keys or numbers are usually assigned to hot keys in most emulators and will require additional configuration to make everything play nice. Some of the less common inputs like ~ are not recognised by some emulators also therefore it's best to find all safe inputs for smooth results.

Test each contact by holding one end of a paperclip or wire on a contact in group A and touching the other end on the contacts in group B. When a combination provides a useful input, note down which contacts you connected and continue. Ideally you want to have one button per eight of group A's inputs (to prevent key ghosting) however you will likely find that two or three of the contacts won't produce any useful inputs. To remedy this I used a single contact for two switches (see green and orange wires in images) and will connect them to switches that would never be pressed simultaneously such as up/down and left/right.

Step 4: Prepare and Solder Wiring

Picture of Prepare and Solder Wiring

Now you've determined eight separate useful button inputs, it's time to connect the wiring. Clip yourself 15cm lengths of wire to attach to the controller. I would recommend using coloured wire if possible as you can colour code each button input pair. You want to have a coloured wire connected on group A matched to the same coloured wire(s) on group B. This way you can just connect each coloured wire pair to the switches later on to make life a bit easier. You can also mark or tag the wire but I would strongly recommend labelling them in some fashion so you can make the correct connections later.

I've found the best method is to pre-tin each wire and all the contacts on the controller with some solder then fuse them together with a little heat from your iron. Once you've connected all the wires, connect the controller to a computer and test each input in notepad by touching the end of each wire pair together. When you touch the ends of each pair, a key press should be registered. If not, check you haven't bridged any of the contacts or connected the wiring incorrectly.

Step 5: Prepare the Controller

Picture of Prepare the Controller

Disassemble the NES controller by removing the six screws in the back. Remove all the parts and put them aside for now. I had to cut out a few sections in the controller housing to allow all the parts to fit (see images). The NES controllers PCB had the large portion without the buttons removed with a dremel to provide the bulk of the space for the keyboard controller.

Step 6: Install Tact Switches

Picture of Install Tact Switches

We're going to install tact switches where the current button contacts are located. This will activate the tact switch when a button is pressed on the NES controller. Drill small pilot holes in the center of each button to ensure an accurate location. Drill them out to a larger size and file each hole to allow a tact switch to fit.

The depth of the tact switch alters the feel of the controller. Install the switches level with the PCB and the controller will have a softer mushier feel. Install the switches so they protrude from the PCB and the buttons will be firmer. I chose to allow them to protrude around 1mm. Install all of your tact switches and add some hot glue to hold them in place.

Step 7: Install Components

Picture of Install Components

Insert the NES controllers buttons and spacers. Place the PCB onto its original location. As there were a few things removed from the PCB and housing, it doesn't sit as firmly as I would like. You may need to add a bit of hot glue to secure the PCB however ensure you don't block the controller from closing. Install the keyboard controller with the wiring facing towards the switches. Route the USB cable through the original slot and secure the lot with a few spots of hot glue. You're now ready to connect each input wire pair to the switches.

Step 8: Solder Your Wiring

Picture of Solder Your Wiring

Solder each of your input wires to the switches. Most of the pairs consist of one wire in group A and B. These connect to either side of the switch. This is where using coloured wires comes in handy as I can easily see each pair. I had used contacts from group A for two switches (up/down and left/right). If you've connected a contact to two buttons, they have to be buttons on the NES controller that are not pressed simultaneously or you may have issues with ghosting.  Once you've made the connections, connect the controller to a computer and test that each button on the NES controller produces a key press. If all is good, add some additional hot glue for strength

Step 9: Assemble and You're Done

Picture of Assemble and You're Done

Put it all back together and you're holding a USB NES controller. Plug it in, configure it for your emulator and have some good times. I've attempted to provide the best explanation of these steps but I'm happy to try and help in the comments if something's unclear. I've enjoyed paying a visit to some Nintendo classics and this controller provides an experience that's as close as you'll get to the real thing without wiping the dust off your old console.

More projects and videos at You can also follow my twitter feed @x2Jiggy.


IvanM53 made it! (author)2017-09-26

Thank you so much for this tutorial. I just take the part when you implement a keyboard driver for usb connection, but your proyect is really awesome and usefull, thank you again.

led music (author)2017-07-15

this is a great instructable i am working on a usb nes controller from a keyboard

KevinR129 (author)2016-02-27

Less than $5 CDN with shipping on ebay for a NEW usb NES controller so the time and effort of this project is a waste, as is your result compared to a quality proper one.

YepJustAGamer (author)KevinR1292017-03-20

You probably could use this for almost everything

It is totally worth it. It's a fun project that is rewarding especially if it is for something like a retro pie Raspberry pi where you want to make everything

GrantS38 (author)KevinR1292016-07-14

Not a waste at all. This practice also can apply if you are trying to make a MAME arcade or any number of devices using switch inputs. Thank you so much to the creator, this helped me tons on finishing my own 2 player arcade station. Far cheaper than an IPAC, and it allows for easy customization.

Fleder (author)2016-05-02

This is not at all a waste @KevinR129!

This guide will help me a lot in modifying my SNES Controller to have 2 additional buttons.

I never thought of just using a keyboard controller board for this.

But 14 buttons will be a lot more to wire, well... lets do this.

BIG THANKS to you x2Jiggy

neiled_it (author)2012-04-22

can you elaborate more on the ghosting? why would you use a single contact for two stitches? i don't quite understand.

thanks in advance!

x2Jiggy (author)neiled_it2012-04-22

Ideally you will have all 8 inputs using separate pins (8 from either group of pins) to eliminate the problem of key ghosting all together however that's usually not possible. Most likely you will have to use a couple of the pins for two inputs.

If you look at the image where the coloured wires are soldered to the pins of the keyboard controller, you'll notice I was able to use 8 pins of the first group of pins but only 6 pins from the second group because these were the only pins that provided a useful key stroke (The area within the comment box is the second group).

To prevent any potential issues with ghosting, when I had to use a pin for two inputs, I used inputs that would never be pressed simultaneously such as up/down and left/right. Hope this helps! Thanks for reading.

JRChristenson (author)x2Jiggy2016-01-07

I think I understand what you're saying but when I look at the picture I can't see any pin that has more than one wire attached. What am I missing?

Sovannoukii (author)x2Jiggy2015-12-22

excuse me sir! i you tell me some thing if i want to make a game controller with 22 pins buttons with a with a keyboard?

theswampcz (author)2015-09-13

or buy one (of course with USB) on You're welcome ;)

hellzwells (author)theswampcz2015-09-16

perhaps an instructable is in order?

Angus MacGyver (author)2012-11-23

Nice 'structable. Concise and easy to follow. I want to give this a shot with my phone. I like the idea of using an SNES controller, but this is a good for a practice run.

My only critique, is the glue on the switches looks bad. I know it's not visible with the case closed but... Hot glue is the tool of the devil and his head minion Martha Stewart

I'm probably going to use epoxy for a lower profile but I need to understand why you needed to replace the original switches. If it's simply a matter of closing the circuit why not solder the kb controller leads to the remaining nintendo board. What am I not seeing?

If you, like Angus, are thinking of using epoxy instead of hot glue, FIRST make sure it doesn't conduct electricity once cured (epoxies are typically electrically insulating, however, J-B Weld and other metal-based products obviously should NOT be used). You will almost certainly bridge multiple connections with it on the keyboard PCB (circuit board). Cheers.

TioA (author)2015-09-02

I do not see the select button

IanT2 (author)2014-09-04

Making this in my Tech class :D will be fun to use with my emulators and my micro usb to usb adptor on my phone already found one input (p) testing the conections i accetendly put my pc to sleep

lindseyb93 (author)2014-01-25

I've seen a few of these tutorials and honestly, yours looks the cleanest and easiest to follow. thanks for this!

gsarabia (author)2012-12-10


stevenrobday (author)2012-11-27

what gauge hookup wire did you use?

cacita_333 (author)2012-10-21

Can I take the hosting from a Wireless Keyboad?

Xeriel (author)2012-02-05

So, correct me if I'm wrong, but the original controller board isn't involved with any of the circuitry? You just use it to maintain proper placement for the buttons, and the tac switches are the only things wired?

I've been looking for some ideas to include a USB hub inside, and if I understand you right, this should let me free up way more space for extra hardware. Definitely a tweak to consider.

Great guide!

nani0san (author)2011-12-10

I was wondering do you have to use the tact switches or can you not just connect the wires directly to the circuit board?

but thanks a lot for the instruction i read some other tutorials for the keyboard controller configuration but yours is the easiest to do yet =3

x2Jiggy (author)nani0san2011-12-12

I was just using the circuit board as a holder for the tact switches. There are solutions for using the existing pcb however you're taking the output of the NES controller and converting it into something your computer can read (link).
This solution doesn't make use of any of the NES controllers circuitry but installs a keyboard controller and wires the buttons up to it. I found this to be the easiest and cheapest method of getting the job done.

skuishingbugs (author)2011-11-02

i was wanting to do a project where i could play emulated games with an origional controller instead of a keyboard, or a specific emulating controller, and i didnt want to spend all the money on buying and arduino board, and i didnt want the lag time that wouldve gone with it. anyway, im almost done with my keyboard nes controller, and it works! thanks for your instructable!

x2Jiggy (author)skuishingbugs2011-11-03

Awesome. Glad I could help. It's a good time playing NES with the original controller. Enjoy the fruits of your labour :D

Ale Cylon (author)2011-08-21

Wow is a great idea, I wish I still have NES controllers around, I still have a SNES controller in my spare part cabinet, can you make the same guide but for a USB SNES controller, not so retro but will have at least 4 more buttons that will be nice for PC games.

x2Jiggy (author)Ale Cylon2011-08-21

You could definitely make a SNES controller using the same method but some more planning with the keyboard controller and wiring would be required to accommodate the extra 4 inputs. I have a couple of SNES controllers so I'll take look if I get the chance. Thanks for reading :D

mikeasaurus (author)2011-08-17

looks great, the perfect addition when running emulators!

x2Jiggy (author)mikeasaurus2011-08-21

Cheers! There has been some sessions of SMB3 and Marble Madness, good times.

About This Instructable




Bio: A tech and gadget enthusiast who enjoys building and creating DIY projects. Check out my projects and tutorials on Instructables and!
More by x2Jiggy:Compact Fluorescent Grow LightAtari Combo ControllerPortable Phone Speaker (LM380)
Add instructable to: