PCB Design Thread


What is the most appropriate trace width for keyboard PCBs?


The trace width is determined by the max current flowing through it. Digital signals in general doesn’t need much current, so you can go pretty thin. I usually use 0.254mm (10mil) for signals and 0.4064mm (16mil) for Vcc, but only when designing keyboards.


Is there any website that you can paste your keyboard-layout-editor raw data in and it auto makes your PCB? I need that in my life


Not that I know of, but there is a similar tool that can take a kle json and convert it into a project file that included footprint placement. I’ve actually used it for a couple projects and it works quite nicely once you figure out how adjustments in the script affect component placement. You still have to run traces and map your schematic but it does eliminate a good deal of the less delicate but time consuming work. I’m not completely certain where I found the script though, so I won’t post it until I make sure I’m crediting it appropriately.

In regards to the trace width convo above, I rather like using 6mil for the matrix and 10-12mil for VCC runs. The small matrix traces makes it much easier when routing around a Teensy or Pro Micro footprint.


There was a script for Eagle available on geekhack to autoplace switches using the info from KLE.

Never made it work properly. And you also need a Pro license of Eagle to be able to use it on anything bigger than a numpad.


So I just want to say thank you for everyone’s help here, especially @VinnyCordeiro and @donutcat. Your patience and advice kept me inspired to see it through to the end. I was able to bring my idea to life. Honestly, I’m just excited that it works.

Of course, now I have a few other ideas I want to work on…


You are welcome. :slight_smile:


The board looks great! It was a great feeling for me the first time I plugged in a PCB I designed and it actually worked :slight_smile:


What I haven’t figured out very easily is what is necessary to connect something like a ProMicro to a separate USB port, let’s say, to tuck the ProMicro somewhere and have the USB port in a favorable position somewhere on the edge of the board.

Any advice on how to do this?


You need a panel mount extension, like this one. You may need to mod the case of the keyboard for that.


Wow. I didn’t know something like that existed. Man, that would’ve been helpful for my last build.

…But actually, I was thinking of this or this. Can I connect one of these to a ProMicro/Teensy?


The connector alone (1st link) is for direct PCB soldering, so it isn’t exactly the best option. The breakout board (2nd link) is better, but you still need to solder wires on it to connect on the Pro Micro/Teensy…

… which brings us to the panel mount cable I linked before. Less hassle, more direct solution.


I like this advice and will use it. Thanks!


Hey there knowledgeable people!

Do any of you know where in the QMK repo I can find the mapping of the Softwarepins to the actual pins on the ATmega32u4? I’ve searched a bit myself but wasn’t successful. A few redditors and myself could really use that information: https://www.reddit.com/r/MechanicalKeyboards/comments/9ud0jr/help_flashing_xd75_from_md/


You have to look at the config.h file of the keyboard you want. Using the GH60 as an example, you’ll want to look at https://github.com/qmk/qmk_firmware/blob/master/keyboards/gh60/config.h


Hey Vinny, thx for the reply. Problem is that there is no preset for the keyboard we bought so we’re trying to put it together ourselves. It’s Massdrops Clone of Xiudis XD75 called 75keys. By flashing the atomic preset we identified a few corresponding pins but the others are a mystery. Now we can trace the colums & rows to the physical pins on the mcu but unless we know the name of said pins in QMK that’s useless.

Rear about it here: https://geekhack.org/index.php?topic=98067.0


For that you just need to refer to the ATmega32U4 datasheet, the pinout of the IC is on page 3.

Just a note: on the manual they use the notation Pxy, meaning “Port x number y”. Just delete the P and that’s the name used on QMK. Using a digital multimeter you can easily find which pin is connected to each row/column. :wink:


Aaah yes it’s right there - now I feel stupid haha. Thank you so much! :slight_smile:


So after a while sitting on the fringes and getting a little annoyed with the bird nest I’d end up with doing hand wired builds, I started looking more into PCB design. This thread has been a great help, as has the guide by ruiqimao.

I kind of wanted to start small, so I was looking to create a small 4x4 board to hook the matrix up to through holes for the rows and columns. Basically just replacing the wire matrix with the PCB and then still hooking it all up to a micro-controller like a teensy or proton. That causes some divergence from ruiqmao’s guide, so I was hoping to ask a question or two and see what the more experienced folks in the community had to say.

  1. The assumption I’m working under is that this would be almost a 1:1 with a hand wired build, so only traces, diodes, and switch footprints linked up to conductive through holes would be required (without LEDs, and the last hand wired build log of an LED enabled handwire looked… rough).

  2. If assumption 1 is incorrect, what additional parts are required? And for my education, why are they required?

  3. Not even a question really, just thanks in advance for any help.


Your first assumption is correct, a PCB is not different from a handwired circuit electrically speaking, but this kind of construction have many advantages, two of them are crucial: greater mechanical stability and repeatability.

Given you are going to use a daughter board for the microcontroller, you don’t need any additional components.