Hacking a USB Keyboard





Introduction: Hacking a USB Keyboard

How to hack a USB keyboard or any keyboard for that matter. Send inputs into the computer without a pesky microcontroller.

Step 1: Open Up the Keyboard

Open up the case. You can use a screwdriver or an any ridiculous looking multi-purpose tool. Sometimes even after all the screws are removed the keyboard still won't open up. In this situation, don't worry, just forcefully pry the case apart with your screwdriver. It doesn't matter if you break the case. You don't really need it.

Step 2: Trace the Letters Back to the Pins

The inside of the case should have two plastic sheets (one on top of the other). One plastic sheet will have printed conductive tracings that go to one set of pins on the circuit board and the other sheet will have tracings that go to another set of pins on the circuit board.

When you press down on a key, the tracings on both sheets will touch each other. This completes the circuit and tells the board to send a letter, number or command back to the computer.

What you need to do is to label each conductive circle on both sheets with the letter key that corresponds to it. So, for instance, if you were to press down "A" on the keyboard, label the plastic circle on both sheets of plastic that would be pushed together if the "A" key would strike (see picture of labeled sheets).

Once you have labeled both plastic sheets with all of the corresponding keys (that you plan to use in your project), the next thing you need to do is to trace the letters back to the circuit board with a Sharpie (see notes on pictures).

One way to simplify the matter is to consider one sheet "SIDE A" and the other "SIDE B" .

Below is a chart that I made for the particular keyboard I was working on. Please remember that all keyboards are different. It will help you immensely if you make a similar chart for the keyboard you are working on.


| | | | | | | | XXXXXX | | X | | | | | | | | X
1234 5678 12 11 10 98765 432 1



A01 - 0, 9, 8, 7, 4, 3, 2, 1
A02 - 6, 5, -
A03 - N, B, ?(slash)
A04 - (period), (comma), M, V, C, X, Z, (enter)
A05 - H, G, (space), '
A06 - L, K, J, F, D, S, A, ;
A07 - Y, T
A08 - P, O, I, U, R, E, W, Q


A02 - 1, Q, A, Z
A03 - 2, W, S, X
A04 - 3, E, D, C
A05 - 4, 5, R, T, F, G, V, B
A06 - 6, 7, Y, U, H, J, N, M
A07 - 8, I, K, (comma)
A08 - 9, O, L, (period)
A09 - P, 0, ?, -, ', ;
A11 - (enter)
A12 - (space)

Step 3: A Note on Pin Layouts and Shift Registers

Basically a keyboard is a specialized shift register. It takes in a lot of inputs and sends out one output to the computer (that being a an ASCII code or control command).

When a switch is closed, the shift register processes which two pins are connected and interprets it as one particular output.

So, if you had ten pins going to each plastic sheet, then you would have one-hundred possible combinations. This is because every single pin on one sheet can be comined with every single pin on the other side. This would produce ten rows of ten possible combinations. In other words, you have just produced a "10 X 10" 2-dimensional array.

For instance, if you connect "Pin 4" on SIDE A and "Pin 6" on SIDE B you will produce the letter "M" on the computer (see picture).

If you connect "Pin 8" on SIDE A and "Pin 7" on SIDE B you will produce the letter "I" on the computer (see picture).

It's really quite simple.

Step 4: Attaching Wires

So, now you know which pins produce which letters. Now you need to connect your own mad creations to the boards.

But wait!

Before you can connect things to the board, you need to connect wires to the board!


You're going to need:

wire (ideally in a number of colors)
quick setting epoxy (from your local Radioshack or Home Depot)
a razor blade
a soldering iron

So, here is what you do. Count the number of pins you need to attach wires to. Once this is done, prepare all of the wires you're going to need. They need to be stripped on both ends about a quarter of an inch and should be about five to six inches in length. Try to use many different colors of wire so you can tell them apart later. On one end, bend the stripped part of the wire so that it can hold itself to the board (see picture).

Wrap the wire around the board so that the stripped part is touching one and only one of the pins that it needs to be connected to. Make sure none of the wires are touching. When all of the wires are in place (touching the pins and not touching each other), you're going to need to glue.

Prepare some epoxy and cover the back side of the board in epoxy so that the wires are glued in place on the side opposite from the conductive pins. Leave it for how ever many hours the epoxy says it needs to sit for for maximum strength.

