Go Back

Input Peripherals

Repo

General Info

Keyboard

A keyboard simply converts keystrokes (user input) into input commands, usually by stringing together a collection of character inputs.

Beyond the simple function of registering keystrokes, everything in the hobby is optimized for sound and feel. As you will see, a common theme for sound improvement comes from dampening/compression, and any form of reduction in rattle/instability.

Keyboard Matrix (Multiplexing)

The keyboard matrix is the fundamental idea behind the operation of any and all keyboard-adjacent input devices.

Keyboard Anatomy

Alt text

source: https://geekhack.org/index.php?topic=125072.0

Component Description
Case Houses the keyboard
Plate Found in most keyboard designs. It provides stability to the PCB-Switch assembly
Keyswitch The user interfaces with the keyswitch to register inputs
PCB Connects the electronic components of the keyboard
MCU The brains of the keyboard. Often integrated into the PCB

Case Design

Layout

The layout determines the general form factor of the case.

Mounting System

The way the PCB-switch assembly are housed within the case.

Courtesy of https://www.keyboard.university/200-courses/keyboard-mounting-styles-4lpp7

Switches

Keyboard switches are a very intriguing corner of the keyboard hobby, filled with some of the most bizarre naming schemes out of any hobby I’ve been a part of. The Keyboard switch rabbithole is vast and deep. Switch selection may impact the design of your pcb (potentially even the case), as switches may possess a unique form factor that you need to account for.

Switch Types

Cherry MX Style

Invented by Cherry in the 1980s, the MX style switch became the gold standard high-end switch solution. The MX style switch was a major innovation because it introduced a modular, customizable, and reliable mechanical keyboard switch. This design enabled a wide variety of tactile and auditory feedback options, and the durability of the switches allowed them to withstand millions of keystrokes. Most of the keyboard ecosystem is built around housing this style of switch.

Switch Anatomy

Alt text Stem: What is pushed down to trigger a key press.
Top Housing & Bottom Housing: Houses the switch assembly
Spring: Dampens the keypress and allows the key to return to starting position on the upstroke
Metal Leaf: Contact leaf that triggers the key input that registers a keypress

Manufacturers: The Switch Market

Cherry MX: The original switch manufacturer. Cherry MX switches come with a signature scratch that people have come to know and love. In a hobby that glorifies smoothness in all aspects of the typing experience, it’s interesting that the uniquely scratchy feeling of MX switches have withstood the test of time.

  • Cherry MX Blacks: MX blacks are an iconic switch, inspiring countless spinoffs such as OP blacks, MX Hyperglide. Old MX blacks (known as “vintage blacks”) that used the 1st gen tooling of Cherry MX Blacks (1984 - 1994) are sometimes harvested from old computers and repurposed due to their improved level of smoothness by nature of being “broken-in” from constant wear. There was also an alleged 1994 retool that made the switch worse in terms of smoothness, making the older MX blacks superior/more valuable in that regard.

Successors: Since Cherry dropped their switch patent in 2004, the manufacturer market has exploded with countless switch variations from a whole host of manufacturers.

  • Gateron: probably the most notorious Cherry MX clone company
    • Milky Yellows, Deeping, Oil Kings, Black ink
  • Other Manufacturers: Kailh, JWK/Durock, KTT, Tecsee, Outemu, SP-star, Akko, BSUN/YOK, HMX, Everglide
Frankenswitches

Combining components from various switches to create a completely unique switch
Notable examples: Black Cherry Pie, Creamsicle, Zyko, Holy Boba, Holy Panda

ℹ️ Honorable Mentions
NK creams, Holy Pandas (Spinoffs: GOK Pandas, Glorious Pandas), Boba U4T, Tangies

Other Switch Types

Less popular switch types

Low profile

Low profile switches are most often seen in split keyboard builds.
Alt text

  • Choc switches
  • Choc v2

Cherry Ultra low profile
Alt text

Alps

Alt text A popular switch in the 80s and 90s. They became obsolete as Cherry rose in popularity.

  • SKCL (Linear): green, yellow
  • SKCM (Tactile, Clicky):
    • Tactile: orange, salmon, black, cream/ivory, brown, neon green (rare)
    • Clicky: blue, amber, white
  • Clones: Matias
Hall effect

Alt text Uses a magnetic field to detect keystrokes. The switch is gaining popularity in the gaming space, as there is a lot of software configurability as to when to detect inputs depending the distance of travel of the keystroke (along the downstroke and upstroke).

  • Lekker Switches (V2), Black Knight Switches, TTC Magneto Switch, OG Jades, Jade Pros, & Jade Max, Geon RAW HE
