Close

PCB design decisions: Key matrix

A project log for RKey

My very own ISO mechanical keyboard. Custom PCB with many options and features.

rozzy87rOzzy87 01/26/2021 at 19:520 Comments

So I began to design a PCB. However, I soon found out that manufacturing PCBs this size is a costly process, and the minimum amount of boards I could get is 5. This means I will mess up one (trust me, this is why I order arduinos in pairs as well), and have 4 on hand to build. And who wants 4 identical ones, right? So the decision was to accomodate a few ideas.

Starting with the control circuit. I decided to sacrifice my Logitech K270 and use its control board in one of the keyboards. This means Logitech's custom key matrix. This means a hot mess of wires that don't even look like a matrix. If I accomodate that into the PCB that means I have to stick to that whatever controller I'm using for the other ones. 

K270 - ISO
The Logitech K270's key matrix... rows? columns? Let's say it's dimension no 1.

So I decided to go with a default rectangular matrix  instead. Ok, but then I need to somehow connect the K270 PCB anyway....

The solution: Use those fancy 0R "resistors" in the design! Between each switch that would otherwise be connected, I left some pads so one could either connect them with a solder bridge or leave them alone and create a custom matrix, like the K270 has.

0R FTW
The pads in the white brackets would be shorted with solder bridges when I need a "normal" key matrix. If I need to reproduce some proprietary matrix, I'll just use hand wiring and leave these open. As you can see, the row tracks fit through the columns' pads, thus enabling a single sided matrix. We'll talk about the irregular shaped pads in another post.

Even better: this way I could use one side of the PCB only for the key matrix, since you can pass the column's track between the pads of the rows' bridges.

So the end result is that basically for the K270 the PCB will only serve as a mechanical piece holding the switches and LEDs in place. I'll need to hand wire the martrix myself. For other builds however, I will only need to hand wire the columns and rows to the microcontroller board.

Discussions