Making a mechanical keyboard
It started with trying to make my own keyboard. Considering a newly acquired knowledge of designing PCB I thought it would be a simple project. And in some way it is simple, just there are a lot of small quirks that come up as project went on. As of making this post, the keyboard PCB was ordered, and I'm waiting for delivery.
Before the project was started I tried to see if I can buy one of those keyboard PCBs, but for some reason they are quite expensive. On AliExpress there is nothing below 30 euros.

After that realization, I was certain I can make cheaper PCB. That's where the drive for this project started. Moving on, the first problem was knowledge. Well, it seems easy to just wire buttons to a microcontroller in a matrix pattern and upload some code to it.
But how to actually organize key switches?, what kind of key switches?, where to get footprint for those switches?, what kind of PCB design software to use, what's the best microcontroller for the job?, what are the best standards for making all that?
Which question to attack first? Considering that only software for designing I have worked with previously was Easy EDA, I had a goal to learn a new one.
The KiCad.
KiCad is open source, it's widespread, and a lot of resources to learn from. And there are some great repositories where people made our job ten times easier. For example there is Kiswitch keyboard footprint plugin.

It contains all mayor mechanical keyboard switch footprints, and it contains those stabilizers footprints that go on long keys like space bar.
The next problem is putting all those keys in order.
Considering how every keyboard that I had was similar. I'm sure there is some kind of standard for ordering all those keys in the right way. Once again, the job is cut completely by a tool someone else made. It's a plugin for KiCad called Keyboard Footprint Placer. It takes all the keyboard keys and orders them in a particular way, it even connects some traces.

What's the best microcontroller for the job?
Usually people use Atmega32U4 or RP2040. Those two are the most wide spread, but It's possible to use almost any microcontroller that has enough GPIOs. My choice was Atmega32U4, considering that I have an idea of how to program it. Wiring is simple, just connecting all buttons in columns and rows:

Key switch matrix connected, USB-C, ISP pins for programming and that's it. There are a lot of schematics on the internet that can be used for reference.
Picking component packages for easiest assembly. For resistors and capacitors, in my opinion 0805 is a good enough size for handling with tweezers. And for other components. For example Atmega32U4, there is a smaller package that has pins underneath it. I don't like those, because it's harder to solder them, and bridges can occur without you seeing it. The problem is that soldering will be done on both sides, so I have to acquire a hot air soldering station. But maybe hot swaps can be soldered with a regular soldering iron, I'm not sure yet.
Ordering a PCB.
I usually do it with JLC PCB, because I'm most familiar with them. The price for 5 boards is 17,10€. Which is considerably less than those 30€ boards on AliExpress.
For the conclusion. When I see custom mechanical keyboards on the internet, they all look the same. They are bulky and have thick bezels.

I really don't like that style. It's true that mechanical switches have certain thickness to them, but I'm sure it's possible to make them a little less bulky. And those bezels can be barely visible with the PCB I just created. So the next post will be when PCB and all the parts arrive and keyboard is assembled to see if my plan with the keyboard is doable.