Hacking the Kinesis Contoured keyboard

Kinesis Contoured Professional QD

With the successful completion of the humble hacker keyboard, I’ve decided to modify one of my Kinesis Contoured Keyboard keyboards so that I can use my firmware to gain additional programmability. I’m going to replace the existing controller with one based on the Teensy++. I’m starting with my second Kinesis board, a “Professional QD”. I don’t remember exactly when I bought this board, but the date on the controller board is 03/18/99.

Step One – determine the matrix

First, we have to discover the keyboard matrix – which is basically how individual keys map to pins on the keyboard connector. For a good description of how a keyboard matrix works, visit Dave Dribin’s Keyboard Matrix Help page.

With a normal keyboard, I would just wire the pins from the keyboard connector to my Teensy++, then load my firmware built in “Matrix Discovery Mode” (see bottom of linked page). Once installed, the matrix can be found simply by pressing keys on the keyboard. But the kinesis is a special case, in that there are essentially 6 individual keyboards joined together. To find the complete matrix, each individual board matrix must first be determined, then the main board has to be mapped out to find out how these are to be combined.

That last bit is not strictly necessary, as I am free to map each individual board however I want, but I thought it best to stick with the original layout. At the very least, someone else may find this information useful.

Below are the individual keyboard matrices. For the most part, I’ve labeled components as they are labeled on the PCBs.


Left hand

Left Hand

Exceptions to the board labeling are:

  • The main connector PL2 had no label
  • Labels with more than two characters have been shortened (e.g. SHIFTLS, TABTB, etc.)

PL2/J2

6 7 8 10 11 12
1 \ IN LT RT
2 LS Z X C V B
3 CP A S D F G
5 TB Q W E R T
13 = 1 2 3 4 5


Right hand

Right Hand

Note that the square brackets are labeled incorrectly on the PCB. That is, the left bracket is labeled as the right, and vice versa.

PR2/J7

1 2 3 6 12 13
4 UP DN [ ]
7 NS , M RS . /
8 H K J ' L ;
9 Y I U \ O P
10 6 8 7 - 9 0


Thumbs

Thumbs

Left thumb

PL1/J5

1 2 3 8
4 SL3 SL6 SL4
5 SL1 SL5 SL2

Right thumb

PR1/J6

3 4 5 6
7 SR1 SR2 SR5
8 SR4 SR3 SR6


Left function keys

Left function keys

PL3/J3

2 3,6,10 4,7,11
1 ESC F1 F2
8 F3 F4 F5
5 F6 F7 F8


Right function keys

Right function keys

PR2/J4

5 8,11 7,10
8 PB PG KY
1 F9 F10 F11
5 F12 PS SL

The two keys PG(Program) and KY(Keypad) in the table above are not actually connected as shown. They serve special purposes and are not part of the normal key matrix when using the Kinesis controller. Instead, they are connected as follows:

1 2
3 PG KY

To add them to the matrix above, make the following connections:

  • J4-1 → J4-8
  • J4-2 → J4-7
  • J4-3 → J4-4

The combined matrix

This is the combined matrix based on how each individual keyboard is connected to the controller board.

Keys X1 and X2 in cells 5A and 4L do not exist. These are placeholders for the addition of extra keys below the shift keys.

ABCDEFGHIJKLMNO
1=12345F6F7F8
2TBQWERTF3F4F5
3CPASDFGESCF1F2
4LSZXCVBUPDN[]X1F9F10F11
5X2`INLTRT67890-F12PSSL
6SL1SL2SL5YUIOPPBPGKY
7SR4SR3SR6SL4SL3SL6HJKL;
8SR1SR2SR5NM,./RS

Since I’m not using the original controller, I’ve rearranged the different blocks and shifted some rows and columns to arrive at the more sensible matrix below.

ABCDEFGHIJKLMNO
1=1234567890-ESCF1F2
2TBQWERTYUIOPF3F4F5
3CPASDFGHJKL;F6F7F8
4LSZXCVBNM,./RSF9F10F11
5X2`INLTRTUPDN[]X1F12PSSL
6SL1SL2SL5SR4SR3SR6PBPGKY
7SL4SL3SL6SR1SR2SR5

To obtain this matrix, the rows and columns must be connected as follows:

Row Connection
1 J2-13; J7-10; J3-1
2 J2-5; J7-9; J3-8
3 J2-3; J7-8; J3-5
4 J2-2; J7-7; J4-6
5 J2-1; J7-4; J4-9
6 J5-5; J6-8; J4-3,4
7 J5-4; J6-7
Col Connections
A J2-6
B J2-7
C J2-8; J5-2
D J2-10; J5-8
E J2-11; J5-1
F J2-12; J5-3
G J7-1; J6-3
H J7-3; J6-4
I J7-2; J6-5
J J7-12; J6-6
K J7-13
L J7-6
M J3-2; J4-5
N J3-3,6,10; J4-1,8,11
O J3-4,7,11; J4-2,7,10

Next up: building a replacement controller board!

This entry was posted in keyboards and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>