Introduction: Figuring Out a Key Matrix (Scan Matrix)

Picture of Figuring Out a Key Matrix (Scan Matrix)

This is a guide to figuring out how to interface with the cable ribbon of a key matrix.

A thorough run-down of what a key matrix is and how it works can be found in this PCB Heaven article:

Here are a few hints to help you determine what keys map to which wires and where a cable ribbon of a key matrix is split into its input and output wires.

Step 1: Count the Number of Wires and Keys

Picture of Count the Number of Wires and Keys

I'll be using an example key matrix here which is actually the keys to a piano keyboard.

So in this example, I have a keyboard with 61 keys, and 17 wires (count the number of solder joints if the wires are too difficult to count).

From this first clue, we can tell that the scan matrix is organized in any one of the following matrices:

  • 6x11 = 66 key combinations max
  • 7x10 = 70 key combinations max
  • 8x9 = 72 key combinations max

Step 2: Find Groups of Keys

Picture of Find Groups of Keys

By inspecting the board, we can sometimes see groupings of the keys. In this example, we can see groupings of 6 keys per group. The keys of each group are connected together, and a break separates each group.

Counting the groups for this board, there were 10 groups of 6 keys and 1 group of 1 key. So this tells us that the matrix is organized in 6x11.

Step 3: Finding the Split

Picture of Finding the Split

Now our goal is to find out where the split between the input and output wires are. We start by putting our meter in continuity testing, then attach the two leads to the opposite ends of the ribbon cable.

Hit all the keys to see if we get a reading. If we do, then mark down the one key that causes the reading to occur, and the direction of current (ie, which one is the input wire, and which one is the output wire).

Step 4: If No Reading?

Picture of If No Reading?

If none of the keys give a reading, then our current needs to flow in the opposite direction (because the diodes used in the matrix limits the current to a single direction). So swap the two leads and try again.

Step 5: Finding the Next Key

Picture of Finding the Next Key

Once we have narrowed down our first key, move one of the leads (either left or right) 1 wire inward, then hit all the keys again to narrow down the next key.

If the second key is adjacent or close to the first key, then we are likely moving along the keys of the same row (ie, keys in the same "group" from previous step). Otherwise, we are moving along the columns of the matrix.

In this example, the second key happens to be adjacent to the first key, so we can make a guess that the ribbon is split into 6 output wires on the left and 11 input wires on the right.

On the other hand, if the second key was far apart from first key, then it is likely that the ribbon is split into 11 output wires on the left and 6 input wires on the right.

Step 6: Repeat

Keep moving the leads inward and testing to confirm your observations. Sometimes the ribbons can be scrambled, but with enough testing, a pattern will appear.

That's all! Hope this helps!

You can check out my other projects at:


DaleF22 (author)2017-02-26

Im struggling with this! When i get to step 5 it all goes wrong. Ive attached photos of my old yamaha keyboard matrix ive located all the inputs to the keys (eg, from left to right, in ribon cable;
Wire 1 goes to c#, g
Wire 2 i get no continuity
Wire 3 goes to d, g#
Wire 4 no continuety
Wire 5 d#, a
Wire 6 no continuety
Wire 7 goes to e, a#
Wire 8 no continuity
Wire 9 f, b
Wire 10 no continuity
Wire 11 goes to c, f#

And so on up to wire 17.

I assume even numbers are outputs but i get no continuity when searching for outputs. Ive switched polarity aswell incase current was reversed because of the diodes but still nothing when i push the keys. In fact on even numbers i get no continuity on any solderd joint.

The part under rubber key is in groups of 6 and 61 keys.
Im at the point of rippin my hair out. Any help??

Examper (author)DaleF222017-12-18

DaleF22 For me the wires that didn't have connectivity were 1-5 and 12-17. What I did was have the red clip on 1-5 & 12-17 and the black on 6-11 and tested enough of them until I found the pattern. Your pattern could probably be Wire 1 = c#,g for all of the c#,g and so on for the keys that you got on each wire.

FedericoA12 (author)2017-10-12

Is it easy to construct a scan matrix from scratch?

polikarpa (author)2016-08-21

Hi Man!

I'm just proving a broken piano toy keyboard, and I can't understand how to connect it to an Arduino board.

I've proved the connections as in the image 2 but it don't works.

Must I use output pins in the four lines P30-P40?

Do I need this 8 analog inputs to connect it?

Can you help me, please? I'm too confused with it.....

Thank you very much!

tomatoskins (author)2015-04-09

Key matrices are awesome! I've gutted my fair share of keyboards. Thanks for your thorough explanation!

About This Instructable




Bio: === === ===
More by EvanKale:Pokemon Card DoorGuitar Cajon Mod (Internal Snare)Ratchet Knob (Unidirectional mechanism)
Add instructable to: