Designing a custom keyboard is easier than ever, but there is still a number of hours work to get a product that's even halfway usable.
Once you have your initial layout set out you can move onto getting a circuit board designed and printed up. This isn't strictly required as you can just solder the switches into rows and columns with wire, but it does allow you to build a keyboard without a mounting plate (but you'll need one or the other, and ideally both).
The cheapest (free) and easiest (for a given value of easy) way to get your circuit laid out is using KiCad. Once you have KiCad the initial design steps are exceedingly quick, as a keyboard matrix is just a pile of switches with diodes (to help avoid ghosting). To make life easy you can draw out a single switch circuit and copy it to get the required volume of switches.
Each key requires four things: a switch, a diode, and two junctions. To make the PCB design stage easier it's a good idea to give each switch and diode meaningful names, as is done here for the switch.
Once you have the first switch drawn out you can copy out a column, and then copy the column to make a block, and the block to make enough for the whole board. Once you have a whole pile of switches, name them, connect up the junctions into rows and columns, delete the ones you don't need, and the schematic is done.
Note: you can also add a controller and LEDs to the schematic, but they aren't strictly needed.
Once the schematic is done it's time to design a PCB. The first step is to generate a netlist (). With a netlist generated you now want to Run CvPCB, this is where you assign a footprint to each component on the schematic (at this point you'll thank yourself for taking the time to give everything a meaningful name). KiCad comes with a built-in footprint for the diodes, but you'll either need to create your own footprint for the key switches or source some (The KiCAD-Keyboard-Tutorial is a good start).
After linking everything to an appropriate footprint it's time to import them into PCBnew, opening up PCBnew will give you a blank A4 sheet, so if you're laying out something larger than a 60% keyboard you'll want to switch to A3 in the Page settings (). Using Read netlist () will import the appropraite footprints you assigned in CvPCB and spit out something that looks like this:
Having all the components stacked on top of each other makes life a little difficult, but luckily KiCad provides a way to spread out the footprints, with Mode footprint () on, right-click an empty section of the sheet and select Global Spread and Place -> Spread out all Footprints, then select Yes.
Note: Enter on the keyboard is recommended as the mouse pointer is used as the origin point for arranging the footprints
Now that you have everything where you can see it, it's time to arrange the footprints as you actually want them, it's worth turning the Ratsnest () off for this step as it just gets in the way. Arranging the footprints can be a little tedious, but using T will let you grab a component by reference, so it's easy to assemble a switch + diode component.
Once you have the components laid out to match your design it's time to draw some traces and the edge cut. For drawing out the traces you'll want to switch the Ratsnest () back on, as this is essentially just replacing the wires with traces that connect the same points. Once your traces and edge cuts are laid out your circuit board design is done and ready for exporting to gerber.