I’ve decided to try and manufacture 10 K-type keyboards. This is a keyboard designed by Input Club and for me it ticks all the boxes for what a mechanical keyboard should be. There is some drama in the history of this keyboard, where Massdrop manufactured it, then had a falling out with Input Club and released a copy called the CTRL. Input club has moved on to a new keyboard design. So, you can’t buy this keyboard and I’m not selling them either. I simply wanted a new keyboard and a manufacturing challenge.
Why the K-type? The design is open source which is the first criteria. Secondly, it has almost all custom parts. You can’t just buy the parts and assemble them. Last but not least, I think it’s cool and I want one.
So what custom parts do you need?
1. CNC Machined Aluminum Case
2. CNC Machined Acrylic Layer
3. Custom PCB
4. Custom LEDs, yup, you heard right, custom. More on this later.
5. Custom screws, believe it or not.
6. Custom Silicone Rubber Feet
There is also the keyboard switch sockets. They are single source parts from a Chinese manufacturer. That could be a challenge too. What’s the MOQ? Can I just call them and buy them?
The keyboard PCB is fairly complicated and many components are 0402, which was not necessary but I’ve decided to not modify the design for ease of manufacture. I’ll use all parts as specified in the design files.
I ordered the PCBs from a Chinese PCB supplier. I ordered 15 pcs (It’s always good to have extra PCBs) in white. The originals were blue but I figure with LEDs, the white can’t hurt. I did not opt for gold plating of pads.
There was basically no technical challenge here. The Gerber files were all provided and I simply ordered them. The biggest challenge was the fact that the website is all in Chinese.
They PCB’s look very good. Next, order all the components.
The BOM has a number of common components; resitors, capacitors and IC’s. Not much to say on those, they are all readily available. The part that gave me the most trouble was the USB Type C connector. It’s a very high quality connector from Japan. There was no Chinese copy with the same pinout. There was one close, but not close enough. I had to special order these parts, and I was none too pleased about it. A Similar Chinese part can be had for $0.30, with these being more like $3. I considered changing the PCB but I was torn. The PCBs had arrived. It would have been cheaper to throw them out, modify them and order the Chinese parts but I committed to not changing the design files, so I just ordered the Japanese parts. To be fair they are extremely high quality and likely to never break.
Japanese connector is the one on the left.
There were two parts listed from a company called Kaihua. This is a Chinese mechanical switch manufacturer. They also manufacture a switch socket that allows for hot swapping switches. Most other keyboards have switches soldered to the PCB. With these sockets, you can replace switches without soldering. They were also listed as the source for the LEDs for the PCB. This was odd because they can’t possibly manufacture LEDs. The sockets were pretty easy. I quick email inquiry and I had those on order. MOQ of 2000pcs but still not hard to get. I also ordered mechanical switches from them. Keyboard mechanical switches have lots of types and manufacturers. I chose Kaihua switches because I have no experience with any mechanical keyboard switches and I was ordering parts from them anyway.
Kaihua said the LEDs would take a month to get and they were very expensive. I ended up finding an LED manufacturer online and having them custom make the LEDs. They had a similar LED but the pinout was not compatible, so I had them make me some with the correct pinout. Less than half the price and they arrived in under a week.
What makes these LEDs a bit unique is that you can mount them either up or down. This allows them to be assembled from one side of the PCB, but light up either the top or bottom of the PCB. A hole is cut in the PCB and the LED sits half in the PCB and half above. Neat design. One down side, for me anyway, is that to use a pick and place machine with these, you need one roll with the LEDs facing up, and one roll with the LEDs facing down. A pick and place machine cannot flip and component. It can only rotate it. So I ended up ordering two rolls of these, though one would have been enough as far as quantity goes.
PCB Assembly & Loading Bootloader
I wanted to use pick and place machines to assemble the PCBs. I bought the components on reels for this purpose. Unfortunately it just didn’t work out that way. My pick and place machines don’t have the nozzles for 0402 components, nor do I have the feeders. I had the feeder but not the nozzle for the switch sockets, so due to the cost and low volume, they were assembled manually. The solder was applied with a template, then each part was placed with tweezers. This is very effective, but slow. Then the boards were put through a reflow oven for soldering. There was some tweaking needed after going through the oven and I did the repairs with a magnifying camera. There were no real challenges in the assembly besides the parts being small. With the camera it was easy to see poorly soldered joints and fix them.
Once assembled, I had to figure out how to load the bootloader on to the MCU. Input Club actually had decent instructions on github but they didn’t specifically cover the programmer I bought. Also the PCBs have 2 headers. One for an expensive programming adapter and another for a plain row of header pins. I ended up 3D printing a holder for pogo pins and using the row of header pin holes for programming. It works fine, but you wouldn’t want to do 1000 pieces that way.
I used a computer running Ubuntu to compile the bootloader. There were fairly detailed instructions on github. I was pleasantly surprised. More effort was taken to write the instructions than strictly needed. Input club made a real effort to describe the process and make it accessible. That isn’t to say it was fast, but with some reading a bit of trial and error, I was able to get things compiled in an hour or two.
I used a cheap Jlink adapter for the programming. Using JFlash, I loaded the bootloader and the programming was straight forward. I did however spent quite a few hours figuring out details about the MCU and how to flash the first piece of code onto it. Input Club used a different programmer, so there was less info on this one. It simply said compatible. I can confirm it was. As long as you have the bootloader, a JLink adapter and JFlash, you can program the MCU easily. Everything is easy once you know how to do it.
The screws are a little bit interesting and also a big pain. First, here is drawing of the screw in question.
The screw is a spacer and a flat head screw all in one. I had these CNC machined and not made with custom tooling. The only impact this had was on the head of the screw. By necessity, the slot was saw cut. This meant that if I made it philips head, the slots would have been cut to the edge. I made the decision to go with a slot head as this looked more authentic. The philips would have looked odd with the cuts extending to the edge of the screw. Given my choice, I would have made them hex, but I just didn’t feel like making tooling or using EDM machining for 100 screws. As it turns out, I got them all as a freebie from a supplier.
Since high end clocks and watches use slot head screws, I didn’t feel this change would affect the quality look of the product. This was the only change I made to the design files.
I don’t like these screws because there is a flaw in the design. The screws serve 2 purposes and due to tolerances it’s almost impossible to do both perfectly. We need to look at the internal structure of the keyboard to see the issue.
I’ve made the top and bottom of the case dark gray. The white in between is the acrylic layer with the screw being the center of the image. The screw should both clamp the PCB (green) in place and hold on the back cover which also serves to clamp the acrylic in place. The back cover is fairly thin and would bend if you tighten the screws too much. For the screw to clamp the PCB and hold the back cover in place without bending it requires the length to be exact. The problem is that the PCB material has a +/- 0.1mm tolerance on it. Not to mention the machining tolerances on the screws, aluminum and acrylic. To add to the issue, if the screws aren’t tight enough, the back cover can move slightly as it has no other alignment features. The acrylic has pins that stop is sliding but not the back cover. The best compromise is to have the screw boss short so it doesn’t quite clamp the PCB. Once the 87 switches are installed, the PCB can’t move anyway, but when they aren’t installed, the PCB can move 0.1mm or so. Not a big deal, but it would have been better to have internal screws for the PCB and external ones for the cover. The PCB has alignment pins, so it can’t move side to side, only up and down. 0.1mm is almost nothing and as I said once assembled, it’s a non issue. I still don’t like the dual purpose screws and with tolerance stack up, I see no way to do a production run without this issue.
CNC Machined Aluminum Case
The case of the keyboard is a fairly complex shape. The top of the keyboard has machining on 3 sides and has lots of cutouts requiring a very small radius cutter to be used. The setups are pretty straight forward though. A vice can be used for 2 of the operations and a simple fixture with screw holes can be used for the last.
The bottom of the case is a thin flat sheet. The most convenient way to machine it is with a vacuum fixture. This requires more machining to make than the part itself. This goes for both the bottom of the case and the acrylic piece. They are different fixtures, but very similar.
The CNC shop used 5 CNC machines to do the production of the cases. I had one made first to verify dimensions, not anodized, then 10 made in the production run. I had 5 finished in silver and 5 finished in black. The finish is similar to that of the iPad. It’s not identical but it’s very close.