EC

Alt text The EC switch uses electrostatic capacitance to register an input. When the switch is pressed, two contact leaves are brought into close proximity. The electric field between the two contacts leaves becomes disrupted when the distance between them changes. This change in the electrostatic capacitance is measured to actuate the key.

  • AEBoards: Navy switches
  • Varmilo: Iris, Sakura, Ivy, Daisy, Rose

Topre
The Topre switch is distinctive, developing a cult following.

Alt text

Sound Profile

Linear: The stem freely moves through the switch cavity, offering a smooth consistent key press. Pretty self explanatory, and the most used form of switch.

Tactile: The signature key feel of a tactile switch is that it offers a tactile bump along the key press. The force actuation curve is nonlinear, in that at the middle of the key press, there is a noticeable point at which a large spike in actuation force is required.

Clicky: Beyond having a tactile bump along the key press, audible click sound is also produced. The click is produced when the key stem comes in contact with a click jacket or click bar along the key press.

Silent: Silent switches have dampening rubber on the feet of the stem and on the shoulders to both silence the bottom out as well as the upstroke.

Switch Materials

Switch material can impact the acoustic resonance of the switch upon key press. Common switch materials include POM, Nylon, HPE, and UMWHE.

Stabilizers

Keys larger than the typical 1u form factor require stabilizers to support the entire length of the key. Stabilizers come in a few styles.

Plate-mount: clip into the plate
PCB-mount: mount directly to the PCB

  • Screw-in: attached to the PCB via screws.
  • Platemount (Clip-in): Clip into the PCB Screw-in stabilizers are the preferred choice as they produce less wobble. In this instance, wobble would mean a less pleasant sound and typing experience.

Owlstabs, Staebies, Durock, TX, Cherry Clip-in

Mods

Modifications on existing components to improve sound and feel.
Modding as an idea rose in popularity around 2020-22. In more recent times, most mods, specifically ones that add foam/dampeners, are often rejected as a cheap/shoddy remedy to the many pitfalls of a poor design or keyboard configuration. People are returning to a more purist approach to keyboard builds by perfecting the basics (little to no foam, properly tuned stabilizers)

Switch Mods

  • Lube: Not so much a mod as lubrication is standard procedure, and many switches come pre-lubed. However, people do prefer to lube their own switches. Common lube choices include Krytox 205G0 (thicker, for linear switches), Tribosys 3203 (thinner, for tactile switches), or a proprietary blend of lubes.
  • Spring swap: stock springs can be substituted for aftermarket options, greatly impacting key feel. Springs can vary in length, actuation force (g), and number of stages (some springs have 2 stages, creating a staged actuation curve). Common spring manufacturers include SPRiT, TX, and Geon.
  • Switch Films: Switch films are sandwhiched between the top and bottom housing of a switch to reduce housing wobble/vibration.
    -“Broken-in”: Switches can be preemptively pressed for tens of thousands of keystrokes before being sold, to physically smoothen the switch mechanical friction (like how a river stream smoothens river rocks).
  • Switch pads: Poron pads that are placed between the PCB and the switch to reduce key wobble. Switch pads are a less popular mod that came as a biproduct of the foam craze that seeks to dampen and deepen a keyboard’s sound signature by any means necessary.

Stabilizer Mods

  • Holee
  • Band-Aid

Case Mods

  • Forcebreak
  • Tempest Mod
  • Gasket
  • Silicone

Firmware

QMK

My fork of QMK
Quantum Mechanical Keyboard (QMK) firmware is an improved version of the TMK firmware made by Hasu, with improved programmability and microcontroller compatibility. VIA builds upon QMK by offering a GUI with simplified/graphical layout firmware configuration and additional features such as plug and play (no flashing), RGB controls, switch tester, etc. QMK is general suitable for wired keyboard designs that employ Atmel AVR and ARM architecture. https://www.reddit.com/r/MechanicalKeyboards/comments/hjh61v/what_is_qmk/

ZMK

My fork of ZMK
ZMK Firmware is an open source (MIT) keyboard firmware built on the Zephyr™ Project Real Time Operating System (RTOS). ZMK’s goal is to provide a modern and powerful firmware that is designed for power-efficiency, flexibility, and broad hardware support. ZMK is capable of being used for both wired and wireless input devices. ZMK is easier to implement and support both wired(unibody) and wireless options ZMK is has greater compatibility, notably in wireless applications. However, users say ZMK lags slightly behind in terms of ease-of-use features. There is also TMK and KMK. TMK is mostly deprecated, and is a Circuit Python keyboard firmware. ZMK and QMK are the more common options.

Mouse

