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.
It’s not so easy to find a shop that’s willing to do a production run of 10 pieces. It’s costly but more importantly is ties up 5 machines for a number of days and they are only used for 1 or 2 days of production. This translates into a high cost for each piece. If I made 1000 pieces, I would have saved 66% of the cost on each piece. So I paid 3 times the mass production cost for the cases. You can think of it as amortizing the tooling and setup charges over 10 pieces instead of 1000. That being said, I’m not unhappy with the cost, but if this product was available for purchase, it would not be cost effective to machine your own. Just buy one. That however was not the point of this endeavor.
Here are the parts after surface finishing.
The feet for the keyboards are silicone. They aren’t particularly special, just custom. Here is a picture of the mold for the silicone feet. It’s a good quality mold, but it’s just made for small scale production. I needed under 100 pieces so there are only 4 cavities in the mold. A production mold might have 100 cavities.
Silicone can be difficult to glue or tape in place. Make sure you get good tape. I’m using 3M 9731 double sided tape. It’s one of the best for sticking silicone to things.
Here are the feet installed on the keyboard. This isn’t white silicone, but silicone with no color added. It would have wasted a substantial amount of material to make both white and black feet so I chose the neutral color. Since it’s on the bottom of the keyboard, I don’t see it as a big deal. If I had made more keyboards, I would have gotten both black & white parts made.
Finished K-Type Keyboards
The below picture shows my prototype keyboard on top, with rough machined finish and finished silver and black versions of the keyboard. This might be the first black K-Type keyboard ever.
I have to assemble another 7 keyboards, but all the parts are here and finished. It’s been a challenging project. I was lucky in that Input Club did a good job of ensuring the published files were the production version and didn’t contain any big errors. I did verify dimensions prior to manufacturing but with published open source files, there is no guarantee of any kind associated with.
It’s also important to note, even if you are provided the design files, you will very likely need to study the design and understand it. I spent a fair bit of time reading datasheets and learning about how the firmware works in the process of debugging the first prototype. It’s rare to be able to make a complex circuit without having to do at least some debugging. The biggest problem is that once you have the first board assembled, you have no known quantities. You don’t know if the files are compiled properly, don’t know if the programmer works, don’t know if the PCB was assembled properly or if there is some other problem with a component. Once you have one fully working, debugging subsequent units becomes much simpler as you have a baseline and set of working tools. Without a solid foundation in electronics and manufacturing, it would have been very difficult, if not impossible, to manufacture this keyboard, even with the provided design files. I had to manufacture many custom parts and the cost far exceeded that of purchasing a retail unit. I estimate the cost of my keyboards to be 50% more than the retail cost of the keyboards. That being said, from a prototyping & manufacturing stand point, that’s not a bad price for a small batch of 10 production quality units.
I very much enjoyed this project and I hope you enjoyed reading about it as well. In total this project took me 5 weeks to complete.