Building a custom keyboard

Published August 10, 2019 — 3 minute read

This will be the first in a series of posts about making a custom keyboard from scratch. Don't mistake this for a guide because it's meant to be a build-log.

I attempted something similar two years ago when I made a small tester with a few switches using Arduino Pro Micro controller. I'm heading into this with ideas and some knowledge from the past, which should be more than enough to get me started on this journey.

# Goals

The goal is to design and build a custom keyboard from scratch with (hopefully) efficient non-standard layout optimized for usage with vi(m) keybindings.

Since this is an experiment, I won't be investing into making a proper PCB so hand-wiring will be sufficient even in the long-run. I'll look into developing a PCB if the layout turns out to be a success.

Before that phase, it will most likely go through several iterations. The layout is definitely going to be the biggest challenge. I already changed it more than a dozen times over the last year and a half I was learning about layouts and playing with KeyboardLayoutEditor.

The non-standard layout is necessary because I want to improve specific things about standard staggered layout that have been bothering me, without jumping on the full ergonomic-layout train. Major changes will have to be made for certain keys, which in turn makes it incompatible with vast majority of custom keycap sets out there. Personally, it's no biggie since my goal is to use uniform XDA keycaps.

I plan on making the case from scratch using a couple of materials, at least that's the idea right now. Ideally I'd like it to be easy to assemble and disassemble, which might be tricky pull off while trying to retain the sturdy build. We'll see how that goes when I get to that part.

# Closing words

Overall, this project will take a while to complete. Big part of it depends on how viable and practical my ideas are, and when I'll receive keycaps and stabilizers that I have yet to purchase. The excitement is real, but I'm not in a rush because I want to do this project properly.

I'll be going over everything in more detail in separate posts, and the links will be added below as I address each individual problem. Here's the list you can follow:

  1. Finalizing the layout
  2. Mounting plate and case mockups
  3. Building the first prototype
  4. Giving it life with QMK firmware
  5. Completing the build