Category: Mechanical Keyboards

  • Keeb build log: BM40hsrgb

    Keeb build log: BM40hsrgb

    I am a big fan of colourful lights… whether they are neon, fairy, or ambi. I am also a big fan of custom mechanical keyboards. Unfortunately, I’ve never been able to bring those two interests together, as the boards that I’ve built were too fiddly or didn’t quite bring enough LEDs to the party. However, last month I came across an amazing keyboard build from /u/_GEIST_ on Reddit, which inspired me to have another go.

    Digging into the specs of that build, I discovered that the relatively cheap BM40 PCB not only supported RGB underglow, but had the holy grail of individual LEDs per key… and that in the latest versions of the QMK keyboard software, you could get some really cool animations that would be triggered on each keypress (or release).

    An unassuming beastie.

    The parts

    One of the big challenges of building custom mechanical keyboards is finding suitable parts for the project you want to build. Often, getting affordable cases can be tricky, and when you do find them, they are often of poor quality. There’s also the additional challenge of putting together the PCB with the required components. I have reasonable soldering skills, but having to connect up all of the resistors, diodes, and switches is an exercise in patience which I do not have… especially when you start to add in all of the LEDs. There’s also always the danger that you mess something up, and ruin the PCB, which is quite possible if you aren’t overly familiar with building keyboards. This is something I had managed to do fairly recently, and so I didn’t fancy experiencing another failure so soon after.

    PCB + Case

    Enter the BM40 board. Not only did this have all of the LEDs, and came with the components pre-soldered, it was also hot-swappable, which means that you can just click the switches into place, without having to solder them in. Brilliant. I picked up this, along with a case which had a diffused bottom panel to let the RGB lights shine through from KPRepublic on Aliexpress. The PCB connects via USB C, which is a nice touch.

    Switches + Caps

    When it comes to switches, I prefer really clicky keys. The clickier the better. However, that doesn’t always win you many popularity contests, and since my main keyboard has Cherry Blues in it, I decided to go for a more tacticle switch. I had read good things about the Holy Panda tactile switches, and found the Everglide Oreos, which claimed to be similar. If you aren’t familiar with keyboard nomenclature, this means that they wouldn’t be obviously ‘clicky’ to press, but would have some kind of a bump to them on the way down (as opposed to being ‘linear’, and therefore smooth). The other reason I went with these is because they had a smokey black casing, which would let the LEDs shine through.

    For the keycaps, I went with my trusty flat DSA profile (rather than other profiles which are curved, or which have a shape change depending on the row and position of the key). I also selected the same kind of smokey black translucent colour to match the switches, and let the LEDs do their thing. I often use blank DSA caps as they are cheaper, and it means I can move them around my boards without having to worry about what is printed on them.

    Annoyingly, I didn’t realise that the board was not made up of individual 1u keys like the Planck or Preonic… in the sense that it has a 2u space bar key. This meant that my 1u DSA caps wouldn’t fit. I found a temporary solid white 2u cap that I’ve put in place for now, but it’s not the correct profile, so I’ll need to revisit that. Finding a 2u translucent keycap in the DSA profile is proving easier said than done unfortunately.

    Links + Cost

    1. BM40 PCB (Kit 1 with 2u stabilizers for the spacebar) – $37.52.
    2. Anodized aluminium JJ40 case (black version 2.0) – $70.90.
    3. Everglide Oreo tactile switches x70 – $45.60.
    4. Translucent black DSA keycaps x60 – £12.84.

    The build

    Putting the kit together was pretty easy. All you have to do is unscrew the bottom plate, hold the PCB in place and then connect the switches through the holes in the top of the case. However, there were a couple of stumbling blocks:

    1. There was no screws included to attach the PCB to the case, so the keys hold it in place. This makes getting it into position and not damaging the first few keys you attach a bit tricky.
    2. You need to install the keyboard spacer onto the PCB before you start attaching the keys. This means assembling it, which isn’t all that clear if you haven’t put one together before. After some frantic YouTubing I managed to figure it out, and had to take all the switches off again.

    Flashing the software

    The BM40 comes with its own software, but I immediately ditched it in favour of the de-facto standard QMK. There is no hardware reset button on the PCB to allow you to put it into DFU mode to flash the firmware, but there are two exposed points marked ‘RES’ which you can bridge with tweezers. This isn’t especially accessible given that the case is sealed up afterwards, so I made sure to include a soft RESET key on one of my custom layers.

    I did run into a bit of an issue initially, where I couldn’t get some of the QMK functions to work, such as the all-important custom LED animations. With help from the aforementioned _GEIST_, who kindly sent me his config files, I realised that I had flashed the software with the QMK version provided by the keyboard manufacturer, which was out of date. Re-flashing with the bm40hsrgb settings provided with the latest QMK build (which I then customised), got everything to work as it should.

    The Keymap

    I already have a keymap set up which I have refined over time for my Planck – which is similar to the BM40, in that it has about the same number of keys, so I stuck with an evolution of that, which makes it easier to switch between the boards. I touch type, and don’t really use the bumps on the keys to indicate finger position, so having blank keycaps isn’t really an issue for me unless there are special characters or macros which I need to remember.

    One of the cool things about having under-key LEDs is that theoretically I could code up a layout which maps certain colours to certain keys that I want to stand out. This isn’t something I’ve bothered looking into yet as I don’t feel like I need it, but it does make me think that I could build one of these boards as a dedicated MIDI controller, and change the keys depending on the notes of the scale. That’s probably a project for another day… but something I’m considering. Watch this space.

    Anyway, here is how my keys are laid out at the time of writing. There are four layers. The first layer is the base layer. The other layers are accessed via a combination of keypresses, just like you would use the shift key to access capital letters on a ‘regular’ keyboard.

    As well as the usual keys and media shortcuts, I have a bunch of custom shortcuts set up. For example, Alfred’s search has its own dedicated key on the base layer since I use it so often, as do my clipboard and bookmark managers. I also have keys specifically for copying, pasting, cutting; keys to copy the active URL in Chrome, and to strip down a long URL to its root (managed via Keyboard Maestro); and keys to perform tasks which become a bit trickier when you have a smaller board… like taking a screenshot.

    I’ve uploaded my keymap to GitHub for those of you who want to see the actual code.

    https://github.com/clickysteve/qmk_keyboard_layouts/blob/master/bm40hsrgb/keymap.c

    I’ve managed to configure things to change the colour of the keys temporarily when I activate layer 1 or 2, which is pretty useful. I can’t quite get it to work for the ‘adjust’ layer though, so if anybody has any tips on how to imrove the code, please let me know. I have a couple of ideas, but my brain is begining to melt looking at it, so I’ve given up for now.

    RGB Animations

    QMK’s built in RGB animations are awesome. Below I’ve uploaded a video running through some of the effects:

    Note that I deliberately didn’t record sound, as there’s far too many people who will over-analyse the sound of the switches, and that’s one can of worms I didn’t want to open.

    The Judgement

    This is my fifth mechanical keyboard, and the third one that I’ve built (successfully) myself. It does feel a bit like cheating to say I built it, since it is hot-swappable and so couldn’t get much easier. However, it’s also probably my favourite. The case has a wonderful heft to it that the aluminium frame I have for my Planck doesn’t, and I love the LEDs. I had considered getting different coloured translucent keycaps, but the all-black colour scheme is so unassuming that it adds to their effect, and they are so bright that the cap colour doesn’t really matter when they are on. I’m really pleased with it overall, and glad _GEIST_ didn’t mind that I shamefully copied their idea. It is a bit of a shame that the underglow isn’t quite as prominent due to the solid black sides of the case, so as a minor point it would be great if there was a slight cutaway round the edges, but that’s just being petty.

    The one thing that I’m not wild about is the choice of switches. While the Oreos are fine, they are very light, and not as tactile as I would like, at least not compared to the Outemu sky switches in my Planck. I end up bottoming out on them to such an extent that I may as well just have clicky keys in there, so I might end up changing them out at some point to find a better option… though they are growing on me. At the end of the day, having the option is the beauty of a hot-swappable board! Whatever happens, I definitely need to find a translucent 2u DSA keycap though, as the current one is driving me nuts. Even though the white looks pretty cool, it feels and sounds different to the rest of the board, and not in a good way.

    Perhaps one other thing I should mention is that the LEDs run fairly hot. I guess that might be expected given how bright they are, but it does make me wonder about what their lifespan will be. On top of that, I will probably be making use of the auto LED off feature built into QMK to avoid any… accidental fires. Better safe than sorry. Of course, I could just run them at something less than maximum brightness, but where would the fun be in that?!

  • Gherkin 40% – (Failed) Keyboard Build Log

    Gherkin 40% – (Failed) Keyboard Build Log

    In the past I’ve posted about some of my DIY mechanical keyboard builds, including the first I attempted, the Commodore 64 homage. Around about the same time as that build, I had been seeing these ludicrously tiny keyboards online which were 40% the size of a standard setup… with just 30 keys total. Naturally, curiosity got the better of me, and I decided to have a bash at building one.

    The specific design I went for is known as the ‘Gherkin’, apparently because originally they were small and green. I wanted to stay close to this idea, and opted for a yellow colour scheme… Yellow PCB, yellow glow, yellow case… the works. There may or may not have been a splash of green in there. I wasn’t quite sure yet.

    The Parts

    I needed the following bits and pieces:

    • PCB
    • Switches
    • Keycaps
    • Diodes and resistors
    • A case
    • LEDs (for under the keys as well as to light up the case)
    • A microcontroller
    • IC Socket

    I couldn’t face soldering in all of the diodes and resistors by hand, so I got a PCB with them already in place from /u/MrMontgomery on Reddit. He also sent over the LEDs, and the microcontroller that I would need.

    For the case, I got a handmade yellow acrylic case from someone called /u/qlavier in Belgium. They make some beautiful things on their website, qlavier.com. I wanted an all acrylic case so the LEDs would really shine.

    The keycaps were standard DSA profiled that I got dirt cheap on eBay from Hong Kong. Sticking with the Gherkin theme, I decided to do an alternating green and yellow pattern.

    The Switches

    The switches, of course, deserve a special mention, due to how important they are when building a custom mechanical keyboard. In the last build I went with Cherry MX Whites (Milky), which are pretty ‘clicky’, but not as loud as most others of that type. For this build, I had in mind that the Gherkin might end up as a travel keyboard due to its size… and I wanted the switches to be quiet, but also have a really good tactile feel to them. On top of that, I wanted them to support under-key LEDs, and to have a clear top to diffuse the light as much as possible. So eh, not too specific.

    In the end I went with Kailh Pro Purple switches, which tick all of the boxes. They have a 50g actuation force, and aren’t quite as tactile as I might usually like, but they still feel pretty good. Plus, for some reason, in my head the purple colour seems to fit with the Gherkin theme. Don’t ask me why.

    The Build

    When I began the build, the guides available online were scant at best, and it was bit more complicated than the others I had taken on before. With advice from the folks at /r/mechanicalkeyboards I managed to figure things out in the end. However, ultimately it all became a nightmare, and I have shelved the project for now. Some specifics…

    LEDs

    First of all, you need to install the LEDs in place. This (perhaps obviously) is because they sit underneath the switches. The problem I immediately ran into was that I couldn’t find a schematic for the Gherkin PCB, and was unsure of what way the LEDs should go. MrMontgomery helped me out, in that the long leg of the LEDs goes into the hole with the round pad… and the shorter leg goes into the hole with the square shaped pad.

    Gherkin LED build log

    Switches

    These were pretty straightforward. Put the switches through the acrylic top panel, through the holes in the PCB, and then solder them in place. At this point I really wished I had paid more attention to getting the LEDs straight, as they didn’t all immediately fit in the hole in the switches casing. I had to carefully bend them a bit, but they worked in the end.

    Gherkin keyboard build log

    Reset Button

    This was another annoying bit. In order to flash the software onto the microcontroller, you have to create a connection between two of its pins to reset it into the required DFU mode. That’s fairly simple in theory… you can just solder two bits of wire to the necessary pins and then touch the ends together. In practice though, it’s a bit more of a pain. The reset function is something I found myself using a lot with my other custom keyboards, while you customise the layouts to something that works for you. This meant that I would have to find a way to easily trip the reset. In the end, I settled on a mini, yellow push button switch that just kinda flopped about. I toyed with the idea of an arcade button, but that would have been ridiculous, and wouldn’t have fitted in the case anywhere – at least not neatly. Of course, nothing runs smoothly… and the reset button didn’t work at all. For a while I had to resort to just manually shorting the pins, which was less than ideal.

    IC Socket

    Because of the design of the Gherkin, you need to install the Microcontroller after the switches have been soldered in. That causes some problems if you have a plate mounted case… or if you have any problems with the soldering that need fixed later. Why? Well, if you’ve soldered in the microcontroller directly to the PCB, you can’t get underneath it to de-solder the switches easily. For that reason, I was advised to use a (low profile) IC socket which the microcontroller just clicks into, so if needs came to it, I could just pop it out.

    Gherkin MCU

    With that in mind, I bought a 24 pin IC socket, trimmed it down to size (12 pins) and installed that. Unfortunately I immediately ran into some issues, as it appears the IC socket had gotten damaged somehow (probably when I trimmed it down) and the Pro Micro controller wouldn’t slot in properly. This turned into a bit of a saga, as it took me a bit of troubleshooting to realise that this was the problem.

    De-soldering the socket was a nightmare for the reasons above, so in the end I clipped it off and soldered the controller directly onto the board, at which point I managed to get everything working, aside from a few keys. After rummaging around online, I found this incredibly helpful image which helped identify which pin was the problem:

    Gherkin troubleshooting

    Unfortunately, by this point my Pro Micro had been so abused by soldering and de-soldering that it couldn’t be trusted. I had to remove it, and try another. In true grand idiot style, I then ended up going through a few different Pro Micros as I soldered the header pins in wrongly… lost the microcontroller in a house move, and various other mishaps.

    To top things off, I tried to remove a few of the switches to clean up the top side of the board a bit, and ended up breaking them. I put a new microcontroller on, and got things mostly working… (after realising I had forgotten to put the switches back on first… eugh).

    Ultimately though, I was defeated. A couple of the switches just weren’t working, even when I shorted the pins on the board directly. The only thing I could figure was that I had damaged the traces on the PCB somehow, and that would mean essentially starting from scratch, soldering in a whole new set of keys… etc.

    I’m pretty disappointed, as the Gherkin was shaping up to look pretty cool. However, it was a learning experience. I now understand what is and isn’t critical when building these boards, and have come to understand a lot more about how they actually work, which has been helpful. At the end of the day, the Gherkin was going to be more of a novelty board than anything especially practical, so I can probably live without it.

    That said… I’m not really good at giving up on things completely, and since I still have the custom case etc, I’ll probably return to this one at a later date. Watch this space.

  • New Keeb – Planck Rev 6

    Behold my newest keyboard, the Planck Rev 6:

    Planck Rev 6

    I have had this project in the works for a while now, but only just got around to finishing it when I realised that all of my other mechanical keyboards had the loud-as-hell clicky style key switches. This was always fine when I worked from home in a tiny cupboard and could disturb nobody, but lately I’ve been sharing an office with my wife who is on video calls pretty constantly, and my delightfully clickety clackety Ergodox keyboard with Cherry MX Blues suddenly weren’t as charming as they once were (Well, they were for me, but probably nobody else.

    Rather than bore you with all the geeky build details, here are the salient points:

    1. What are the colours all about?

    I had originally wanted to do one of these cool blue to pink gradients for the keycaps… but realised that the set I ordered didn’t have enough single squares to cover the full grid required – and I didn’t fancy having to get a full new set just for a few extra keys. The other problem is that while gradients look cool, they also make it a bit of a nightmare to find specific keys that you need at a glance. In the end, I decided to go with something a bit more practical. The yellow keys are modifiers like Escape, Enter, space, etc. The pink and blue rows are the letters, and the green keys are reminders of where specific keys I need for work shortcuts are.

    2. Wait, why are all the keys square?

    Aesthetic, innit.

    This kind of grid layout is known as an ‘ortho-linear’ keyboard. There are a bunch of reasons people like this system… with the theory being that it keeps your fingers in a more natural typing position than the standard setup. To be honest though, I just think they look cool, and wanted to try out something a bit different (though this isn’t my first grid rodeo…)

    3. But there’s only four rows! How does that work?

    Err, yes. There is. In the mechanical keyboard world there is often a bit of an obsession to see how many keys you can strip out and still type just as fast as you would on a full size board. The Planck is the smallest board I have tried so far, with just 48 keys in total. The sharp eyed amongst you will probably have worked out that this means there isn’t enough room for a number row… and there isn’t. So how do you get access to all those keys that are missing?

    The idea is pretty straightforward: Rather than have just one ‘shift’ layer which gives you capital letters and exclamation marks and all that good stuff, you have multiple ones. The blue keys to either side of the yellow space bar(s) on the bottom row let you ‘shift’ into completely different layers which have all the other keys – which you can program however you want.

    For reference, here is my top layer, and then a couple of my additional ‘shifted’ layers.

    Planck Layout

    Planck Layout

    Planck Layout

    So if I want to get to the number row, I press and hold down the blue key to the right of the space bar. Simple.

    I am still figuring out what the perfect layout for me is (ignore that rogue right arrow on the top layer… I’m not sure what is going to end up in that space just yet) – but I already really like this board. It’s neat, and I have space for all of my weird custom modifier shortcut keys I have set up for work. The keys I use most are on the top layer, and anything I use less is just an extra press away. Of course it takes a bit of getting used to, but then all keyboard changes do – and I’ve adapted to the Planck far quicker than I have others in the past.

    4. What kind of switches are in that bad boy?

    Those would be the Outemu Sky 68g switches. They are ultra-tactile without being too loud to use around other folks.

    5. What’s with this obsession with weird keyboards?

    When you spend most of your life using one specific device, it’s good to explore different ways of interacting with it. Plus, the MacBook Pro keyboards are now so shockingly bad, that I will do almost anything to avoid having to use one. If you know, you know.

    6. Nice USB cable.

    Why thanks for asking. It’s a custom made one from CoolCable.co.uk.