A mouse provides cursor control to navigate and interact with display elements.

Motion Sensor

The motion sensor is at the core of mouse function. It converts physical mouse movement to cursor movement. The sensor tracks translational movement, polling at a high frequency.

huano

Laser sensor: motion tracking via lasers. Largely obsolete by modern standards.
Optical Mice: motion tracking via LEDs

Sensor Description
mx8650 Firmware
pmw3360  
Pixart paw3395  

Switches

huano

Omron D2F-01
Kailh GM2.0
Huano

  • Blue Shell Pink Dot
  • Transparent Red dot

TTC 80M, TTC gold
Zippy DF3P1
Kailong

Firmware

The open-source support from the community is far more limited for mice. https://github.com/biomurph/Mouse

MCU Selection

An MCU (Microcontroller Unit) is the computer commonly found in integrated circuits (ICs) that contains a processor core, memory, and programmable I/O peripherals. It is the brain of embedded systems, controlling various features and operations.

ISA (Instruction Set architecture): Defines the instruction set (the machine “language”) a processor can understand. Examples: ARM, RISC-V, AVR

Framework: A collection of libraries/packages/toolchains that enable development. Framework compatibility depends on the MCU’s processor core ISA and communications protocols. Examples: Arduino, Zephyr, Tensilica Xtensa

ESP32

  • Core: Dual-core Tensilica LX6 processor (up to 240 MHz)
  • Flash: Up to 16MB (depending on variant)
  • RAM: 520KB SRAM
  • GPIO: 34 digital I/O pins, with support for PWM, UART, SPI, I2C, ADC, DAC, etc.
  • Wireless:
    • Wi-Fi (802.11 b/g/n)
    • Bluetooth 4.2/Bluetooth LE
  • Communication:
    • I2C, SPI, UART, CAN, SDIO
    • PWM, DAC, ADC (12-bit)
  • Power: Multiple power modes for efficiency (can go as low as 5uA)
  • Extras:
    • Built-in touch sensors
    • Integrated hardware cryptographic accelerators (e.g., for secure boot, SSL)
    • RTC for time-keeping
  • Compatibility: ESP-IDF, Arduino framework, MicroPython

Built-in Wi-Fi and BLE with decent performance for wireless peripherals. Power draw is high for battery-powered designs and GPIO matrix limitations require careful planning.

Alt text

Microcontroller Description
Seeed Studio XIAO ESP32C3 Compact, minimal
ESP32-DevKitC A versatile development board with multiple I/O options.
ESP32-PICO-KIT Features a small footprint with essential peripherals.

ATmega32U4 (AVR family)

  • 8-bit AVR architecture
  • 32KB Flash memory for program storage
  • 2.5KB SRAM
  • 1KB EEPROM
  • USB: Built-in USB support (for HID, CDC, etc.)

Widely used in keyboards (e.g. Pro Micro) due to native USB HID support and strong support in QMK. Limited in RAM and speed, making it less ideal for wireless or complex peripherals.

Microcontroller Description  
SparkFun Pro Micro A compact board with a 5V/16MHz configuration, widely supported in the keyboard community g
Teensy 2.0 Known for its robust USB capabilities and compatibility with various keyboard firmware.  
Adafruit ItsyBitsy 32u4 Offers a small footprint with additional GPIO pins, suitable for space-constrained designs.  

RP2040 / RP2350

  • Core: Dual-core ARM Cortex-M0+ (up to 133 MHz)
  • Flash: 2MB of onboard QSPI Flash
  • RAM: 264KB SRAM
  • GPIO: 26 digital I/O pins, with support for PWM, UART, SPI, I2C, ADC
  • Communication: I2C, SPI, UART interfaces
  • USB: Native USB support (can act as USB device or host)

RP 2040: Dual-core, high-performance MCU with lots of GPIO and flexible PIO for custom protocols. No built-in USB HID bootloader or wireless, but great for wired designs with custom behavior. RP 2350: Designed to build on RP2040 strengths with better wireless and security

Alt text

Microcontroller Description
Arduino Nano RP2040  
​Waveshare RP2040-Tiny  
Raspberry Pi Pico  

