How to build your first Mechanical Keyboard

I built my first mechanical keyboard from scratch! Learn how I did it.

Step-By-Step Guide

This is intended to be a high-level overview of the steps required. For more details, please read the tutorial

GitHub Project Source

Project Steps

  1. Create Keyboard JSON Layout
    1. Keyboard Layout Editor
  2. Convert JSON Layout to OpenSCAD Model
    1. OpenSCAD
    2. Board Builder
      1. JSON->OpenSCAD Converter (Python Module)
    3. Write Python script to set up and convert
    4. Make sure you inspect your models
  3. Export OpenSCAD Models to vector format (.dfx)
  4. Add additional features, such as a USB cable hole
  5. Convert vector files for Laser Cutter
    1. .lyz for me
    2. InkScapeLaserDRW Extension
      1. I made sure to add a hole for the USB Cable, could be done with SCAD
  6. Cut boards
  7. Clean and finish boards
  8. Assemble case
  9. Insert switches into faceplate
    1. Ensure they are all facing the same direction
  10. Design Circuit
    1. Keys are in a grid of rows and columns
    2. Find appropriate input/output pins on your microcontroller
  11. Wire switch circuit
    1. Typically a grid of rows and columns with diodes
    2. Diodes must all face the same direction, with the cathode towards the row
    3. Make sure to keep track of the wires
  12. Connect switch circuit to microcontroller
    1. Exact connections will depend on microcontroller of choice and firmware
    2. After soldering pins, use a hot glue gun to attach the microcontroller to the underside of the faceplate
    3. Ensure room for the USB cable
  13. Write firmware
    1. Setup the grid and it’s associated keystrokes
    2. Poll rows and columns
    3. Send appropriate keystrokes to the OS via USB
  14. Test firmware
  15. Final assembly

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s