Custom Keyboard Programming Capabilities

Long time user of Model M keyboards. Love the feel, hate the size. Especially since I’m
beginning to feel wrist and elbow pain.

I want to build a custom keyboard and if I’m going to go down the rabbit hole,
it’s important for it to be programmable, functional and flexible.

After dozens of articles, videos, reviews etc., the programmability aspect of a custom
keyboard has raised more questions than it’s answered.

Can anyone shed any light on the following? Thank you very much!

What determines programmability for the following items on a custom built keyboard?

Number of layers.
Key mapping.
Macro capable?
If macro capable, keystroke count limitation if any?
Mouse access (key clicks and movement)
RGB global control?
RGB per key control?

1: PCB design?
2: PCB integrated controller (atmega 32u4 microcontroller soldered directly to PCB)?
3: PCB microcontroller attached to PCB via Teensy?
4: Controller memory?
5: Controller design?
6: Firmware management sites/tools/services like (QMK, TMK, KBFirmware, ) compatibility?
7: Other

“Programmability” only entails one thing: remapping of keys on the board. Some boards call macro functionality and layout changes via DIP switches programmable, but there’s people who’ll say that isn’t. If you’re looking for a custom keyboard, what you’re probably looking for with all of your requirements is QMK support.

QMK is a firmware that’s been extensively well-programmed, documented, and maintained by the community to be open and versatile. Depending on the PCB, QMK-based boards can support up to 32 layers, macros, RGB underglow and single-color backlighting, along with features like tapdance. Many of the most common PCBs support it, and almost every single higher-end board does too.

Programmability is something that’s more or less squared away with QMK, TMK, and other custom configurators like VIA and Kiibohd, in the custom market these days, so I think the biggest hurdle to cross is finding the right layout for you.

Thank you Violet very much, that helps.

QMK has come up a lot during research. But I’ve yet to find consistent, if any, documentation regarding number of possible layers on any PCBs with exception to the ErgoDox EZ. That’s created some confusion. Trying to think through key combos on another layer without experience often has me thinking in circles.

Right now I’m thinking a max size of a TKL and possibly something as small as a 60%. Just not sure what the loss of dedicated function keys up top or arrow keys (ironic from a daily Vim user) is going to mean for my daily workflow. Regarding layout, the primary objective is to get my mouse as close to the right side of the board as possible to minimize elbow movement. Working with full size keyboards over the years has taken it’s toll.

Example: Suppose I need a key combo of CTRL+SHIFT+F2 but the board doesn’t have typical function keys but they are assigned to layer two. Would that mean (while on default layer) pressing FN+CTRL+SHIFT+F2?

Thanks for the tapdance note. Hadn’t come across that. Absolutely like that idea for parens, braces and brackets!

Thank you again for the help.

You can have a key that does FN+CTRL at the same time, if that’s what you’re asking. You can also set layers to toggle, while held, for a period of time, and lots of other different ways. Trust me, there’s a LOT of useful stuff in QMK. If you’re looking for something between TKL and 60%, there’s a lot of good entry-level 65% and 75%s, like the Tofu65, the KBD75, and the venerable TADA68.

In regards to layer limits, the only limit to macros and layers that I know of is the memory on the microcontroller.

How many layers do you think you’ll need? Even on a 40% keyboard I’ve never found need for more than 3 layers (although I’m happy with pretty few keys).

It’s not that I need FN+CTRL exactly.

I’m trying to understand what the process would be if an application had a shortcut of ALT+CTRL+F2 (but the board default didn’t have function keys and I had assigned them to layer 2). Is it safe to assume that FN(to reach layer 2)+ALT+CTRL+F2 would be required to activate that combo?

Yeah, that’s correct. If you use your function keys a bunch, it’s probably a good idea to get a 75% or an 1800 that has function keys but a smaller profile than a fullsize.

Nick probably between 3-5 layers. Two for sure. Right now I’m sort of stumbling around in the dark so I’m guessing. @Lesbian has been very helpful.

At first glance I imagine having a layer 2 that will contain a minimum of Function F1-F12 and I would assign a variety of other macros to some other keys. That layer may also contain arrow keys if I opt for anything less than a 75% or whatever board size doesn’t have dedicated arrow keys.

But knowing myself, as soon as I have a decent comprehension of how programmable boards work, I’ll find many more applications.

Besides trying to get the mouse as close as possible to the board I have another major objective.

Creating macros that send keystrokes to a Wordpress backend. I have a macro in mind that will save me 7 keystrokes and increase speed, accuracy and productivity.

