Hacking a USB Keyboard

586,553

414

176

Published

Introduction: Hacking a USB Keyboard

About: My name is Randy and I am a Community Manager in these here parts. In a previous life I had founded and run the Instructables Design Studio (RIP) @ Autodesk's Pier 9 Technology Center. I'm also the author ...

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.



PIN LAYOUT:

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

SIDE A SIDE B

PIN SIDE A

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

PIN SIDE B

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!

Sigh...

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:

http://www.beyondlogic.org/keyboard/keybrd.htm

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:

http://a.parsons.edu/~randy/video/typewriter.mov

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!

Recommendations

  • Creative Misuse Contest

    Creative Misuse Contest
  • Oil Contest

    Oil Contest
  • Clocks Contest

    Clocks Contest

176 Discussions

0
user
ThomY2

8 months ago

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 ?

3 replies

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.

Hey!

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
0
user
ZabakK

2 years ago

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.

1 reply

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

good one but in need more output pins also so please tell me more

I want to control a MIDI host this way. Just borrowed a worn out USB keyboard from my buddy and i will hook it up to a cheap toy synths keyboard.

So another question...
Basically I'm using this hack to control an electronic drum set that I'm trying to make using the alphabet characters as triggers. The program I'm going to use seems to allow simultaneous hits.
My question: How do I wire it so that one button will trigger two different letters at the same time? My thinking is that if I wire two letters together, the board will be confused, this sending the wrong signal or no signal at all.
Can anyone explain what should happen? I'd like to address this before I try to build this and see that it doesn't work.
Thanks!

5 replies

Most keys cannot be pressed at the same time. There are a few exceptions though, which include 'shift', 'option' and 'control' (for example). You will need to experiment with the special function keys to get the ascii combinations that you need.

This is actually a limitation of those plastic sheets, if you wire directly to the controller you won't encounter this problem.

Thank's dude that's an awesome instructable. I just found this site and haven't joined for full access yet so I copied andpasted it all into ms word.

I use a music playing program on my pc called 'HappyEO'. It let's me press mulitple keys at the same time to play chords etc.
On a related note. When I the program on some computers I get a delay when i press a key. I was using it on my 7 year old computer running XP and it was instant. When i installed it on my friends pc with windows 7 I got the delay from when I pressed a key to hearing the note. same on laptops running Vista and recently on a laptop runnin XP. Do you think it's something to do with the secrurity software that might be on the pc's?

Well I got lucky! I was able to tweak the free program that I'm going to use to produce the drum sounds. I was able to record the sound of the kick and crash together on a free audio recording program and then save as a wav file and map a keyboard character to that new recorded sound. I'll then just connect my button to that new letter.
Thanks for giving me the need to keep looking for an answer!

You can type multiple keys at one time, but it has limitations. Some key combinations will not work. If you are doing simple drum patterns it might work if you tested different combinations of keys. I have tried playing 3 note polyphony, and it works to a certain extent, so yes it can play polyphony, but it's tricky.
What you should do is download MAX/MSP, the demo version, and try programming it to play drums with your keyboard. Then when you have found the keys that work together, you can use those. Let me know if you need help. I can help you with the MAX/MSP, and I can help you with hacking the keyboard, done both. I'm still learning about the keyboard hack. Your drum project is fairly straightforward, and can be done with MAX/MSP.

Very impressive modification.

i have a usb keyboard and have tried to solder wires on but the contacts are like half a millimeter apart i am using a 12 watt soldering iron and i am neat at soldering