Keyboard Builders' Digest
Save 5% at Loobed Switches! Code: KBDNEWS

Issue 75 / Week 17 / 2022

This is a hand-picked selection of last week's content from a keyboard enthusiast's perspective. Posts that may teach you something, make you think and contribute to the common knowledge of the DIY builder community.

View mode: compact | normal | full



Behind the Scenes of Issue 75

Domain renewal, new promo codes and the dangerous ground of sponsorship offers, new supporters and vendors. Newsletter test and performance, status of developments & acquisitions.

Hey y'all,

Lots of topics to discuss so let's jump right in. Skip this intro for newcomers if you are a seasoned reader.

Welcome back for another edition of Keyboard Builders' Digest (this time Issue #75), a weekly roundup of this DIY keyboard focused newsletter and blog from Tamas Dovenyi – that's me. If you are new to this, you can read how this started out and what this is all about nowadays. If you like what you see, you can subscribe to the newsletter (free) and donate some bucks to keep this otherwise free and ad-free project alive.


Anniversary almost every week…

Last time the first donation, this time the domain.

About a year ago, the Digest got this fancy domain name ( – up until then it was a mere subdirectory ( of my other site.

In retrospect, this was a funny story. Namely, I had this domain already in the shopping cart (kept open in a browser tab probably for weeks…) while I contemplated if I need it at all, when out of nowhere Chad PMed me suggesting he'd buy me a proper domain: and he came up with exactly the same idea. :D

To be honest, I still wasn't sure about it and if I wanted all the trouble with the migration (I wanted to change hosting and CDN provider too) but I thought two people coming up with the same idea independently was a good sign.

So I bought and Chad was kind enough to not just cover the first year's fee but also to transfer the first renewal fee in advance. (Thanks again!)

And this week I received the notification that the first year passed. (Domain renewed now.)

Promo codes and the dangerous ground of sponsorship offers

Out of nowhere, multiple well-known manufacturers contacted me for cooperation last week.

I was a little confused first because I usually send out a ton of emails to vendors (especially these days when I'm updating the vendor database and also try to standardize the discount codes) and I wasn't sure if these inquiries were replies to one of my emails.

But no. The first one was a genuine inquiry initiated by a large manufacturing company's marketing department praising and its role in the DIY community. :D

Unfortunately, I had to respectfully turn down the original offer because I want to keep my editorial freedom and also keep ad-free.

Anyway, as a follow-up, I contacted some PCB manufacturers and got two discount codes for you. (Why didn't I think about PCB manus earlier?) Hopefully more discounts to come.

  • PCBway: code "KBDNEWS" is available now (redeem $5, once redeemed, it should be used in 3 months).
  • JLCPCB: – $2 off for PCBs.

Honestly, I have no idea how valuable these discounts are with all the other coupons offered by these companies.

In addition, I'm really not that familiar with the speed, quality, service of different manufacturers.

I'm just saying that if you'd order something from these specific ones anyway, feel free to try these codes.

Also, if you think these kind of discounts are useful for you, feel free to suggest me manufacturers who you'd like to see in this list.

(More promo codes below.)

New supporter

A mysterious donor who wants to stay anonymous donated on behalf of Clickety Split – Thanks!


A new shop in Prague: Owner and fellow keyboard enthusiast Robin offered a 5% discount for you using the KBDNEWS coupon code (first purchase, over €60).

Also, DogeMods, Feng Studio, and PLIP added to the database.

Newsletter performance

Or how passing the 2,000 mark altered my view of unsubscribes.

Now that the number of subscribers exceeds the magical 2,000, I gained access to some new MailChimp stats.

For those who are not familiar with this: MailChimp compares your newsletter performance to that of "peers". Up until recently, this group comprised of newsletters in the "hobby" industry with 0-2,000 subscribers. And passing the threshold means the KBD.newsletter now is compared to ones with subscribers in the range of 2,000-10,000. This is a different comparison.

So what's the difference in the indicators?

The industry average open rate of the below-2K newsletters was 35.1% while it's 29.9% in the 2K+ range. (It's about 50% for

Click rate is 6.7% vs 4.8% for below and above 2K, respectively (and 20-25% for these days).

How significant these differences of 5% and 2% are? Honestly, I don't know.

What I know though is that we are talking about the paid range now. Runners of these newsletters pay regularly for the service, and they do this each month proportionally to the number of their subscribers.

And this is what really bugs me.

According to the numbers above, only 3 in 10 subscribers open those newsletters on average (vs 5 in 10 subscribers).

The point is: we actually pay unnecessarily for the inactive 50-70% of users.

Therefore, a few weeks ago, seeing people unsubscribing was a bad feeling. Now I'm grateful to them for keeping the database clean.


There's a lot of work going on in the background.

I'm actively testing buttondown, an alternative newsletter provider. It's cheaper, but what I really like about it is the anti-WYSIWYG, fully markdown-based editing – hopefully making it possible to generate the whole newsletter from the database with minimal manual tinkering.

I'm already sending out two newsletters today: one with MailChimp to the "old" subscribers and another one (same content) with this new provider as a test.

I'd like to see the whole workflow with multiple newsletters before I fully abandon MailChimp.

With the new environment, creating the first issue was a massive PITA mainly because of the styling and how CSS is handled, but I hope it will be very straightforward from now on.


My Datalux space saver arrived and I realized it isn't an original Datalux. My bad. The seller put both Datalux and TeleVideo into the title of the listing but no reference to Datalux on the box or the board itself.

So apparently a rebranded one. I checked the company (TeleVideo) and they were active from 1991 to 1997 so the keyboard is still quite old.

And it's probably the same as the original Datalux because it features all the inexplicable details. :D

All in all, I don't feel myself scammed and it was pretty cheap anyway. And it's really small, strangely, it's even narrower than my custom monoblock split. :O

On the other hand, I have no info about my other boards on the way.. from Kyiv… I was VERY generous with this second purchase as a sign of my support of the Ukrainian cause but not a single update in the tracking info has been made in 3 weeks – from a neighboring country. Well, that makes sense in a very recently besieged city, but I was told by the seller that shipping works in order.


That's all for today folks.

Feel free to comment in this issue's r/mk thread, and as always: keep learning and building.

Cheers, Tamás



Stefak's ErgoTravelXT is a foldable split keyboard with XT60 connectors.

The ErgoTravelXT by Stefak aka FIXMBR is a portable low-profile keyboard with XT60 connectors, based on jpconstantineau's original ErgoTravel (here).

Github repo:

Changes from the original ErgoTravel

  • Kalih Choc switches only (no MX switches)
  • Tighter key grid (only 17.5x16.5mm Kalih keycaps supported)
  • Removed LEDs ("because I was lazy")
  • One extra key
  • 10 XT60 connectors
  • Foldable
  • Connectable (if you connect the two halves you don't need the TRRS cable)

And here is a short video demonstration:

Btw, this keyboard isn't wireless (although it could be with Bluetooth enabled controllers instead of the Pro Micros).

The halves communicate over the blue TRRS cable OR the two yellow XT60 connectors. Electrically there is no difference between them. "Black XT60s are purely structural."


EVEN44 is a split keyboard by fmash16 – 3D printed, handwired, 3x6+4 keys with an encoder.

The EVEN44 is a handwired split 40% keyboard built from scratch. The design is based on Alex Tulloh's (aka atulloh) Oddball and fmash16 took the OpenSCAD design as a base and modified it to meet his needs, taking inspiration from boards like the Kyria and Lily58 Pro.


So taking the base design of the Oddball, the following major edits were made:

  • more aggressive column stagger à la Kyria
  • 4 mod keys on the bottom row (with both CTRL and ALT)
  • Rotary encoder as volume control knob/scrolling with layering

I got the design 3D printed (30% infill). I spray painted the case vespa white using 2 layer primer, 3 layers of paint, and 2 layers of clear coat to finish it, lots of sanding in between.

The design files and QMK firmware can be found on Github:


  • Switches: Akko Jelly Black
  • Keycaps: Yong-qiu WOB keycaps
  • Plate: PLA+ (3d printed, 70% infill)
  • Cables: DIY kits from Zapcables

The keyboard is handwired. This is my first try at handwiring a keyboard, so while the final work might not be perfect, it works somehow. I used two Pro Micros as the controllers on each half – fmash16.


Cipulot's EC87 is an Electrostatic Capacitive (EC) TKL keyboard PCB.

According to designer Cipulot (@cipulot), his EC87, a fully open-source EC* TKL PCB is "working flawlessly". N-key rollover, analog actuation and QMK/VIA/VIAL compatible.

After some serious work, design, lack of sleep and productive VCs I can finally say it: IT WORKS!!!!! – Cipulot.

GitHub repo this way:


  • Layout size: tenkeykess (TKL)
  • Compatible switches: EC switches (Topre and NIZ)
  • Microcontroller: STM32F411
  • Connector: detachable USB Type C
  • Firmware compatibility: QMK (with VIA/VIAL support)
  • Protection hardware: fused & ESD protection

About EC & Topre boards

I have to confess I've seen Topre and other boards with electro-capacitive switches (can we consider these as switches?) always as something obscure. Apparently enthusiast-level but still rubberdome? Full of springs but not mechanical?

The point is, I'm far from being an expert in this field so I reached out to Cipulot who seemingly keeps churning out EC PCBs.

E.g. the EC87 is not the first EC project of the author, but a continuation of his development of open-source EC boards after publishing the Corne EC Revival, revival of sekigon-gonnoc's CorneECWL.

So the wall of text below reflects almost entirely Cipulot's thoughts.

First and foremost, EC stands for Electrostatic Capacitive which is basically the description of what system is implemented to detect the key being pressed.

Topre is just one of the companies involved in creating EC boards.

Funnily enough, they are not a keyboard company but a die-cast and refrigerator company (that's where the Coldtop comes from) – Cipulot.

According to Cipulot, people at Topre dipped their toes into keyboard stuff when they started to look into terminal keyboards in the mid/late 70s. They developed the switch which is nowadays referred to as Topre switch, composed of the spring, dome, housing, and slider.

So Topre is EC but not every EC switch is Topre. In the scene, people tend to use this to mark the difference between NIZ [another manufacturer of EC switches – Ed.] and Topre but it goes much more into that. NIZ basically uses the same assembly (spring, dome, slider, housing, etc.) and shares the basic operational principle when it comes to detecting the key presses. But Topre and NIZ aren't the only ones that did EC-based boards. IBM actually used EC-based detection systems in both the Beamspring and Model F.

Another option for EC is the Varmilo EC switch series. They're quite interesting in the way that they incorporate the EC components, apart from the sensing circuit, inside an MX style housing and stem:

Pic: Standard MX (left) vs Varmilo EC (right)

Standard MX (left) vs Varmilo EC (right)

Usually, when we speak of EC we either mean Topre or the equivalent NIZ though.

Topre is the creator of the Topre switch and it's being used in third-party boards too (pretty much like how Cherry designs and produces the MX switches that are then used by third parties.

The Topre name itself is still a trademark, but the patent behind the switch technology (US4584444) expired years ago.

The "notTopre" logo added to the bottom of EC87 is more for memes, just like the THOCC drawing. It serves as a little hint that it works with the switch assembly that Topre developed but NIZ components can be used too (with a dedicated plate).

I try to avoid using full names of companies' stuff (even solely for showing compatibility) bc it doesn't always turns out well. This one being an open-source project, I want to avoid any problems – Cipulot.


Slice36: a Xiao RP2040 powered 36 key split by MReavley.

MReavley's Slice36 is a minimalist ergo split keyboard, designed around the Seeeduino Xiao platform. Inspired by the Corne, Ferris, Ben Vallack's videos and countless hours of perusing Reddit and [Nice! – Ed.], but ultimately it has been done up from scratch largely as an exercise.

This is the second prototype from my first foray into making a keyboard – MReavley.

MReavley figured if he didn't like the 36-key layout he could always just use one half as an oddly-shaped macropad. So he used his iPad to experiment with different key positioning and staggers, noting down the offsets and then building a little Excel sheet to generate the coordinates for the footprints in KiCad.

Designed this from scratch around the Seeeduino Xiao because I'm quite fond of them for other projects, and I'm using the RP2040 flavour in this build. So far I've been reasonably satisfied with KMK, but then again I haven't actually tried the other established options yet.

As a holdover from the previous test, he designed the split to work over I2C, but was able to use the PIO feature of the RP2040 to reconfigure those pins to UART to work with KMK.

The PCB is flippable/doublesided so the same board can be used for left and right, although "I could probably make the silkscreen for both sides a bit prettier".

The microcontroller is simply flipped upside down for the left side so the pinout still works, but in the future, the castellated edges of the Xiao could be used to solder it on using SMD pads, which means the shared THT footprint could be replaced with separate SMD footprints that are flipped on either side. But the author wants to "mess around with working directly with microcontrollers" for his next boards so he may not get round to this.

The Akko Ocean blue (fingers) and sponge (thumbs) switches I used seemed to sit very loose in the mill max sockets I bought, and since the board is also dirt cheap […] I figured I would just solder in the switches rather than bothering with hot-swapping. It also means I don't need any fasteners on the laser cut aluminium plate, and so far it seems plenty strong and rugged while giving a really clean look that I like.


  • MX spacing
  • Reversible PCB, designed around 0805 SMD components to be hand-solderable or assembled by any assembly service.
  • Built around the Seeeduino Xiao RP2040 (hooray USB-C)
  • Using KMK firmware
  • Laser cut aluminium plate, secured by the soldered in switches for clean look without fasteners

As for the laser cutting, I had it done at a local industrial park (I'm based in Singapore at the moment) […] I just looked for metal laser cutting services and sent the files round til I got a reasonable quote.

Github repo


Seeeduino Xiao RP2040

Product page: Seeeduino Xiao RP2040


ZMK's second birthday

Pete Johanson's write-up for the second birthday of the ZMK firmware.

ZMK, the wireless-first open-source keyboard firmware turned two today.

According to, ZMK Firmware is an open source (MIT) keyboard firmware built on the Zephyr™ Project Real Time Operating System (RTOS). ZMK's goal is to provide a modern, wireless, and powerful firmware free of licensing issues.

We've seen ZMK firmware used by several creators recently, e.g. on Lolcatz's Blank Slate, Zealousideal's Kiboard68 and Tony Jeffree's MiniNova, just to name a few.

And ZMK, apparently popular combined with NiceNanos, is exactly two years old today:

Two years ago, today, I minted the first ever commit for ZMK – petejohanson.

Read the full post written by creator @petejohanson in the ZMK blog:

While ZMK is currently missing some features found in other popular firmware (e.g. QMK's mouse keys or KMK/PRK's on-the-fly keymap update), Pete published another post on all the new features he and other contributors implemented recently (e.g. caps word, tap dance, e-paper display support, etc.).

Check out all the news here:

And of course here is the project's Github repo too:

Tips & Tricks

Seeeduino Xiao RP2040

Another RP2040-based controller with relatively small form factor: Seeeduino Xiao RP2040.

The Seeduino Xiao RP2040 was brought to my attention by MReavley's Slice36 project, and the BLE version was used on filibustercrankcase's Hummingbird too.

This nice little controller board is another in the ever-growing sea of development boards sporting the RP2040 chip.

Product page: this way.

Relatively cheap ($5.4 atm) – compared not just to other Xiao boards but also to other controllers in general.

The form factor is about 1u (21 x 17.5mm) so it's really easy to fit into pretty much any layout. This parameter makes it a good alternative to other small controllers like the Tiny2040, the RP2040-Zero or the RP2040 Stamp.

The number of GPIO pins (11) may scare you off at first sight, but it's more than enough for splits (in theory up to 30 keys per half) even with a basic matrix.

However, and I just learned this recently, with a "real" duplex matrix (bidirectional scan) you can control up to 60 keys with this tiny board. This makes the Seeeduino Xiao RP2040 suitable for driving a 60%-ish keyboard and huge splits alike.

(To be able to benefit from the duplex matrix, at least at the moment, you have to rewrite your custom matrix scanning algorithm for most firmware I guess, except if you use PRK, where this feature is already implemented.)

The (Japanese) duplex matrix

There are two completely different keyboard matrices referred to as duplex matrix. Let's examine the Japanese one, which makes possible to handle 160-200 keys with a single Pro Micro.

This topic would deserve a much more comprehensive write-up but let me do a quick post now since I've referenced the "Japanese" duplex in more and more posts recently – without a proper explanation.

Some parts, especially the code part, need further examples, but I decided to publish this anyway.

If you are a member of the Japanese DIY keyboard community, you've most likely heard of this concept. If you are a pro, feel free to skip the introduction and head right to the Japanese duplex part.

Otherwise, let's see how to handle 200 switches with a single Pro Micro (and in a later post we'll cover how to increase that to 380 keys).

The duplex matrix conundrum

What is a duplex matrix?

I thought I knew it full well until about two weeks ago when, during a chat with @policium on the PRK firmware, I had to realize we are talking about two entirely different matrices.

It seems the term "duplex matrix" can denote two fundamentally different wiring/arrangement method depending on which part of the world you live.

Duplex-matrix as we call it in the US and Europe seems to have a different meaning than it does in Japan. (Sorry, I'm not sure about other parts of the world.)

For the sake of reference, let's call the first one the Western duplex and the second the Japanese one. Despite the identical name they have totally different purposes and effects on the number of required pins.

  • Western duplex matrix: this is in fact a basic matrix folded along the row plane. Helps to get closer to the ideal (square) matrix but can't increase the number of potential keys.
  • Japanese duplex matrix: this is a more sophisticated matrix, scanned in both directions. Can double the keys handled via diodes in alternating directions. May require meddling with the firmware code.

Naming controversy

So why do we use the term "duplex matrix" for two entirely different matrices?

@policium says the term was misused by ai03 in his popular reference work on PCB design and has been spread and became established.

When I made it and named it, I was a high school student with little knowledge of electronic circuits, so I didn't know the true Duplex – ai03 (source).

Indeed, Duplex [communication system] is usually a system where two parties communicate in both directions. In the western duplex there is only one direction (col2row or row2col) so the appellation is not the aptest one to say the least.

However, the term "duplex" itself has multiple meanings too: ranging from double and folded to simultaneous bidirectional – depending on your language, location and field of interest. So simply stating that the name fits one or the other matrix better may not be appropriate.

Regardless, the most important point of this write-up is that in the Japanese duplex the matrix is scanned in both directions, thus, doubling the number of keys!

According to e3w2q's awesome article on the topic (featured in the traditional Keyboard Advents Calendar 2019), in the Japanese keyboard community the genuine duplex matrix is attributed to Mr. Apuro (source).

Let's start with a vanilla Pro Micro which has 18 easily accessible GPIO pins.

And let's start at the very beginning: direct connection.

Direct connection

In the most basic arrangement, connecting switches directly to the GPIO pins of the controller/development board, you can handle only 18 keys with a Pro Micro.

This may be perfect for small macropads, numpads, and there are many minimalist 36-key splits where 18 pins (for one half) are just enough.

But of course for many other projects the number of pins/keys can be an important limitation.

This is when matrices come into play.

Basic keyboard matrix

Arranging the switches into a grid, more specifically into columns and rows, and using the pins to address/read the state of those columns and rows of switches, we can scan the matrix and monitor the state of all the keys.

Let me draw a smaller matrix as a demonstration, a 6x2 one.


As you can see, we used 6+2=8 GPIO pins altogether. Instead of 8 switches (direct pins), however, we manage 12 keys this time!

It works the other way around too, with diodes pointing to the opposite direction.


So as long as you are consistent with the diode direction, both arrangements work. (Assuming, of course, you set the proper direction in your firmware.)

According to this concept, QMK for example offers the COL2ROW or ROW2COL constants to set the method the matrix is scanned (and DIRECT_PIN too ofc).

But wait! We used 8 pins for 12 keys, right? In an optimal case (a 4x4 matrix) that would mean 16 keys.

Ideal matrix

Exactly. And it looks even more painful when we utilize all 18 pins of a Pro Micro. We could arrange the 18 pins into a 9x9 grid, which means 9x9=81 switches can be handled in the ideal case. "Ideal" here means the square arrangement, when the number of rows equals the number of columns.

Unfortunately, and that's a pretty common case with keyboards, when the number of columns is higher than the number of rows (or the other way around), we actually waste some pins. Or lose some keys – depending on your POV.

9x9=81, 8x10=80, 7x11=77, 6x12=72, 5x13=65, 4x14=52… Ouch.

As you can see, we can handle less and less keys despite using the same number of pins.

Is there a way to get back to around 81? To increase the number of keys or spare some pins? Sure! The "Western" duplex matrix is what you need.

Folded matrix – or the "Western" duplex matrix

(It's fun to call this the Western one because ai03, whose guide helped to spread the term, is actually Japanese too if I'm right.)

So the Western duplex isn't really a new kind of matrix. It's the same as the basic one. It can be scanned as COL2ROW or ROW2COL which means it isn't really "duplex" in the sense of the word used in telecommunication where it often refers to a bidirectional messaging option ("two messages may be sent simultaneously in opposite directions over a single circuit").


As you can see, the Western duplex is nothing more than a cramped basic matrix, folded into two along the rows.

We seemingly use the same COL pin for two physical columns of keys and double the number of rows – closing in on the optimal matrix shape. (But in reality those two columns are one, only bent in an U-shape.)

E.g. a 4x14 basic matrix can be turned into a 8x7 Western one, and we can cover the same 52 keys with less pins: (4x2)+(14/2)=15.

Wait, what?! That's actually awesome! The same number of keys handled by just 15 keys instead of the original 18! We spared 3 pins with this simple trick.

Indeed. This "Western" kind of duplex matrix may come in handy for several projects, but we are still below 81 keys. Not to mention 200 switches. Hold on, we're getting there.

Japanese duplex matrix

How is the Japanese duplex matrix different? It scans the matrix in both directions! First COL2ROW, then ROW2COL – in succession.

The trick lies in the direction of diodes: two columns are connected to the same COL pin, but one column has diodes pointing in one direction, while switches in the second column have diodes pointing to the opposite direction.


Note the diodes pointing to the opposite direction. One column has COL2ROW diodes, the next ROW2COL ones.


This way the matrix can be scanned in both ways, checking half of the switches on the COL2ROW and another half on the ROW2COL iteration.

Compared to the Western duplex, we need only half the rows here.

For the same 12 keys in the examples above,

  • We used 12 pins with direct connection.
  • Do you remember the basic matrix? We needed 8 pins with that (6+2).
  • With the folded Western duplex? Only 7 pins (3+4).
  • The Japanese one? Just 5 pins (3+2)!

The larger the layout the more dramatic the number of spared pins is. What about a classic ortho board, e.g. the Preonic (12x5=60 keys)?

  • Direct connection: unfeasible.
  • Basic matrix: 12+5=17 pins
  • Folded Western duplex: (12/2)+(5x2)=16 pins.
  • Japanese duplex: Just 11 pins!

For this to work, however, you might need to hack your firmware.


At first sight you might think that this arrangement and scanning will result in a lot of ghosting – unpressed keys registering.

Well, that's the beauty of this matrix: by choosing your electronic components carefully, you can ensure that by the time the signal passes three diodes, it won't trigger a false positive.

Pic: Artwork by jsheridan :)

Artwork by jsheridan :)

In the picture above, pressing/holding switches 1, 4 and 9 at the same time could theoretically cause ghosting (MX7). However, that isn't the case with real-life diodes.

According to my measurements, passing two 1N4148 diodes registers as a keypress every time. But there wasn't any keypress registered by a (5V) Pro Micro with three diodes!

The point is, you have to carefully plan your component choice. This may involve some measurements both on the diode (forward voltage drop) and the controller side (thresholds of LOW and HIGH). In any case, you can use two diodes instead of one (for each key, or as we will see at the improved square matrix: an extra diode for each pin).


Unfortunately, for most keyboard firmware, you have to write your own matrix scanning algorithm for this to work, e.g. to rewrite the matrix.c file in QMK.

Let me not paste a bunch of code here. e3w2q has his matrix.c published here – check out how that works.

In addition, sqeezeonein points out that there was a pull request addressing this feature in QMK as well (here) – by elfmimi/a_p_u_r_o. Sounds familiar? ;)

If you are too lazy to implement this, PRK firmware has this function built-in (source). So you can try this concept right away, at least with RP2040-based controllers.

Now you know what @policium meant by telling us in the PRK piece:

PRK is developed by crazy people, so they implement maniacal features before they implement normal features.


Well, that's it.

After reading through all this wall of text, some readers may find that this kind of matrix deserves the duplex matrix name because of the bidirectional scan.

Only one question remains: How should we reference the "Western duplex matrix" from now on?

Let me know your ideas and preferences.

Hey, you babbled about 160-200 keys…

Yeah, sorry.

So with 18 pins of the Pro Micro we handle 81 (9x9) keys with the basic matrix and double that (162) with the Japanese duplex presented here.

However, with another old little hack, by utilizing the two LED pins of the Pro Micro, you get 20 GPIO pins or 10x10=100 keys (basic matrix). Double that with the Japanese duplex and voilá: you have 200 keys.

Real-life usage

I'm not suggesting you need 200 keys.

I'm saying that the pins you save with a duplex matrix can be used for whatever you want: LEDs, rotary encoders, displays, more keys, you name it.

It turns out you can use a Pro Micro, KB2040 or similar cheap controller to build even a fullsize keyboard. (Why would you do that is a different question.)

What's next?

With even more sophisticated matrices, still using the voltage drop across the diodes to avoid ghosting, you can almost quadruple the number of keys – that means 380 keys with 18 pins of a humble Pro Micro. That's the square or round-robin matrix.



Homemade key socket cover

A homemade key socket cover open-sourced by qubist1.

Fellow Redditor qubist1 uses a ZSA Moonlander which he finds a great keyboard, "made greater by its customizability". After typing on it for a few months, however, he has noticed a number of unused keys and wanted to remove them in a graceful way.

ZSA sells the "Zip Kit" for $60 so I designed and 3D printed the part instead. Took a few hours and cents worth of plastic.

These covers snap into place over the holes, hold pretty secure, and can be pried off "with a little finesse".


Keyboard Spotting

Lighting controller cyberdeck

A portable DMX lighting controller posted by aleigh9812.

Audio/video and lighting industries are other fields to stumble upon weird DIY tech with lots of keys.

This custom portable DMX (Digital Multiplex) lighting controller with a nice ortho keyboard/switchboard, built into a Pelican Vault rifle case, is actually a huge cyberdeck – all the little essentials tucked into a single case for controlling lighting for live productions such as concerts or theater.

The rig was posted by a friend of an acquaintance of the owner :) so take everything with a grain of salt here.

This is not my setup but I do work in the industry where this is used, lighting for live productions such as concerts or theater – captainohair.

A small Dell running ETC's Eos console software (what you see on the two Elo touch screens in the lid). Based on the Wireless Access Point mounted in the lid to the left captainohair is guessing they have some networking with a switch hidden under the keyboard and the custom ortho board.


Normally a setup like this would be configured to tap into whatever lighting network in the venue they arrive at via ethernet to control the lighting rig via ACN or something similar.

More details found in a private Facebook group for lighting folks:

Dell optiplex micro PC, 6k nomad dongle, High-Output CMD key, house made 5 fader wing (USB OSC), 2 ELO 2215L 15” monitors, ETC gadget, two POE switches (dual networks), cyber power 350VA UPS, Ubiquiti Access Point, wired router, Pelican Vault 700 case. Other odds and ends such as USB hubs, panel mount connectors, work light, etc.

Unfortunately, this is the only photo posted.


Modelo 96

Modelo 96 – a custom ortholinear PCB by TillerCPE in a Melody 96 case.

I don't usually feature vanilla ortho keyboards on this blog, especially if they are not open-source. However, the layout TillerCPE came up with is probably the only way to make an ortho board ergonomic – by putting some rows in the middle and bringing the two "halves" close to shoulder-width.

This is my Melody 96 (kit 2 with the aluminum bottom and brass weight) with a custom PCB dubbed the Modelo 96 – TillerCPE.

Nasp from Checker Boards helped to make the PCB and custom plate TillerCPE has been thinking about for a while.

The PCB was ordered from the manufacturer with components soldered on. The only thing done after receiving them was the hotswap sockets.

I had ordered PCBs designed by Nasp for his Checker Boards shop before, like the ortho layout for the Candybar, so I went through him to order these as well.

And now I'd pass the mic to TillerCPE who tells us about his project in detail:


This build is pretty much the culmination of my keyboard journey thus far. My first mechanical keyboard was a 65% layout (Drop ALT). I was pretty new to the hobby and hadn't really discovered how deep the rabbit hole goes yet. Once I started browsing the various mechanical keyboard subreddits, though, I quickly became interested in ortho layouts. Like a lot of people, I'm sure, the Planck was my first ortho board. I really liked it and found ortho to be really intuitive for typing – even with this new build, I'll probably still use a Planck as a travel board.

Even though I enjoyed using the Planck, I still wanted to try other layouts. I ended up getting an ID75 and used that as my daily driver for quite a while. I used it with a split layout and I really liked the ergonomics of having my hands farther apart. With non-split keyboard layouts, I can really notice tension and tightness in my neck and shoulders after sitting at a keyboard all day for work since I am pretty broad-shouldered. That is when I started thinking of trying to get a custom layout made.

I knew I wanted to stick with ortho and I wanted to have a split layout with my hands even farther apart than they were on the ID75. I also knew I wanted to stick with a unibody board instead of going with an actual split like a Corne. I also preferred to have a more premium feeling case made of aluminum.

So the first thing I did was I started looking for in-stock cases that were either gasket mount or top mount so I wouldn't have to worry about standoffs in the bottom of the case interfering with a custom PCB having a different layout than what was originally designed to go in that case.

I looked at various sizes and options – 65%, 75%, etc. – as long as they had more columns than my 15 column ID75. But since I wanted my hands as far apart as possible while still having a unibody board instead of split, I went for the biggest layout I could find that fit my criteria.

Pic: Melody 96 case in anodized aluminum current color options

Melody 96 case in anodized aluminum current color options

That's how I ended up going with a 96% layout case and the Melody 96. I found the listings for it on Aliexpress and it was exactly what I had been looking for. It's top mount so I didn't have to worry about standoffs. The case had multiple options for kits – both kits have an aluminum top, but one kit has an acrylic bottom for the underglow to be visible and the other kit has an aluminum bottom with a brass weight.

The bottoms are interchangeable between the kits and there's a variety of colors to choose from for the anodized aluminum. And a 96% layout gave me the most number of columns of any cases that I had looked at with 19. I ended up ordering the case in black with the aluminum bottom and brass weight.

Since I had settled on a case, I then went to work on coming up with the actual layout. I started toying around with 6x19 layouts on Keyboard Layout Editor and went through several iterations. I tried mimicking more traditional layouts like an ortho version of the 96% layout with the numpad on the right, but that usually ended up with my hands only being as far apart as they were on my ID75. So I knew the numpad had to be in the middle if I wanted to meet my ergonomic goals.

After that, the layout just kind of fell into place. Ortho lends itself to symmetry, so I knew I wanted to mirror things as much as possible. I also tried to keep keys in their correct rows for sculpted profiles so if I got into keycap group buys to cover the build then profile rows would be respected.

Pic: Initial layout in Keyboard Layout Editor

Initial layout in Keyboard Layout Editor

Once the layout had been locked in, I went about actually trying to get it made. While I am interested in learning PCB design, I don't have any experience in it. I had already been thinking about this build and tinkering with the layout for months, so when I weighed the options of learning PCB design and doing it myself or just commissioning it I ended up going the commission route. I wanted it done right the first time and in my hands as quickly as possible.

I ended up meeting Nasp on the 40% Keyboards Discord server when I entered his group buy for the ortho PCB for the Candybar. While I was on his shop (Checker Boards), I looked at some of the other products he was offering. He had a number of other ortho PCBs he had designed and had as in-stock items that could be dropped into cases that had been designed for other layouts – the Planck-like Quark, the Plexus75 that fits into 60% cases, and of course the ortho Candybar that I had come to purchase. So it seemed like Nasp almost specialized in exactly what I was looking for in putting custom layouts into already existing cases.

I DMed him on Discord and gave him a brief overview of what I was looking for. He said he was interested in doing the commission work but had to finish up the ortho Candybar group buy as well as the group buy for DSS Sencillo. While I waited, I was able to find someone on the Keyboard Atelier Discord server (shout out to DvZ) who had 3D printed a Melody 96 case. I asked him for the print files for the case and gave them to Nasp so that when he started his design work then he would already have the mounting locations he would need for the custom plate. After his schedule opened up, we ironed out all the details – underglow but no per-key RGB, hotswap, etc. – and then he got to work.

As part of my layout design on KLE, I had also been using the Signature Plastics PBT Color Swatch to play around with various keycap colors for my final build. I knew I wanted PBT and uniform profiles are always easier for trying to fill out custom ortho layouts so I naturally drifted towards using SP's custom PBT DSA sets available on PimpMyKeyboard.

Because I was changing a 96% layout to ortho, I was going to have more keys than a fullsize keyboard, so I also looked at the individual keys that were for sale on PMK in order to fill out my layout. So from their list of available keys, I pulled in Cut, Copy, Paste, Save, Search, and the media keys for Vol+, Vol-, and Mute.

Pic: Render of KLE layout with planned DSA keycaps from PimpMyKeyboard

Render of KLE layout with planned DSA keycaps from PimpMyKeyboard

Since I was going the text modifier route instead of icons, I also decided to order text mods for the numpad from their list of individual keys (Calc instead of NumLock, then Div, Mul, Sub, and Add).

Finally, I decided to go with G20 keycaps for my spacebars instead of DSA. PMK offered 2u G20 caps in PBT in the same color as the alphas I was selecting. As PMK does not offer convex 2u DSA keycaps, I thought that with G20 being about the same height as DSA and having softer and rounder edges they would be more comfortable for my thumbs. Since I was ordering the SP DSA keycaps, I also used the SP PBT Color Swatch from KLE to pull the color hex codes and design a deskmat that I had custom printed to match the keycaps.

With my colors and keycaps finalized, I placed the order while I waited for the PCB design to be finished. Nasp made quick work of it and was very open and accommodating during the whole process, making me feel good about my decision to go with him for the commission work.

To finalize the design, I gave Nasp the name Modelo 96 for the PCB as I felt like Modelo still sounded somewhat similar to Melody and Modelo as in Model O as in Ortho.

Pic: Hotswap PCB with Modelo 96 logo

Hotswap PCB with Modelo 96 logo

I mocked up a quick Modelo 96 logo to print on the PCB, gave it to Nasp and the order was placed. After some COVID-related manufacturing issues slowing things down, the FR4 plates and PCBs were finally finished and flashed with VIA-compatible firmware and I had everything in hand. I put everything together using Durock Sunflowers for the switches.

When I made my posts on Reddit, I know there seemed to be some interest for people getting their hands on this for their own builds. I spoke to Nasp and he plans on offering a solder version of a PCB that will fit in the Melody 96 case on his Checker Boards shop in the future that I am sure will offer more layout options. If there is enough interest solely for the hotswap Modelo 96 that I have, then maybe I will offer a group buy in the future.

The layout is more limited as the 2u vertical keys for the numpad have to be 2u because of the hotswap sockets and the only 2u bottom row options are where I have mine. Every key on the board, other than the vertical 2u keys, is capable of being 1u.

So far I couldn't be happier with the build. It's everything I hoped it would be ergonomically and I think it looks absolutely gorgeous. I want to say thanks again to Nasp for all of his help; I couldn't have asked for a better person to work with.

And I'm happy that at least some people in the community seem to like the build as much as I do. That's what's great about this community, though. There's a lot of passionate, creative, and supportive people. There's so many designs and iterations that it's highly likely that you can find the perfect layout for you – if not, you can actually get it made yourself.

First Hummingbird of the season

A wireless Hummingbird by filibustercrankcase sporting a Seeeduino Xiao BLE controller.

I can't believe the Hummingbird hasn't been featured on yet.

Here is PJE66's GitHub repo with the files:

This is a wireless monoblock Hummingbird keyboard that filibustercrankcase finally finished after waiting for the Seeeduino Xiao controller – this time the BLE version – to arrive.

It uses a small 40mah Li-po battery under the controller, which is all hidden beneath a 3D printed cover.

The PCB and case was designed by PJE66, and, according to the owner, the three-piece 3D printed design fits together incredibly well.

I have to thank smores56 for selling me this ridiculous thing in the first place, and to petejohanson and jcmkk3 for all the help and suggestions for setting up ZMK with the Xioa BLE, and also pointing me in the direction of the tiny components required for the build.

The board sports Kailh Choc White switches and custom dyed MBK Blank keycaps.

As a side note, jamesmnw 's Midge was inspired by this keyboard, and a beautiful Hummingbird case with fabulous patina was posted earlier too.

Ortho Protozoa P02

smellycoat made an ortholinear PCB to fit a Protozoa P02 case – with a giant knob.

The case is from a group buy run by Protozoa Studio, and designed to fit a Discipline PCB.

I designed a new PCB (and plate), which uses the same ATMega32a and a very similar circuit but redesigned (from scratch) to fit an ortholinear layout while still being compatible with the case – smellycoat.

The big knob is set up with a smooth (ie no detent) encoder which complements the extra weight nicely.

It's set up for scrolling at the moment but I'm going to add some different functions for different layers.

It's a PEC11R-4020F-S0024. No detents out of the box.

To be honest they feel kinda shitty with a normal knob (a little rough and scratchy) and don't spin very freely, but with that massive heavy knob you don't notice the scratchiness and the extra weight helps it spin.

And the knob itself is on sale e.g. here and here.

The other two knobs control volume and undo/redo, and have a more usual detent decoder.

Finally, here's another pic showing off the exposed components a bit better:



An interesting layout concept by oy2r of Metakey: TENET 70% keyboard kit.

One keyboard with two layout configurations: Thanks to the completely horizontally symmetrical design of the mounting mechanism for the bottom weight to the lower case, as well as the split-PCB design for the different areas, you can switch between two layouts: regular or Southpaw.

Why is it called TENET?

"Tenet" is one of the few palindromes in English (like kayak, racecar, level, etc.), and it means "creed", "purpose", "principle".

Having decided on the design feature of a changeable layout, I felt I had to find a palindrome to fulfill the role of this keyboard's name. A palindrome that could be read from left to right and right to left, just as the keyboard can be built both right-handed and left-handed – oy2r.


  • Typing angle: 8°
  • Layout: Regular or Southpaw FRL 70%
  • Front height: 18mm
  • Dimensions: 374 x 115 x 30mm
  • Mount: Isolated Gasket Mount
  • Plate material: PC
  • OLED screen: 256 x 32 pixel Customizable OLED Monochrome Screen
  • Split PCB design allow for Southpaw layout swap
  • Hotswap with per-key RGB underglow
  • Soldered with ISO, Split Backspace, WKL row and Split Shift Support
  • USB-C daughterboard

GH thread:


That was Issue #75. Thanks for stopping by.

This issue was made possible by the donations of:, MoErgo Glove80, u/chad3814, Aiksplace, @kaleid1990, @keebio, Timo,, cdc, Sean Grady, kiyejoco, Bob Cotton, FFKeebs, Richard Sutherland, @therick0996, Joel Simpson, Nuno Leitano, KEEBD, Spencer Blackwood, Yuan Liu, Lev Popov, Christian Mladenov, Davidjohn Gerena, Alexey Alekhin, Fabian Suceveanu

Your support is crucial to help this project to survive.

Discussion over at r/mk!