Tuesday, June 21, 2011

By Request: Kindle 3 Keyboard Map

In a previous post, loyal reader Blaketh requested that I post the keyboard map information I'm using for this project.  I immediately broke a promise to post it in the following few days, so I'll try to make up for it today. 

First, let's look at the connector itself, so you can figure out which end is up.  With the rear cover removed, you can see the keyboard connector in the lower-right corner of the main board.  It's a thin white FFC (Flat Flex Cable) type, and has 20 very small pins. 


As seen in this picture, pin 1 is at the bottom, and pin 20 on top. 

The keyboard itself is nothing more than a bunch of dry-contact switches, which is to say there aren't any sensitive electronics to worry about damaging or cloning.  To simulate a keystroke, all you have to do is short two wires together.  The trick is figuring out which pairs do what...

For your consideration, I present the keyboard map of the Kindle-3. 

(Format: (Short this pin)  (to this pin)  (to generate this keystroke) )


1 7
Menu
1 8
Home
1 9
Back
2 12
Q
2 13
W
2 14
E
3 7
R
3 8
T
3 9
Y
3 10
U
3 11
I
3 12
O
3 13
P
3 14
A
4 7
S
4 8
D
4 9
F
4 10
G
4 11
Home
4 12
J
4 13
K
4 14
L
5 7
Del
5 8
Z
5 9
X
5 10
C
5 11
V
5 12
Back
5 13
N
5 14
M
6 7
.
6 9
Enter
6 10
^ (shift)
6 11
Alt
6 12
Space
6 13
Aa
6 14
Sym
20 15
FW_UP
20 16
FW_DN
20 17
FW_LEFT
20 18
FW_RIGHT
20 19
FW_CENTER

A simple pushbutton can be used to mimic the stock Kindle keys. 

One word of caution - the auto-repeat delay is very short.  You don't notice this on the stock Kindle because those tiny little buttons don't maintain contact when pressed.  I won't pretend to know much about their internal structure, but I can tell you that a standard button will generate a lot of duplicate keystrokes in rapid succession if held down or even pressed slowly.  In my case I'm using a microcontroller to handle all the timing so it's not a big issue.  However, if you're just cloning the keyboard with no additional electronics, you might want to investigate a debounce circuit of some sort or you'll get a lot of duplicate keystrokes.

That's it!  Once again, thanks for reading!

2 comments:

  1. I am very excited to have found your blog, having been trying to do something similar for my mother-in-law who has MS. So excited, in fact, that I've set up a blogger account just to be able to comment! I was thinking about a simple hack to make the Kindle's previous/next page buttons controllable using an external switch. Since you have had the thing open, do you have any idea whether the wiring for those switches is at all accessible? Thx, Tim

    ReplyDelete
  2. @timh: I'm sorry to hear about your mother's condition, but I'm impressed with your desire to help her. (internet high-five)

    You and I have the same goal with the Kindle - to turn a single page. Unfortunately the way to do that is to get access to the tiny connectors about halfway up either side of the main board. I found connectors and cables for these but was unable to securely solder them to a board.

    The buttons themselves are sealed somehow, and I was not able to gain access to any solderable surface on the actual buttons. That was actually the original goal, just to solder straight to the motherboard. If you can figure it out, let me know.

    Unfortunately to date the software hack and custom circuit board are the only ways I know of to do what you need. I'll be open-sourcing everything I've done once I've organized it all, so you can certainly build your own. It's not trivial, but it's still doable.

    Thanks for taking the time to comment!

    ReplyDelete