Designing the PCB
Probably this will take up most of your time.
Setting Up KiCAD
Just grab the latest version of KiCAD from their website.
You should also install marbastlib, which is a library that allows you to use common keyboard-related components on your PCB.
Designing Your Schematic
The first step is to place the symbols that will be used. This is probably RaspberryPi_Pico, SW_Push, MX_stab, and 1N4148 (you will see where this comes in).

Do you take the red or the blue pill?
Since a full-sized keyboard has 104 keys, and our Pico only has 29 GPIO pins, we need to use a keyboard matrix, which allows us to use only one pin per row and one pin per column instead of one per switch.
For us to make a matrix, we need to use diodes (we placed them down earlier, the 1N4148).
I will not go through how a matrix exactly works, but here is a really good explanation.
The basic thing is that you need to connect a diode in series to your switch:

Then, with these units, you need to replicate the layout of your keyboard from your sketch. For example, I replicated the layout of this keyboard I found on Reddit.


Then you should connect all of the rows and columns to the Pico. I used labels for this:

Now we need to add the stabilizers. Continuing the previously shown schematic, I only need to use three 2u stabilizers, because you only need to use stabilizers if the keycap is equal to or larger than 2u.

We also should add some mounting holes if we want to go with a tray mount style keyboard. There are a bunch of mount types you can use, and each one gives a different feel:

As a final step, you should annotate your schematic:

Assigning Footprints
Now that you are done with your schematic, you need to assign footprints to your symbols. Use the Assign Footprints icon.

For the Pico, use the Module:RaspberryPi_Pico_Common_THT footprint.
Select all the diodes and assign them Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal footprints.
Then select all the switches and assign them PCM_marbastlib-mx:SW_MX_1u footprints.
For the stabilizers, use the PCM_marbastlib-mx:STAB_MX footprints.
4. Designing Your PCB Layout
When you import your schematic into your PCB, it should look something like this:

Now we only need to arrange our parts. Here are some tips that will make your life a bit easier.
You should use a grid spacing of 0.79375mm; this way everything should just snap in the right place:

Use the Geographical reannotate feature, which allows you to copy and paste footprints, and then annotate them afterwards so they line up with the schematic:

Your PCB should look something like this after it’s all laid out:

For routing, you should use one layer for horizontal lines and one for vertical lines. This makes it a lot easier to route. This is not a strict rule, but you should follow it.

The USB port of the Pico should also hang off the PCB a little. This will make it easier to connect a USB cable:

And it should look like this after you route it. I added a GND fill, but that’s optional:

After you add all the 3D models, it should look something like this:

Next Steps
Now that your PCB is designed, move on to Designing the Case.