Hi, I'm jshufelt

Another great build log!

The pictures do a great job illustrating the text. How are you liking the board overall? It seems like a really solid build all around. :slight_smile:

1 Like

Thanks! Overall, pretty happy with it, if for no other reason than I feel like I’m making steady progress towards endgame. At the moment, it’s in rotation with the 67g Zealio Tada (build #1) for daily driving. Will that remain the case? Not sure. The two things I was most happy about with the Phantom build were the lubed switches and the @Walkerstop style stab mods - and the Tada benefits from neither treatment at the moment.

Actually, if I really am getting any better at builds, it probably won’t be the case, because my build backlog is embarrassingly long at the moment, so new daily drivers should be on the horizon, right? I hope the Keebtalk servers have ample storage for build log photos…

2 Likes

Love your builds :slight_smile:

1 Like

Thank you!

This is a really nice build log… quality pictures, attention to detail, lots of information. I like that you addressed dampening the plate, most people don’t do that. I did something kind of similar on my recent 8x build by gluing silicone foam to the backside of the plate using 3mm thick silicone foam, which I think only just barely touches the PCB and maybe not in every spot. but I thin it still helped. Since the 1/8" would be about 3.175 I wonder if that would work better for that purpose?
This is what I did, I think it’s pretty similar:

Also glad the stabilizer mod worked out for you, as far as I know the problem with that mod on PCB mounted stabs is that the slightly different geometry with PCB mount stabs means that if you do this mod, when you pull the keycaps off, you can accidentally pull the slider right out of the stab housing. I didn’t try it myself yet, but this was reported by others who tried it on PCB mount stabs, and when I look at a PCB mount stab and a plate mount stab side by side I can kind of see why that would happen. I will probably still try it at some point just to confirm the issue.

2 Likes

Thanks! Really enjoying all of your recent efforts on switch composition, stabs, lubing - great work. It’s motivating me to dig deeper on my builds.

Speaking of attention to detail, nice work covering all of the plate in the photo above. I wanted to do that with the sorbo, but shaving it to a more appropriate thickness sapped my will to live. At least for sorbo, I wanted something thicker than 1/8" (see analysis here). If that analysis holds, and if it holds for a different material like silicone foam, then 4mm thick strips would be in the sweet spot, and it looks that thickness is available. Any idea about the duro rating of that foam?

Also, thanks for the heads up on issues with the stab mod on PCB mount stabs - this is quite timely information, as I was planning to try that in the next week or so. I assume it’s the clipping of all four legs on the slider that creates the issue?

Sorbothane thicker than 1/8" will be available in R2 :wink:

1 Like

Oooh, you’re making my day.

Geek “arts-and-crafts” (prologue, builds #7-10)

Have you ever wanted to do a build just to see how a keyboard would look in real life?

Usually, I’m building because I’m trying to improve my build skills, or evaluate parts and materials, or try new build approaches, or even all of these at once. Sure, I want the result to look nice, and I do think about the case and the keycaps; finishes, profiles, and colorways are all important. But for the builds I’ve done so far, the primary foci of my endgame quest have been sound and feel.

But this time around, a build was inspired not by the clacks and thocks, nor by the bumps and feels, but by a set of decorative caps - in fact, four builds and four sets of decorative caps. Here are the spacebars from those sets, in a bit of what we call ‘foreshadowing’.

Normally, painted or artisan keycaps don’t get me excited. To my eye, thematic consistency often yields the most appealing results, and the wild deviations from theme that are typical of artisans just end up looking jarring and unappealing. More plainly: when you replace your Dolch escape cap with a neon goblin head, cheers to you, my friend, but I’m sitting this round out.

But there was something about these particular decorative sets that appealed to me. Simple color palettes, consistent styles? I’m in. I thought wooden cases would serve as great backdrops for these nature-themed
caps, and the neutral colors and crisp legends of DSA Otaku would provide alpha coverage without clashing with the decorations. The aggressively red modifiers of DSA Otaku weren’t going to work, but I thought (naively) this would be an easy problem to solve. I mean, it’s just color matching, right? Not a problem.

This is also what we call ‘foreshadowing’.

Meanwhile, at this point, I could have just gone ahead with ordering parts and materials, but I know what I’m about. There needed to be something about these builds that would get me closer to endgame. After some thought, it dawned on me. Four sets of Zilents, 65g vs 67g, unlubed vs lubed, direct comparison. I’ve wanted to try quiet switches for some time, and I’ve seen many mentions of Zilent “scratchiness”, and the beneficial effects of lubing, specifically in regards to these switches, so this project seemed like a great excuse to evaluate Zilents and lubing.

To at least pretend that this little geek arts-and-crafts project has any scientific purpose, I wanted to try to hold everything else constant: DZ60 PCBs, aluminum plates, GMK screw-in stabs, and wooden cases across all four builds, with no attempt to do any case dampening or plate/PCB dampening. The only variables would be switch weighting, presence/absence of lube, and, of course, the decorative keycap choices.

Stay tuned…

Build #7: "Blossom Pavilion"

Here’s a big pile of parts! Let’s get after it.

If you’ve read through all of the preceding build logs, you know the basic drill at this point, so let’s focus on teaching the old dog new tricks.

When I saw the decorative keycaps online, I thought a light pink color would work for the mods, playing off of the spring blossom accents. This is when I discovered that getting the exact color shade and profile you want is, sadly, infeasible. As best as I could tell, the options were these:

  • Design a set and run a group buy. You know, maybe someday? Today, however, is not that day.
  • Raid the kids’ college fund and commission a one-off custom set. Intriguing, but even in the context of this project, a little too far past the crazy bar.
  • Buy existing sets and mix and match caps. We have a winner!

Even so, it’s a winner by split decision - there is a relatively small set of available colors for PBT dye-sub 60% icon mods on PMK, and this more saturated pink was the best I could do. We’ll have to wait for the decorative caps to arrive, but this should work, right?

After trying more aggressive stabilizer lubing in previous builds, and running into problems with sticky stabilizers, I backed off to a slower paintbrush approach with more control. I also opted to do a bandaid-style mod. However, I don’t know about you, but the idea of a bandaid inside my keyboard triggers some kind of weird OCD thing. So, I used vinyl electrical tape instead. Here’s the tape placement for the backspace stabilizers:

And here’s what it looks like with the stabilizer mounted in place. You can see the tape underneath the stabilizer housing.

The DZ60 is known as a “swiss-cheese” PCB due to the number of mounting holes for all of the layout configurations it supports, so I like to make sure I’m putting the switches and stabilizers in the right place. Here, I used a ball-point pen to mark the PCB with the holes I needed to use for an ANSI layout; you can see the pen marks around left shift holes.

Putting the 65g Zilents in.

Do you have an OCD problem like me? Like, you know you’re not going to use backlighting, so there’s no reason to put LEDs in the board, but the board supports it, so, how can you just leave those holes empty? I should look into therapy sometime.

Getting the soldered PCB/plate sandwich into the case:

And, here we are, prior to the arrival of the decorative caps. It’s nice, and while the keys aren’t really silent, they are noticeably quieter and softer than anything I’ve built up to this point, with that nice Zeal tactility. I see the appeal; these are nice switches. I’d also say, however, that I think I get what people are talking about when they say the Zilents are scratchy. The sensation on the downstroke is that of rubbing two almost-smooth-but-not-quite-perfectly-smooth surfaces together, maybe like rubbing two flaps of packaging cardboard together? I wouldn’t go so far as to say it’s bothersome, but I’d bet most people would notice it. The switch lubing experiment coming up in a couple of builds is going to be interesting.

OK, fast forward two months, and now I have the decorative caps. Remember that foreshadowing from the previous build log that introduced this little build series, where I showed you the lovely decorative spacebars?
Welcome to the world of group buys, where, every once in a while, things don’t go quite as planned. When I mounted the first decorative bar in place of the blank one, the spacebar stopped moving. Hmmm. After a few minutes of inspection, it became clear that the alignment of the spacebar’s mount was off. After a few more minutes, it became clear that all of the decorative spacebars were defective. Here, the four defective ones are closest to the camera, and a known good DSA spacebar is in the back.

Hard to see? A straight line makes it more obvious.

Sigh. I had the choice of returning the complete decorative sets for a full refund, or just getting a refund for the decorative caps. I chose the latter, as I felt I could still achieve “the look” I was after with the rest of the decorative sets. But that’s when I discovered the next problem, which was entirely my fault; doing color matching by online photos/renders is a really bad idea. What looked like pale shades of green and pink in the renders turned out to be much more saturated colors in real life, and the saturated colors clashed with the saturated pink mods I had in hand.

So, I paid my penance as one does in this hobby, by waiting for more packages. First, a set of color chips from PMK to determine a better match for the mods, and then new mod icon sets in (hopefully) more suitable colors.

Lessons learned

  • Vinyl electrical tape seems to ever so slightly soften the stabilizer clack, but I wouldn’t say it’s a dramatic difference.
  • Prefer the brush lubing approach on the housing, stems, and wires, even though it takes me quite a bit longer to do it this way; I feel I have more control over the amount of lube being applied.
  • Check for plate warping/bending early on in the build; there was a slight warp at the right CTRL corner of the plate, and trying to deal with it after all the switches were seated on the plate and PCB was a pain.
  • I didn’t want Sorbothane (or any other dampening material) to mask changes in noise between switches as we work through this build series, because, science. But the absence of heft is noticeable, particularly compared with build #4 which had a layer of Sorbothane.
  • Color match with plastic in hand!

Specifications

case: walnut 60%
case mods: N/A
PCB: DZ60 R2
plate: aluminum DZ60 Plate-B (2.25u left shift)
LEDs: white f1.8mm per-key
switches: R11 65g Zilents
switch lubing: N/A
layout: ANSI
keycaps:
- DSA Otaku "Katakana" alphas
- SP DSA sublimated 60% icon mods in green (VCC)
- DSA Landscape "Blossom Pavilion" set, 8x1u, 1x1.25u
stabilizers: GMK screw-in PCB mount
stabilizer mods: clipped, lubed with Permatex Dielectric Grease, "bandaid" mod with vinyl electrical tape
HxWxD (without caps): 1.25"x12"x4.5"
HxWxD: 1.5"x12"x4.5"
assembled weight: 1.41 lbs
3 Likes

I enjoyed reading all your building details :slight_smile: I like how detailed and focused on perfection they are !

Keep on building & sharing the fun with us :slight_smile:

1 Like

I appreciate the kind words, and I’m glad you’re enjoying the logs. Because I’ve learned so much from all of the online build logs, notes, and comments that others have shared, it seems only right to do what I can to share my learning experiences.

As for perfection, well, you might be reading the wrong build logs! :grinning: But it’s fun to try to learn something and get a little better with every build.

1 Like

Build #8: "Koi Pond"

I’ve been talking a pretty good game when it comes to the switch and lubing comparisons for this little build series, and keeping things controlled from build to build. But sometimes you just have to roll with the flow. I had originally planned to use vinyl electrical tape for the stabilizer band-aid mod on all four of these builds, but when I read about an alternative option, adhesive silicone pads, I couldn’t resist giving them a try.

The idea behind the stabilizer band-aid mod makes intuitive sense - absorb some of the stabilizer slider downstroke impact on the PCB with a layer of impact-absorbing material. It’s the choice of material that tweaks my sensibilities. For me, I just never liked the idea of putting bandaid fabric inside a keyboard. I thought there must be other more suitable options for absorbing mechanical impact. When @walkerstop mentioned these silicone pads, I picked up a package and resolved to give them a try in this build, with the conflicting ideas in my head that:

  • There wouldn’t be enough change in stabilizer behavior to affect comparisons across the “geek arts-and-crafts” builds
  • This will be much better than vinyl tape for absorbing impacts and reducing stabilizer noise.

Much better, but not noticeable. Sure!

Hard to beat peel-and-stick for ease of installation. The thickness of these pads is roughly 0.5mm, which wasn’t enough to noticeably affect keystroke travel, and the GMK stabilizer housings were able to clamp down well enough on the silicone. I do think it’s important to align the pads on the imaginary centerline running through the stabilizer mount holes, though, so that when the stabilizer housing is screwed into the PCB, it won’t be off-center relative to the silicone pad and then tilt to one side or the other.

The build proceeded from here in the usual way, and to match the “Koi Pond” decorative keycaps, I had originally chosen a light blue color for the icon mods.

And again, as with the previous build, when the decorative caps actually arrived, the colors were far more saturated than I had anticipated. Remember the color matching I had to do for the previous build? That process actually involved not only that build, but this one, and the next one. Batch mode for color chips and icon mod orders! I suppose I should be happy all of this only involved two shipments instead of six…

The feel of the 67g Zilents is similar to the 67g Zealios, as expected, and differs from the 65g Zilents in the same way that the 67g Zealios differ from the 65g Zealios - a more pronounced tactile bump. As with the previous build, these switches have the same almost-but-not-quite-smooth feeling, particularly on downstrokes. With that said, these really feel quite nice - the combination of relative quiet with tactile springiness makes for a smooth typing experience.

Lessons learned

  • Tried silicone pads as alternative to vinyl electrical tape or bandaids - and like them! Peel-and-stick beats cutting pieces of tape, and I think the feel is a bit more consistent.
  • Still a bit too much lube on one stab stem’s sides, ended up having to remove some excess lube with QTips - probably time to try the @TaehaTypes approach with teflon lube for plastic-on-plastic contact.
  • 67g Zilents feel really nice, but I get why some say these switches are loud. I’ll be diving into switch lubing in the next build.

Specifications

case: rosewood 60%
case mods: N/A
PCB: DZ60 R2
plate: aluminum DZ60 Plate-B (2.25u left shift)
LEDs: blue f1.8mm per-key
switches: R11 67g Zilents
switch lubing: N/A
layout: ANSI
keycaps:
- DSA Otaku "Hiragana" alphas
- SP DSA sublimated 60% icon mods in green (VAZ)
- DSA Landscape "Koi Pond" set, 8x1u, 1x1.25u
stabilizers: GMK screw-in PCB mount
stabilizer mods: clipped, lubed with Permatex Dielectric Grease, "bandaid" mod with adhesive silicone pad
HxWxD (without caps): 1.25"x12"x4.5"
HxWxD: 1.5"x12"x4.5"
assembled weight: 1.53 lbs
1 Like

Build #9: “Mountain View”

Before we get into this build, a quick reminder - these build logs are presented in the order that builds are completed. For this little mini-series of builds, progress was 99% complete, but delayed for a couple months, while I waited for various keycaps to arrive. That convention has some implications for the narrative; namely, that it’s possible that builds I’m writing about now (like this one) document observations which earlier builds appear to exploit (like Build #6, the Phantom TKL build). Specifically, if you’ve already read #6, then you know how this build log is going to end, when it comes to the topic of switch lubing.

Let’s lube

But if you don’t know how this build log is going to end, then let’s get into it. With this build, my primary goal was to get into switch lubing, and determine for myself whether it was worth it. There were a number of resources online for lubing stations, lubing technique, and lube choices, and while there were myriad ways to go about switch lubing, there was one common theme - get comfortable, because switch lubing is time consuming. And it’s tedious. Awesome!

Having never done this before, I tried to become informed, and after reading a couple of useful guides and surfing around, I came away with the following consistent themes:

  • When lubing tactile switches (as I was going to be doing here), don’t lube the side of the slider that has the arms with the bumps, unless you want to lose all of that tactility.
  • If not a full-fledged acrylic or 3D printed switch lubing station, then at least organize the lubing process to allow for assembly-line style lubing.
  • Whatever you do for your assembly-line lubing setup, don’t toss all the springs together - they will become tangled, and you will waste too much time gently untangling them.
  • Lube lightly at first - you can always add lube, but you can’t take it away.

As for choice of lube, I opted for Tribosys 3204. There seem to be a proliferation of lube options, but without having direct experience with any of them, 3204 seemed well-regarded and a reasonable choice for tactile switches.

This first time out, lubing all of the switches took me around five hours. That’s a long time, but I wanted to take my time; I was worried about overlubing the switches, and I was worried about accidentally applying lube to the tactile arms. Also, these are small surfaces to lube, and for this build, I didn’t have the help of any magnification. And, there are lots of those small surfaces - the two slider rails on the bottom housing, the base of the stem and the outside of the stem on the bottom housing, both ends of the spring (inside and out),
the three non-tactile sides of the slider, including the little notched bumps on two of those sides, and the slider peg that sits on the spring. By the end of the lubing process, I was feeling the eye strain.

Also, the MX switch top removal tool is kind of a hassle to use. I frequently found that I could get one side of the switch open easily enough with the tool, but then trying to open the opposite side would often cause the first side to snap back into place. Annoying. I finally got into a rhythm where this didn’t happen very often, but I didn’t find it pleasant to use this tool.

Pro tip: if you’re old and your eyes are getting worse (and perhaps even if they’re not), do yourself a favor and
get some kind of magnification setup. I got a magnifying lamp after this project, and it has really made a substantial difference in reducing eye strain, for not only switch lubing, but also switch and LED soldering. Your eyes will thank you! I went nuts and got a wide-angle Luxo with an astonishingly heavy base, but really, even a basic free-standing magnifying lamp would work.

First observation, after lubing the very first switch: wow, that pinging noise I was hearing was spring noise - and it’s gone. Completely.

Second observation, after playing with a single lubed and reassembled switch: oh, that’s smooth. Buttery smooth. And no more scratchy sensation on the downstroke.

At this point, I was pretty excited to get these into a board and try them out, but before that, I needed to mod my stabs. I tried Teflon lube initially for this build, but it wasn’t working for me - the lube tended to “powder off” from the application points, and even when it stayed in place, it wasn’t as smooth as the Permatex dielectric grease. Abandoning that, I switched over to SuperLube to give it a try, and found that while SuperLube isn’t dramatically different from Permatex in consistency, it seemed just a tiny bit less viscous. Because of that, I felt I had better control in the application of the lube to the stabs.

Onward. With stabs mounted and switches and LEDs soldered, it was time to put the caps on. As with the previous two builds, I had already pre-selected a color for the icon mods.

And as with the previous two builds, when the decorative caps arrived, it became clear that the initial icon mod color choice wasn’t the right one to pair with those caps. In this case, a saturated blue worked well with the mountain graphics on the decorative caps.

I like the 67g Zealios on good old Build #1, but these lubed 65g Zilents are nice and certainly competitive as potential daily drivers for me. Super smooth and responsive, good tactility, and quite quiet; lubed Zilents would be a great choice for your shared office, if you’d prefer not to annoy your colleagues with your clacks. My only issue has nothing to do with the lubing, but the spring weight; I still find the 65g versions to be just a bit too light under the fingers. Based on this experience, I’m quite excited for the next and final build in the geek arts-and-crafts series - will lubed 67g Zilents provide the magic I seek?

Lessons learned

  • I was really hoping I wouldn’t get sucked into the world of switch lubing, but if this first experience is indicative, then there’s no getting around it - the difference between this build and the “Blossom Pavilion” build is non-negligible. Clear improvement in feel and sound. “Buttery” feel seems to be the right descriptor.
  • While I got by with a few small Akro-Mils bins to setup an assembly line, I suspect a switch mod station would be helpful to get a much faster lubing assembly line going (see Build #6 for the experience with an acrylic switch station!)
  • A single switch opening tool would be preferable to the MX top opening tool, at least without a switch mod station - I found that often, the side that I had just popped open would lock back into place when I popped the opposite side.
  • So far, I think I like SuperLube best for stabs - it seems just a bit thinner than the Permatex, and that’s making a difference for me during lube application.

Specifications

case: walnut 60%
case mods: N/A
PCB: DZ60 R2
plate: aluminum DZ60 Plate-B (2.25u left shift)
LEDs: white f1.8mm per-key
switches: R11 65g Zilents
switch lubing: Tribosys 3204
layout: ANSI
keycaps:
- DSA Otaku "Katakana" alphas
- SP DSA sublimated 60% icon mods in blue (BCT)
- DSA Landscape "Mountain View" set, 8x1u, 1x1.25u
stabilizers: GMK screw-in PCB mount
stabilizer mods: clipped, lubed with SuperLube, "bandaid" mod with adhesive silicone pads
HxWxD (without caps): 1.25"x12"x4.5"
HxWxD: 1.5"x12"x4.5"
assembled weight: 1.38 lbs

Build #10: “Sunset Country”

The previous three builds have been, well, building towards this one. Prior to starting this geek arts-and-crafts series, I’ve been a fan of the 67g Zealios, and after experiencing the benefits of switch lubing firsthand in the previous build, I had high hopes for lubed 67g Zilents. Same tactility, silent buttery feel? What a wonderful world that would be.

Here’s the problem with the DZ60. If you’re installing backlighting LEDs and you use screw-mount stabs, you will find that one of the screws will short out the LED on the enter key, next to the R60 resistor. As this was the first time I’ve encountered this issue, I didn’t have any nylon washers on hand. The solution I used is a little janky, but it works: use one or two pieces of electrical tape as an insulating layer between the screw and the trace.

Other than that, this was one of the most trouble-free builds I’ve had. Clipped, SuperLubed, and silicone-padded stabs? Check. 3204-lubed switches? Check. Soldered switches and LEDs? Check. Case assembly? Check. Properly color-matched icon mods from the get-go? For the first and only time in this
series…check! Let’s call that one lucky.

And, as expected, 3204-lubed 67g Zilents deliver a wonderful typing experience. Very smooth, just the right amount of tactility, and quiet. For me, definitely an endgame contender, and eerily reminiscent of what I remember all these years later as my holy grail typing experience, which I’m 90% sure was this IBM RT board from the late 80s. Which reminds me - I really need to make an appointment with a Topre board and some BKE Redux Ultra Lights.

I really wanted lubing to be one of those things that only the crazy people did. Guess what? I’m now one of those crazy people.

Lessons learned

  • Nylon washers would be handy to have around.
  • Buy some extra switches in the event you discover your potential endgame switch mere days before the entire line is discontinued for V2! Sigh. These things happen. Looking forward to the V2 Zilents…

Specifications

case: rosewood 60%
case mods: N/A
PCB: DZ60 R2
plate: aluminum DZ60 Plate-B (2.25u left shift)
LEDs: orange f1.8mm per-key
switches: R11 67g Zilents
switch lubing: Tribosys 3204
layout: ANSI
keycaps:
- DSA Otaku "Hiragana" alphas
- SP DSA sublimated 60% icon mods in orange (OAZ)
- DSA Landscape "Sunset Country" set, 8x1u, 1x1.25u
stabilizers: GMK screw-in PCB mount
stabilizer mods: clipped, lubed with SuperLube, "bandaid" mod with adhesive silicone pad
HxWxD (without caps): 1.25"x12"x4.5"
HxWxD: 1.5"x12"x4.5"
assembled weight: 1.67 lbs
1 Like

Geek arts-and-crafts (epilogue, builds #7-10)

It started as an arts-and-crafts build series, and it’ll end that way, but I did manage to learn something. Lubing switches is time-consuming, and it can be tedious, but even after just two tries, it’s pretty clear to me that it’s worth doing. Spring ping is eliminated, and feel is noticeably improved. If you’ve been reading along, and you’re on the fence, I’d recommend giving lubing a try with your favorite switches.

Family album

I’m not a photographer, and so far I’ve resisted the urge to pick up yet another expensive and limitless hobby. But that doesn’t mean we can’t have a little fun.

7 Likes

I absolutely love your build logs. I don’t check this site much, but this thread is an instant click every time I see there are new posts.

1 Like

Wow. Thank you! I hope you continue to enjoy the build logs ahead…

1 Like

Build #11: KBD19x

So far, my build adventure has taken me through form factors ranging from an ortholinear to a TKL, and while I’ve been playing a lot with 60s, and enjoying them, I continue to think of TKL as my endgame form factor. Up until recently, I’ve also been thinking of TKL as the last stop before a full-size board. I mean, what else could you really do to grab some desk space back from that full-size board, other than lopping off the numpad?

Cue a suitably reverberant voice of omnipotence: you have much to learn, my son.

Yes, back in build #6, I had a near-miss with “TKL+5”, the idea of inserting the “missing” five 1u keys into the space above the arrow cluster. But even then, somehow the idea of moving the numpad to the left and throwing the intervening keys away, rather than throwing the numpad away, just hadn’t occurred to me. With the popularity of 1800s on the rise, though, it was only a matter of time until I saw one and the light bulb went off. And, there is something kind of interesting about jamming an arrow cluster back into the space between the numpad and the alpha cluster - it seemed ugly at first, but it’s growing on me.

Finally, whether or not I liked the 1800 experience, I’ve been finding that doing builds with different form factors is a great way to challenge my build skills, as well as my firmware skills. So I was excited to try something in the 1800 space, and after poking around to look at build alternatives, I eventually settled on the KBD19x kit. It’s a little weird in that it’s not quite a true 1800 (it’s missing the four-key delete row that you’d see on a G80-1800), but it has an extra key right after the function keys, where an LED indicator trio might normally be. Still looks like a good time.

The only downside here that I could see was the lack of support in the GitHub QMK repo. After the initial QMK experience in build #6, adding layout support for the Phantom “TKL+5” to the repo, and looking at all of the amazing functionality @drashna has built in his userspace configuration, I became very interested in building out a shared set of key mappings and macros for all of my boards. While the KBD19x is nominally supported by QMK, that’s through a separate web configuration tool, not via the standard repo, which for me was a problem. Having invested the time to standardize my mappings across the rest of my boards, I didn’t want to have to deal with a special snowflake - I wanted to build the firmware for all of my boards in as standardized a way as I possibly could. After spending some quality time with the QMK documentation, I made a decision: if KBD19x support isn’t in the repo by the time I need it, I’ll add it. Hopefully that wasn’t a crazy idea?

And, let’s be honest. There is one more reason to like these somewhat larger form factors. When you drop serious coin for a quality keycap set, it’s kind of a shame when a substantial fraction of the set goes unused on a smaller board. Would that concern ever really stop me from going with a smaller board? No, it wouldn’t, but I’d be lying if I said that I didn’t think “nice, I’ll get to see more of that keyset on this build.”

Switch treatment

After the switch lubing experiences during the “geek arts-and-crafts” series, a little internal dialogue takes place every time I need to prepare switches for a build.

Me: Ugh, I have to lube all these switches. There goes the better part of a day. Do I really have to do this?
Me: You suck. Have you completely forgotten how nice it is to type on lubed switches? Man up.

Properly self-chastened, I got comfy, fired up a long playlist, and got to work. I found it best to do these in batches of 15, the width of my acrylic switch lubing station. This made it straightforward to lube assembly-line style, and it also gave me convenient breakpoints for standing up and stretching my legs. As it happened, real life intruded, so the task ended up getting split over a couple of days. But, eventually, I had a little plastic bin full of 100 lightly lubed Zealios.

Stabilizer treatment

The received wisdom is clear. GMK screw-in PCB-mount stabs, or death. There can be only one. But on inspection, the stabs that came with the KBD19x kit honestly didn’t appear or feel appreciably different from the GMK screw-ins. Not wobbly, or at least no more so than any other stabs, including GMK, that I’ve tried.
While I had spare GMK sets I could have used, after some momentary waffling I resolved to go ahead and use the OEM ones.

In a previous build log, I was excited to try the full @Walkerstop upstroke silencing mods on PCB mount stabs, but his comments in response to that log gave me pause. Apparently others had reported that after doing this mod, keycap removal caused the stabs to pop right out. That mod has two departures from the “standard” stabilizer treatment: clipping of all four legs on the sliders, and O-ring insertion. It seemed to me that eliminating all four legs would have to be the reason for the sliders to pop out, so I opted for a partial upstroke silencing treatment: only clip the usual two legs of the slider, but do the O-ring insertion. As it happens, the two legs we would normally clip were already gone from the sliders of these OEM stabs.

So, the job just boiled down to the usual SuperLube treatment, and some careful tweezer work to get the O-rings into the stabilizer housing and threaded onto the stab wires. Here’s what the O-ring placement looks like when the stabilizer is put back together, from a couple of different angles:


After a quick bandaid-style mod with adhesive silicone pads, the stabs were ready to be mounted. The KBD19x kit came with plastic washers for the screws, which was a good thing since the PCB looked very much as though it was designed and manufactured by the same group as the DZ60, and if you read previous build logs, you’ll remember that I have had issues with stab screws shorting out traces on that board. So, having washers at the ready to guard against those problems is nice, although it’s worth noting that some of the installed washers overlap the edge of the PCB, and one even bends up over a diode that’s within a washer’s radius. Not so great.

Sorbothane, part 1

You will have seen by now that I like Sorbothane for sound dampening applications. You’ll also have seen that I’m still on a quest to properly dial in its usage for keyboards. One of the problems I’ve been wrestling is getting strips of the right thickness to sandwich between the PCB and the plate. Too little thickness, and the Sorbo can’t touch both the plate and PCB, reducing its effectiveness for sound dampening. Too thick, and undesirable excess pressure will be applied to the plate and/or PCB when the sandwich is assembled.

In another thread, I estimated 4mm as a reasonable thickness for Sorbothane when sandwiched between a standard 1.5mm plate and the PCB. That thickness isn’t currently readily available, but we can approximate it, to some extent, by cutting 4mm strips from thick pads of Sorbothane. I used a metal ruler to first mark off a bunch of dots 4mm away from the edge of the Sorbothane pad, and then I used the ruler to connect the dots and trace a cutting line with a ball-point pen (pro tip: leave the protective plastic on the Sorbothane pads while you do all of this, so you don’t have to worry about sticking to the Sorbothane). Then, just cut down the line as best you can. I used 0.25" (6.35mm) thick pads of Sorbothane as my starting point, and once I had enough 4mm wide strips, I just laid them on the plate on their sides.

How did I know if this was doing anything useful? Before-and-after tap testing, which is pretty much exactly what it sounds like. Before layering in the Sorbo, put the plate and PCB together with a few switches, and tap the plate with your finger and/or fingernail, all around the plate, while holding the whole assembly close to your ear. Listen. Then, after putting Sorbo on the plate where you want it to go, repeat the process. If your experience is like mine, you’ll hear a high-frequency ringing with your fingernail on the plate before the Sorbothane application, and that will go away almost completely even with a few strips of Sorbothane in place, leaving a more bass-heavy thunk. Whether this is an improvement is a matter of taste, but for me, it’s very much an improvement.

It’s also nice that only a few pieces were needed to eliminate the lion’s share of the high-frequency plate noises. Sorbothane isn’t the cheapest option out there, so it’s nice to be able to stretch the supply through more builds.

Porting to QMK when it’s kind of ported already

With the PCB/Sorbothane/plate sandwich lined up, switches were mounted and soldered, and the keyboard was flashed with an initial hex file built with qmkeyboard.cn. A few minutes with tweezers and a keyboard tester web app, and the initial build is functional.

I said I was going to do it, and it’s time: let’s build out support for KBD19x in the QMK repo. On the plus side, I’m intimately familiar with C/C++ in a variety of application domains, and the QMK documentation for doing a keyboard port looks pretty complete and easy to follow. On the down side, none of those application domains included embedded programming, and none of my version control experience included git. So, there’s still going to be a learning curve here. Time to get stuck in.

First of all, for QMK to support a PCB, it needs to support the controller. The controller is the chip on the PCB that does the matrix scan (more on that in a moment). While I’m willing to attempt a port for a controller that QMK already knows about, I’m pretty sure that writing core support for a new controller is currently beyond my pay grade, so I need to confirm that the controller is one that QMK already knows about. I’m 99.9999% sure that must be the case, since the qmkeyboard.cn site claims QMK support, but I’m me, so I check the chip anyway. Atmega32U4, yes, we’re good.

Next, the wiring matrix and the matrix scan. As I understand it, the controller on a PCB determines key activity by repeatedly lighting up one row of the matrix with some current, and then seeing which columns also show current coming through when that row is turned on. Those row-column pairs correspond to switches that have been depressed to allow current to flow through. The controller keeps track of those row-column pairs, turns off the row, lights up the next row, and repeats the process. When this process has been executed for every row, that’s called a matrix scan, and the controller does that scan many times per second to track key presses and key releases. For the controller to “know” which row-column corresponds to each switch, it needs to know which key corresponds to each row-column coordinate pair in the wiring matrix. It stands to reason that the firmware we build must include a description of the wiring matrix, in order to properly translate row-column pairs into the correct keys. So how do we figure out what the wiring matrix is?

If I was really porting a keyboard from scratch, with just a PCB in my hand, I’d have to work out the wiring matrix for the keys by visually inspecting where the traces connect to the controller. Even under a magnifier, this would be painful - the traces are the same color as the PCB (for this PCB, anyway), they’re very narrow, they’re often in close proximity to one another, and they can pass through to the other side of the PCB to “jump” over other traces without forming an electrical connection.

Fortunately, I was able to bypass the bulk of this pain. The qmkeyboard.cn site actually provides a “Wiring” tab which not only shows the wiring matrix for the boards it supports, but also shows the row and column for a key when the key is clicked. So, I started by manually recording the row/column pair for each key in the web interface. In the QMK code, this information is recorded in a LAYOUT macro for the keyboard, which provides both the wiring matrix for firmware compilation, and provides a nicer interface for subsequent QMK developers. With a LAYOUT macro, you can stare at code that is organized like the actual keyboard layout, rather than the rat’s nest of a wiring matrix you’ve been staring at. It took a little time to build out this macro and double-check the mapping from keys to row-column pairs, but it’s more careful bookkeeping than anything else.

Similarly, the website provided pin assignments for backlighting and RGB control, as well as available memory limitations for the controller - all information that QMK needs to compile a complete firmware for the board in the form of a .hex file. Again, this isn’t hard per se, but it requires due diligence to make sure the correct information is being coded. Again, I need to give a shout-out to the QMK docs. Descriptions of the required information, and how to supply it to the code, were quite clear, at least to this C developer. Love that.

After fixing a couple of typos, and checking all my data entry again, the code compiled cleanly, and there’s a brand-new .hex file for the KBD19x. Oh boy. The reported memory sizes are good, so this should easily fit on the Atmega, and there are no errors, and I’ve triple-checked all of the information, so there’s no reason this shouldn’t work. Still, oh dear. I just sat for a few minutes thinking it over before finally committing and flashing the firmware to my PCB with QMK Toolbox. Looks like the PCB is still alive? Time for the keyboard tester and tweezers again…

If plugging in Build #1 and having it actually work was the single best experience I’ve had with this hobby to date, then flashing the firmware for this kind-of-reverse-engineered port to QMK and finding that it worked, first time, certainly qualifies as at least a very strong second. Damn, that was satisfying. I’m going to go have a celebratory glass of wine. Be back in a moment.

Full disclosure: while the firmware really did work, I discovered later that the .json file I provided for key position and sizing wasn’t showing up correctly in QMK’s own web configurator project. But before I realized I had a problem, let alone worked out how to diagnose and resolve it, @noroadsleft had already found my problem (a stray character in the file) and fixed it. Cheers, buddy.

From here, it was just a matter of process - a pull request, code review and changes, and there we are - it’s in the repo. Cool beans.

LEDs

The underglow RGB LEDs are already soldered into the PCB, but it’s up to me to put in LEDs not only for key backlighting, but also for the caps lock, scroll lock, and num lock indicators. The way this is done on the KBD19x is really quite sexy; the case top has three machined “tunnels” in the cross strut in which the LEDs can shine upward, and instead of actual holes at the top, the case is micro-perforated, so light can shine through when the LEDs are on, but when the lights are off, these three spots are featureless anodized aluminum, just like the rest of the case. Nice. I used orange, blue, and white LEDs for these, as that’s what I had on hand.


Now. If you’re doing key backlighting on the KBD19x, and in particular, on both 2u keys on the numpad, learn from my mistake. Normally, I solder in all switches first, and then thread the LEDs through the switches before soldering. But with the 2u numpad keys on the kbd19x, this will not work, because the LED pads for these two keys are not aligned with the holes in the switch sitting above them. Yes, really. Try as you may, you are not going to be able to thread the LED pins through the soldered-in switch and then somehow get them to bend enough to make the necessary turn to reach the pad holes on the PCB for these two keys. Or if you can, I demand video. Because I didn’t detect this issue until it was too late, I ended up having to desolder and remove these two switches, threading the LED pins through the switch holes while the switches were out, and then mounting the switch and threading the switch and LED pins in place and soldering. A nightmare fix?Well, no, but an annoying hassle? Yes.

Sorbothane, part 2

We’ve done the PCB/plate sandwich. Now it’s time to dampen the case. The PCB has the underglow RGB LEDs and an acrylic spacer to show off that glow, so I had to measure out pieces of Sorbothane that would lie inside the imaginary perimeter of the underglow LEDs, as not to obscure all those Rs and Gs and Bs. In addition, I wanted to leave a cutout for the controller, to avoid putting any undue pressure on the PCB at that point. Look at me, all thinking ahead and stuff. Also, taking some measurements to estimate the gap between the PCB underside and the interior bottom of the case, I found that a 3/16" (0.188") layer of Sorbothane, which I already had in hand, would be about right for contact with the PCB and the case, so with a few minutes of measuring and cutting, the case dampening was in place.

I carefully peeled the protective adhesive layer off of both sides of the acrylic spacer (take your time, the spacer that comes with the KBD19x kit is flexible and fragile). In a nice touch, the spacer has cutouts that align with pegs on the case to assist in placement. From there, it’s just a matter of lining up the other half of the case and screwing everything together.

Sorbothane, part 2b

I threw on a set of caps and tried the board out, and discovered immediately that I had a problem. While most keys felt quite nice and sounded wonderful (switch lube + GMK + Sorbothane FTW), the enter and backspace keys were very sticky, and required undue force for downstrokes. I tried to convince myself this would work itself out, but eventually the conscientious part of me won out over the lazy part of me, and the case was opened again. Note to others - if you have direct Sorbothane contact between the PCB and case, and you find you have to separate them, take your time prying them apart. Sorbothane is quite sticky, and we don’t want to fracture the PCB.

As soon as I separated the PCB and the case, I had the presence of mind to try the enter and backspace keys again, and wait, what? They work now, just fine. Inspecting more closely, I realized what the issue was - the Sorbothane was pressing the clip mount of the stabilizer housing on one side of each of the two affected keys, hard enough to force the stabilizer housings slightly off of vertical, creating excessive friction on the stabilizer sliders. Solution? Cut away more Sorbothane to avoid pushing the stabilizer housings out of alignment.

While I was doing this cutting to relieve pressure on the stabilizer housing, I noticed that one of my Sorbothane squares was actually applying pressure to the reset button on the PCB. I wonder how long it would have been until the board started dropping into bootloader mode for no discernible reason? That’s right, look at me, all thinking ahead and stuff. Sigh. Let’s cut some more Sorbothane, shall we. That’s good.
Probably best not to let me out of the home without adult supervision.

As an aside, with all this aluminum and Sorbothane, this keyboard is heavy. Quite heavy. I wouldn’t want to drop this thing on my foot.

Speaking of weight…

So it’s all put together, and I’m typing, and it’s very nice - the sounds are really pleasing. This is my first time with real GMK caps, and it really is a step up from the cheaper, thinner Cherry profile caps. These yield a lovely soft clack, and with the switch lubing and Sorbothane, that’s all we hear. Nice.

But we haven’t talked about switches yet. I’m in the middle of an experiment - the switches on this board are R11 78g Zealios. This was somewhat unintentional, in that I thought I was lubing 67g Zealios before I noticed, 20 or so switches into the lubing assembly line, that the switches were a bit too stiff, investigated, and realized I was lubing 78s.

I’ve thought that my tastes run to the middle-of-the-road for spring weightings, and I’ve generally felt most comfortable on the 65g and 67g Zealios. However, I wanted to see what I thought of switches with comfortable tactility, but heavier weighting (not necessarily on this build, but what the hell, it was going to happen anyway at some point, so let’s just run with it). On a switch tester, I wasn’t entirely sold with the 78s, but then again, that was a switch tester. I think the switch tester is great for ruling out switches you know you’re not going to like, but for switches you’re not sure about, I think the only real way to be sure is to try out a board with them.

And, initially, I thought that even with the lovely sound and lubed smoothness, these springs were really just a bit too heavy. Normally, I’d just switch back to another board immediately for daily driving at that point, and I’m not really sure why I didn’t do that this time. Maybe I didn’t want to give up the melody of the clacks? In any case, after a week or so, the feel started to grow on me. I found I was bottoming out less often, and riding the tactile bump more often. Even more interesting, after going back to build #1 (TADA68 with 67g Zealios), I ended up switching right back to this board. Hmmmm. Getting all these variables dialed in turns out to be a more subtle optimization than I imagined. That voice. It’s back again…

…you have much to learn, my son…

In the meantime, these keys and that sound? It’s all good. While it took me 10 more builds, and while it may not be endgame, I have a new daily driver. Progress!

Lessons learned

  • 78g isn’t as firm as I might have guessed from just playing with a switch tester. I’m enjoying the weight more than I thought I would. Perhaps it’s a good idea to just live with a set of switches for a while…and perhaps I need to get a hotswap board sometime soon for just this purpose.
  • I’ve spent enough time with this board and these switches that the difference in weight is less noticeable in an absolute sense than it was before. Not sure if that’s because I’m getting used to the weight, or perhaps the springs are being broken in a bit? Something else to evaluate.
  • Be careful when placing Sorbothane. Under sufficient compression, it can push the clip-end of a stabilizer housing and deflect the stabilizer off-vertical, leading to compromised keystroke performance. It’s best to just create cutouts where this might be an issue.
  • With that said, the combination of Sorbo dampening, switch lubing, and GMK caps yields a delightful sound, the best of any board I’ve built to date. It’s the sound of hard raindrops on the roof.
  • A sparse Sorbothane treatment between the PCB and plate can be remarkably effective for dampening - and cost effective, if you plan to do multiple builds.
  • If you’re doing LED backlighting, check the LED pad positioning to be sure the LED can cleanly pass through the switch and through the pads. For any keys for which this isn’t the case, it will be far easier to thread the LED pins through the switch first, before seating the switch on the PCB.

And, a special lesson on color

As you’ll see in a moment, I’m getting to the point where I need to think about doing proper color calibration for my build logs. This build had a lot going on color-wise - blue anodized aluminum case, and GMK Solarized Dark for keycaps. Having seen this build in a number of different lighting situations, I understand both why there has been so much drama around the set in terms of color accuracy, and why opinions on its looks are all over the place. Depending on what time of day it is and whether I have lights on in my office, my opinion changes too. This really crystallized for me when I got around to taking and comparing photos of the build. Same board, same caps, same cell phone camera - just different background and lighting. What a difference!

Indoors, under LED lighting on a desk:

Outdoors, under direct sunlight on asphalt:

Specifications

case: KBD19x anodized aluminum (blue)
case dampening: 0.188" 30 Duro Sorbothane, trimmed to fit inside underglow LEDs and away from stabilizer clips and ICs
PCB: KBD19x
plate: KBD19x stainless steel
LEDs: blue f1.8mm per-key
switches: R11 78g Zealios
switch lubing: Tribosys 3204
layout: ANSI
keycaps: GMK Solarized Dark
stabilizer: OEM screw-in PCB mount, pre-clipped
stabilizer mods: lubed housing, sliders, & wire ends with SuperLube, bandaid-style mod with silicone pads,
  O-ring upstroke silencing
plate/PCB dampening: ~4mm wide strips of 0.25" 50 Duro Sorbothane, laid sideways on widest struts of plate
HxWxD (without feet or caps): 1.25"x15.06"x5.75"
HxWxD (without caps): 1.38"x15.06"x5.75"
HxWxD: 1.88"x15.06"x5.75"
assembled weight: 5.30 lbs
4 Likes

Holy smokes, this stuff is getting better and better :slight_smile:
Nice job and very detailed build man.

2 Likes