/custom-keyboard

This repository contains useful info about making custom keyboards, which I find during creating my custom keyboard.

MIT LicenseMIT

Custom split keyboard

This repository contains useful info about making custom keyboards, which I find during creating my custom keyboard. First are some useful links about building keyboards, components, shops, ... Second my notes about building keyboard and last some information about software on pro micro like creating keyboard layout or flashing.

Useful links

Below is some useful information about parts of the keyboard. Every section ends with a few useful links. Links, related to some parts it's in these parts.

PCB

If you want to have a slim keyboard (or you just want a PCB for your keyboard), you will need PCB. You can buy one or design it.

Microcontrollers

There are a few options, Arduino Pro Micro with Atmega32, STM32, Elite C microcontroller (like Pro Micro, but with USB C and some other improvements)

Shops

  • splitkb
  • Alternatively as usual amazon and eBay

If you want to buy a split keyboard for yourself:

Switches

About switches are on the web lot of information and opinions. For build is this information unimportant, but if you are building a keyboard, check it and if you can test what is best for you.

It's good to buy some nice and comfy keycaps. I'm ignoring this theme here, but if you want to know more, check this site, or just use google, you can find a lot of articles about it.

Building keyboard

This section contains information about keyboard building.

Whats you need

  • switches
  • keycaps
  • microcontroller or two if you build a split keyboard(arduino pro micro in my case)
  • diodes (to avoid ghosting)
  • USB cable for power
  • PCB or wire for connection
  • keyboard case
  • if you want to build a split keyboard: TRRS, RJ9 or I2C connectors and cable

Building keyboard

Solder keyboard is relatively easy, but it's a lot of soldering. Just hold on wiring schema and everything will be ok.

Wiring

Wiring is simple it's only a matrix of key switches. If you want to, you can check QMK hand wiring documentation. There is some very useful information. For information about split keyboard connections, QMK has documentation for this too.

Below is the image of wiring for a right hand. The image is from the bottom of the keyboard. If you want the wiring of the left hand, you can mirror this image.

Image of wiring

But be careful, if you have arduino pro micro, pins have different names, which can be confusing and in QMK code must be used pin names from spark pro micro (example of pin names is in code in section pro micro software). If you want to know the relation between pro micro and arduino pro micro pins names, check this.

Tutorials

If you want some detailed tutorials, here is a nice guide about building your dactyl keyboard. You can also check this tutorial. If you rather see a video, you can check this.

Pro micro software

In this section is some info about pro micro software. I'm using QMK firmware. If you are solder your matrix to different pins, you can change them in code with:

#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4 }
#define MATRIX_ROW_PINS { F6, F7, B1, B3, B2 }

Can be also used only for only one side with append define name with side. For example MATRIX_COL_PINS_RIGHT.

Bootloader

Some peoples do not like the default pro micro bootloader Caterina. You can replace it with another. I recommend QMK DFU (here is the guide) which is extended by a few functionalities against default DFU, but you can use it too (one guide is here).

Keyboard layout

Having a good keyboard layout is essential. You can have all your shortcuts near to your finger positions. You can use your normal keyboard layout, but why? About my keyboard layout, I`m writing here, but the text is in Czech. That's my native language and have some specific needs. So if your native language is English or you write primarily in that language, you can check Dvorak or Colemak (or lookup for other ones) keyboard layout. But be careful, these layouts are optimized for frequently used characters in English not in other languages.

QMK has a simple layout creator, you can use it to create and test your keyboard layout. This site also can compile QMK with your layout to hex file or you can only download layout in .json.

To translate .json keyboard layout to .c can be used this side. It's useful when you want to compile and flash your layout by the make of QMK CLI.

Here is a list of keycodes for QMK keyboards or if you want it in Github README then check here

Flashing keyboard

For flash your keyboard you can use QMK Toolbox (but it is not available on Linux) with GUI, QMK CLI or make a file in the qmk repository

QMK CLI

sudo qmk flash -kb <keyboard> -km <layout>

If you want to compile to the hex file, you can use compile instead of flash.

Make:

sudo make <keyboard>:<layout>:flash

You can also use make without flash for compilation.

QMK CLI have dependency on avr-gcc but be careful, it's recommended to have it in version 8.x. I have no problem with the newest version, but it's good to know.

Conclusion

Allow me please a few words on the end. First I'm sorry for my English, it's crappy, but I'm trying my best.

Second building your keyboard is fun, but sometimes things can go wrong. I have luck and do everything right on the first try, but some peoples write about they messed up this or that. So, it's happened. Don't be upset or sad about that. This is an experience too and next time, you will do it right.

And if you want to check my custom dactyl keyboard, the picture is below.The body is 3D printed and a little bit sanded, but I'm too lazy to do it properly. Maybe next time I will. Or not, I'm really lazy.

Picture of my keyboard