nrf52480

  • Core: ARM Cortex-M4 (up to 64 MHz, with a floating-point unit)
  • Flash: 1MB flash memory
  • RAM: 256KB SRAM
  • GPIO: 48 digital I/O pins, with support for PWM, UART, SPI, I2C, ADC
  • Communication:
    • I2C, SPI, UART, PWM
    • ADC, DAC, PDM (Pulse Density Modulation)
  • Power: Very low power consumption (typically in the uA range during sleep modes)
  • Wireless:
    • Bluetooth 5.0 (BLE) (supports BLE, Bluetooth mesh, and direction finding)
    • Thread and Zigbee
    • Supports 2.4 GHz proprietary protocols (e.g., for custom wireless protocols)
  • Extras:
    • USB 2.0 device support. USB HID support
    • Built-in hardware encryption for secure communications (AES, ECC)
    • Real-Time Counter (RTC) support for time-critical applications
  • Compatible Frameworks: Nordic SDK, Zephyr OS, Arduino, Mbed OS, MicroPython (community-supported)

Built-in Bluetooth Low Energy (BLE) support. Ideal for wireless keyboard projects requiring Bluetooth connectivity (ZMK firmware support)

Alt text

Microcontroller Description
nice!nanov2  
​Seeed Studio XIAO nRF52840 ​Compact
​Adafruit Feather nRF52840 Express  
​SparkFun Pro nRF52840 Mini  

STM32 Family

  • Core: ARM Cortex-M cores (M0, M0+, M3, M4, M7, M33, etc.), with a variety of clock speeds and performance levels.
  • Flash Memory: Varies from small (16KB) to large (up to 2MB) flash memory options, depending on the series.
  • RAM: Varies from small (4KB) to large (up to 1MB) SRAM.
  • GPIO: A wide range of GPIO pins, usually between 16 and 100+ pins.
  • Communication: Supports many communication interfaces like I2C, SPI, UART, CAN, USB, and Ethernet, depending on the series.
  • Power: Offers various low-power modes to extend battery life in portable devices.
  • Extras:
    • Timers: Numerous general-purpose and advanced timers for PWM, motor control, and time-critical applications.
    • Analog: Typically includes ADC (up to 12-bit), DAC, op-amps, and comparators.
    • Security: Some models include cryptographic accelerators, secure boot, and hardware random number generators.
  • Compatible Frameworks: STM32Cube, HAL (Hardware Abstraction Layer), Arduino (via STM32 core), FreeRTOS, and Zephyr OS.

Versatile ARM-based family with options that support USB HID. Steeper learning curve and less community support for keyboards compared to ATmega/RP2040, but good for custom wired builds.

Alt text

Microcontroller Description
Blue Pill (STM32F103C8T6) Affordable and widely used in DIY projects.
Black Pill (STM32F411CEU6) Provides higher performance with more memory and faster processing.
STM32F072 Nucleo Features native USB support, beneficial for HID devices
STM32 Nucleo-32 Compact board with Arduino Nano compatibility

Honorable Mention: Teensy microcontrollers

Teensy 4.0

  • NXP iMXRT1062 microcontroller chip
  • Core: ARM Cortex-M7 processor operating at 600 MHz.

Alt text

A very capable microcontroller



Keyboards

I initially fell into the keyboard hobby during COVID when I was glued to my desktop and keyboard like most folks. My interest in industrial design aesthetics and boundless creative expression has led me on a long creative path of keyboard design.

Design Inspiration



Hand-wired Macropad

Alt text

Specs

For my first design, I kept it simple.

  • 4x4 Matrix
  • Unibody construction

Model

Layout

Alt text

Components

Component Description
Pro Micro nRF52840 Cheap alternative to nice!nanov2. BLE and lipo charging capability
DO-35 IN4148 High-speed Switching Diodes Prevent ghosting (when multiple, unintended key presses register as a single press when multiple keys are pressed simultaneously. Diodes ensure that the current only flows in one direction, preventing unintended paths through the matrix when multiple switches are closed)
Heat shrink Electrical isolation between rows and columns
1.5mm Bare Copper wire Wiring to form rows and columns
JWK Black T1 Tactile Switches Switches
250 mAh LiPo Rechargeability
Housing 3D printed using PLA

Pin Mapping

Alt text

Build Log

4-10-25: Resized to fit a battery

3-25-25: Added keycaps

Alt text

3-20-25: Completed the wiring

Alt text

3-18-25: Hot-glued the switches in place

Alt text

3-14-25: Made dimension modifications better suited to the design

Alt text

8-21-24: Test fit JWICK tactiles

Alt text


Macropad with PCB

PCB

KiCAD Alt text

Build Log

4-11-25: PCB Prototype

macro-pcb-proto


Ergo Split

Alt text

Specs

  • Low profile switches
  • Tenting via magsafe phone stands
  • Ergonomic splayed key spacing

Components

Component Description
Magsafe phone stand x2 Tenting
Magsafe ring x2 Placed on keyboard to magnetically bind to stands
Choc Purple Switches Switches
250 mAh LiPo Battery x2 Rechargeability
Housing 3D printed using PLA