Essentially I want to do in Wordpress and other apps through keyboard programmability that I do in text files with Vim and it’s macros.

Ah, I see, you def use more keys than me haha, the only F key even bother mapping is usually F5. Based on what you’ve said I would have to agree with @Lesbian that it sounds like a 75% like the kbd75 sounds like it would be perfect for you, you get to keep your arrow keys and F keys, but the width is a lot more compact for getting your mouse in close, and it runs QMK which is definitely the most compact and feature filled firmware out there right now.

You can find a list of things you can do with QMK here

Going for a 75% sounds like the surest bet for you - having those extra function keys can be a big help if you use them a lot. Since they’re only slightly bigger than a 60%, they’re great for using your mouse often, and having the extra programmability is a boon. Note that macros on QMK are a little bit tricky at first - but it’s easy enough to figure out, especially if you’re a coder, as QMK is more or less C for keyboards. Remember that there’s also always macropads! If you need to get some function keys, you can also get something like the Sweet16, which is a QMK-compatible 16-key pad.

Just realized the KBD75 is small like a 60% board but has arrow keys and a Function row. That to me looks like a no brainer. That seems to tick all boxes since the depth of the keyboard isn’t a concern.

Violet even after all of the pages, articles, reviews and videos I’ve looked at about building a custom keyboard, I didn’t know this unicorn existed. THANK U!!!

F keys do get a fair amount of use. My F5 key alone has 5 different Vim mappings on it. I could change those but they’re so ingrained, I’m too lazy.

The KBD75 recommendation by @Lesbian helped big time. Didn’t even know that type layout existed.

I’ll take a look at the QMK firmware link.

Thanks Nick.


I’ve seen the macro pads out there and wondered if they would satisfy any of my needs. The Sweet16 is QMK firmware controlled according to their page. Yet they reference also (they are mentioned below QMK on the same product page), so is kbfirmware another firmware option versus using QMK.

KBFirmware is actually just a QMK site - you can use it to configure a QMK file in your browser! There’s a couple of different QMK tools around.

Like you, I started with the Model M as well, and then moved to tenkeyless, and then 60%, and now my main keyboard is one of these:

One crucial feature that QMK enables (that I haven’t seen anybody else explicitly mention here yet) is the ability to configure each key to behave differently when tapped vs held.

For example, to the left of my A key, I have a combination Ctrl+Esc key - if I hold it, it’s Ctrl, but if I tap it, it’s Esc. Super useful. Likewise, my right spacebar is a spacebar when I tap it, but it shifts everything from the default alpha layer to the numeric layer - my QWERTYUIOP row becomes 1234567890. I also have some other keys mapped on the numeric layer, like HJKL become arrow keys with the held spacebar.

It’s insane, and literally nobody on the planet can use this keyboard but me. But I can type almost as fast on this thing as I can on a Model M, and my fingers don’t have to move nearly as much to do it. It just takes a little while to build up the muscle memory across layers.

I mentioned it myself!

1 Like

Thanks Chris. Cool keyboard. To me it may as well be a spaceship.

I don’t know about you but putting my Model M aside was painful. Using a cheap TKL now that I bought new for 35.00 just to alleviate some of the pain. It’s like going from Lobster to dog food. Before keyboards became popular, I went through 3 Model M’s before they all died. Then a couple years ago I stumbled into a Terminal Model M that was made in the 80’s. It required a converter for it but it cleaned up great and everything works. But it’s brutal on my elbow that I operate my mouse with. My wife looks at me like I’m a weirdo when I refer to it with affection.

Typing numbers with the QWERTUIOP row is VERY INTERESTING. I never became proficient with the top number row even when I tried to ignore the fact I had a numpad. It’s a little better but not much. Mapping HJKL keys would be awesome also since I use them all the time now with Vim. If I could get Vim functionality in in Word docs, spreadsheets etc., another major bonus.

The whole keyboard development topic is new to me. QMK seems to be the big dog when it comes to firmware. Would you consider them stable and viable in the long run? Being a Linux fan, open source is always appealing as long as I’m confident a resource will be around long term. Probably seems like a stupid question but last month I hadn’t even heard of QMK. One concern is that I invest in a programmable keyboard and the firware options disappear preventing further programming.

And thank you @Lesbian . I can think of all kinds of applications I can use that feature for. Just like @clee I didn’t recognize that tapdance was the name of the feature that provided multi tap for different key strokes as well as tap-hold etc. for even more options. Very cool.

QMK is backed by OLKB and maintained by dozens of coders and whatnot, so it’s a really good option.