Sixteen to twenty hours later or so, you're going to need to solder. So, solder the wire to the pin. If the solder won't stick to the pin, scratch the pin with a razor blade a couple of times and try again. If the pin is coated with something, scrape off the coating with a razor blade and then solder to it.

If you have a lot of money, just glue the wire to the pin with conductive epoxy very, very, carefully.

When everything is dry and in place, test the keyboard. If it works, then you're more less done.

Put it in a nice case or put it in a radioshack case. It doesn't matter.

Step 5: Other Keyboards and Considerations

Some keyboards have sockets. If it does, it saves you a lot of work. What you need to do is get your own socket or set of header pins and solder wires to each connection. Once you have a socket or header pins with wires attached, plug it into the socket on the board. Test it to see if it works by touching a wire on each side together. If it works, glue the header pins or socket into the socket on the board and you're done. It's so simple to connect, in fact, that you may not even want to bother tracing the plastic sheets and just try to figure out the key combinations by trial and error.

Also, there are Mac USB keyboards that allow you to connect other USB devices to the computer through them. I wish I could tell you something more enlightening about the USB connections on those boards, but I can't. Maybe you can do something profound with them. Otherwise, you can just attach wires to it using the method shown in Step 4.

other considerations:

-The USB cable has a tendency to rip off the shift register board. You may want to glue it in place.
-USB devices are 5v 100ma
-Some boards have LEDS attached (see picture). You may be able to send data back from the computer to light them up. If you can control the LEDS, then you can attach low voltage relays to them and have outputs as well as inputs. I haven't tried to figure it out yet, but if you want to give it a go, a good place to start may be here:


Step 6: One Step Beyond!

Once you have a hacked keyboard you can use it for a number of functions and attach a number of different types of switches.

You can build your own typewriter keyboard. Check the picture and video. It may not auto-load and it may take a long time to load when it does (it's around 20 MB), but here is the video of the typewriter:


You can use a photocell as a switch (as seen in the picture and video).

You can hook it up to a capacitance sensor and use just about anything to trigger an event in a Flash movie.

You can hook it up to some floor switches and develop your own DDR game.

You can do more things than I could ever dream up.

4 People Made This Project!


  • Epilog Challenge 9

    Epilog Challenge 9
  • Pocket-Sized Contest

    Pocket-Sized Contest
  • Science of Cooking

    Science of Cooking

We have a be nice policy.
Please be positive and constructive.




I tried this over and over and cannot get it to work consistantly, lst attempt theonly

thing that worked was 2 arcade joysticks.

Thanx man, I was wondering for a wile to make such a thing as a cheap replacement for a midi controller for my DJ setup.. How about the switches you can use, is there an resistance problem ?

I'm just curious. What kind of control did you need? Do you play chords, use arpeggiators, or use midi controller to enter notes, or are you talking about sending control messages? I'm not sure how a keyboard could help with that. I am using MAX/MSP in my project, and I'm entering chords and outputting MIDI from MAX/MSP.


I was looking for something I could use besides my mixer and CDJ's thad can control effect of just navigation through the software I use on my laptop.
I've made a system pretty much the same as you described adding some momentarily buttons and some switches. (I'll send a picture whit the massage) It was originally mend to be used as some kind of prototype so if I liked it I could change the electronics...but I did quit some gigs whit it now and it seems to hold up so far :P

2012-01-25 19.03.58.jpg2012-01-25 19.04.08.jpg2012-03-23 16.19.27.jpg2012-04-25 11.55.47.jpgIMG_7642.JPGIMG_7644.JPGIMG_7652.JPG2012-04-26 01.37.26.jpg

I've done this independently couple of times. Here are some tricks: Use soft wire to solder it to the board and after soldering it to the pins, use hot glue to secure it in place.

The tracing of the sheet lines can be difficult and boring and prone to errors, most keyboards usually split the pins into two A and B section where the pin from A part connect to the one of the pin in B section so I just plug the USB, fire up a keyboard to screen app and then use wire to shorten pin from A section with pins from B section one by one then note the corresponding ASCII on paper.

what a time saver! I looked at the wiring sheet and thought it was impossible to follow the lines to the pins. Your method was a lot easier.

...and what a handsome guy!


Nice hack. I made this a couple years ago and connect with foot switch from panic alarm pedal. That way I made distortion pedal switch for Amplitube. I have a bunch of ideas for this hack but I don't have time for realization.

Wish you luck in future projects.

the 1980 keyboards are much better since they have a whole circuitboard over the keyboard