Layout

Alt text

PCB

Designed in KiCAD Alt text

Build Log

3-14-25:

Alt text


Ortho

Sleek

Alt text

Specs

  • Ortholinear key spacing
  • Ultra low profile switches

Components

Component Description
Housing 3D printed using PLA

Layout

Alt text

PCB

Alt text

Build Log

3-14-25:

Alt text


40% with Fkeys

A 40% keyboard with extra flare.

Alt text

Specs

  • Layout: 40% with function keys left side
  • PCB: mill max sockets
  • Case
    • thin side bezels
    • 2 piece construction
    • top mount
    • rectangular rubber feet
    • low front height (cherry lip)

Components

Component Description
1.5mm Bare Copper wire Wiring to form rows and columns
JWK Black T1 Tactile Switches Switches
250 mAh LiPo Battery Rechargeability
Housing 3D printed using PLA

Layout


Alt text

PCB

Designed in KiCAD

Alt text

Build Log

4-12-25: Prototype schematic revision 0

MCU Schematic Key Matrix
Alt text Alt text

4-10-25: Initial CAD prototype

Alt text


HHKB

My take on the classic HHKB layout

Alt text

Specs

Components

Component Description
1.5mm Bare Copper wire Wiring to form rows and columns
JWK Black T1 Tactile Switches Switches
250 mAh LiPo Rechargeability
Housing 3D printed using PLA

Layout

Alt text

PCB

Alt text

Build Log

3-14-25:

Alt text


Modular Keyboard

Fully modular keyboard, with each keyswitch being a singular unit. A lego keyboard, if you will.

Concept

Modular keyboard concept sketch

Specs

Build Log

4-11-25:

macro-pcb-proto



Mice

Ultralight Mouse

Chasing performance.

Alt text

Specs

PCB

Alt text

Firmware

Build Log

4-29-25:

Alt text


Chimera

A Keyswitch Mouse
Injecting keyboard DNA into the mouse peripheral Alt text

Concept

Alt text

Specs

4 choc keyswitches
Capacitive scroll wheel

PCB

Alt text

Firmware

Build Log

4-28-25:

Alt text


Macros Mouse

How many useful buttons can I fit on one mouse?
Alt text

Concept

Specs

PCB

Firmware

Build Log

3-14-25:

Alt text



References

Keyboard

https://www.keyboard.university/
https://www.deskthority.net/
https://www.theremingoat.com/
https://www.alexotos.com/category/keyboards/
https://geekhack.org/
All the Parts of a Mechanical Keyboard Explained by Das Keyboard Staff

Design Language
Endgame Never Felt So Close - My TGR Jane V2 ME Experience by Wongsquared
Gehirn / Keyboard Preview by Markchun

Switches
Cherry MX Vintage Black Review: A Modder’s Dream, Criminally Misunderstood
Teardown - Alps SKCL/SKCM switches by Chyrosran22
The Comprehensive Switch List - Official Version
The Best Mechanical Keyboard Stabilizers - 2025 by Alexotos
Varmilo EC Switches. Better Than The Rest.
Frankenswitches by AidanSmith.dev

Split
“The REAL Ergonomic Keyboard Endgame!” — How To Design & Make A Totally Custom Keyboard
My favorite ergo split keyboard so far by EIGA
The TOTEM wireless keyboard by EIGA
I Built My Dream Keyboard from Absolute Scratch by Christian Selig
mask-2.0.0 4x6 Split keyboard with Cherry MX-ULP keys
Non Nemo Chimera + Case
Lily58 Choc with touchpad — my first keyboard assembly
A beautiful arc in my memory — Phekda.
Bayleaf Wireless Keyboard Build
There is no end game.

Macropad
How to Build a Handwired Keyboard by Joe Scotto
How to Design Mechanical Keyboard Plates and Cases
Statial Macropad by PyottDesign
Magicforce MF17 Dual Mode Wireless Numeric Keypad

Ortho
I designed this over the weekend. Thought it turned out kinda cool?

Mice

I built a mouse from scratch with 3D printing and Arduino by Ben Makes Everything The worlds lightest gaming mouse PCB by Patrick Schmalzried I Made the Worlds LIGHTEST Mouse (Wireless) by Juskim JEE600 in clusterfudge status (expected, really)
My Mouse Projects So Far…
LOFREE Touch
2023 Top Six Latest Mouse With Unique Features: Hot-Swappable Switches, Unique Designs, and More!! key switches mouse

Sources

1 [^2] [^3] [^4] [^5] [^6]

  1. K. Ogata. Modern Control Engineering. Pearson, 2010.