Skip to the content
PCBKitNew board
2 layers100 × 100 mmMacropad, the printed circuit board in 3D

A custom Macropad designed for League of Legends gameplay

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
52
Pads
137
Tracks, vias
51, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
8 Jul 2026
Updated
25 Oct 2026

Overview

Macropad is an open-source printed circuit board by anw6002, from the anw6002/macropad repository on GitHub. It is a 2-layer board of 100 × 100 mm with 12 parts on 52 nets, routed with 51 tracks and 0 vias.

It belongs with the keyboards and input boards and the RP2040 boards of this library.

README

README.md

Custom Hot-Swappable Macropad for League of Legends

Table of Contents:
Overview · Hardware Design · PCB Specifications · Hardware Components · GPIO Mapping · Technologies· Button Module Specifications

macropad_pcb

Overview

This project implements a custom USB macropad using the Raspberry Pi Pico. The macropad is designed for League of Legends, providing dedicated QWER ability keys, DF keys, and rotary encoder for volume controls. The firmware is written in C using the Raspberry Pi Pico SDK, and the final hardware is designed in KiCad and manufactured as a custom PCB.

There is a planned joystick expansion for character movement using League's new WASD support. Up to 20 additional keys will be included in the expansion.

Hardware Design

The PCB is designed in KiCad for a Raspberry Pi Pico-based USB HID macropad (also compatible with the Raspberry Pi Pico 2). The board is intended to support six mechanical keyboard switches, with hot-swap sockets for easier switch replacement. The PCB will connect each key to a dedicated GPIO pin, with the switches sharing a common ground. The PCB design will accommodate a rotary encoder with push button for volume-control functionality.

PCB Specifications

  • EDA software: KiCad 10
  • Microcontroller: Raspberry Pi Pico
  • Input switches: 6 mechanical keyboard switches
  • Switch mounting: Kailh CPG151101S11 hot-swap sockets
  • PCB layout: Custom-designed PCB with a 4-key top row and 2 additional keys on the right side
  • Enclosure: Custom 3D-printed case (planned)
  • Connectivity: USB through the Pico's onboard connector
  • Firmware: C using the Raspberry Pi Pico SDK and TinyUSB

Hardware Components

ComponentPurpose
Raspberry Pi PicoMicrocontroller and USB HID interface
Kailh CPG151101S11 hot-swap socketsAllow switches to be replaced without desoldering
MX Mechanical keyboard switchesPhysical key inputs
Custom PCBMounts switches and microcontroller connections
Header pins / socketsConnects the Pico to the PCB
3D-printed enclosureHouses and protects the assembled macropad
Rotary encodervolume control knob

GPIO Mapping

KeyPico GPIOPhysical Pin
QGP0102
WGP0507
EGP0912
RGP1520
DGP1317
FGP1419

The switches use a shared ground connection, with GPIO internal pull-ups intended to be enabled in firmware.

PCB Development Roadmap

  • Create the initial schematic
  • Assign initial switch footprints
  • Import the schematic into the PCB editor
  • Finalize component placement and board outline
  • Verify switch socket and Pico header footprints against physical components
  • Route PCB traces
  • Run electrical and design-rule checks
  • Generate manufacturing files
  • Manufacture and assemble the PCB
  • Design and print the enclosure
  • Test the assembled macropad

The PCB is a work in progress. Footprint compatibility, electrical connections, clearances, and manufacturing outputs must be verified before fabrication.

Project Roadmap

  • Prototype button circuit on a breadboard
  • Test each switch and verify wiring
  • Develop firmware for button detection and debouncing
  • Implement USB HID keyboard functionality
  • Add macro support
  • Add rotary encoder functionality
  • Design the schematic in KiCad
  • Route and manufacture the PCB
  • Assemble and test the final board
  • Design and print a case

Technologies

  • C
  • CAD (3D Printed Case)
  • Raspberry Pi Pico SDK
  • TinyUSB
  • KiCad
  • Git
  • VS Code

Button Module Specifications

Purpose

The button module provides an interface for initializing and scanning the macropad's pushbuttons. It abstracts the GPIO hardware and
reports button press and release events.

Functional Requirements

  • Initialize all configured GPIO pins as digital inputs.
  • Enable the Raspberry Pi Pico's internal pull-up resistors.
  • Scan all buttons periodically.
  • Detect button press events.
  • Detect button release events.
  • Generate exactly one press event for each physical press.
  • Generate exactly one release event for each physical release.

Assumptions

  • Buttons are active-low.
  • One side of every switch is connected to a GPIO pin.
  • The opposite side is connected to ground.
  • Internal pull-up resistors are enabled.

Button Debouncing

This Macropad utilizes MX Mechanical Keyboard switches that connect the GPIO pin to GND when pressed.

When pressing a mechanical keyboard switch, metal contacts in the switch can briefly bounce, causing a short duration in which the microcontroller reads a rapid fluctuation between HIGH (1) and LOW (0) for the pin. Debouncing is implemented to make sure a single button press does not register as multiple events.

Software debouncing filters out these transient fluctuations by accepting a state change only after the button state has remained stable for a set amount of time, preventing a single physical press from being registered as multiple events. For this repository's implementation, the debounce timer is set to 10 ms.

Parts

12
QtyValueFootprintReferences
6SW_PushMX_Hotswap:MX-Hotswap-1UD1, E1, F1, Q1, R1, W1
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_UnspecifiedA1
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmvolume_control1

The 8 most common of 12 parts.

Questions

How big is the Macropad PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Macropad use?

12 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Macropad KiCad files?

From the anw6002/macropad repository on GitHub, at the commit this page was made from: the board is hardware/macropad/macropad.kicad_pcb and its schematic hardware/macropad/macropad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Macropad design in my own project?

Its repository states no licence, so its author keeps all rights: ask anw6002 before reusing the design.

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696