Skip to the content
2 layers31 × 39 mmDpad, the printed circuit board in 3D

Custom controller hardware for ALT.CTRL.GameCraft 2023

Size
31 × 39 mm
Copper layers
2
Thickness
1.6 mm
Parts
9
Nets
5
Pads
25
Tracks, vias
18, 0
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
21 Sep 2023
Updated
28 Jul 2026

Overview

Dpad is an open-source printed circuit board by micktwomey, from the micktwomey/alt-controller-jam repository on GitHub, published under the MIT licence. It is a 2-layer board of 31 × 39 mm with 9 parts on 5 nets, routed with 18 tracks and 0 vias.

Its parts include 4 switches and 1 connector.

README

README.md

CTRL.ALT GameCraft 2023

Repo holding the hardware and code behind the controller components used in https://www.gamecraft.it/events/altctrljam-2023/

Hardware

Button pad hardware render

A Raspberry Pi Pico running CircuitPython acts as a HID keyboard device.

Two (or more) button pads are connected to the Pico using jumper cables. Each button pad has 4 buttons.

You can position these anywhere you want on an alternative controller. Embed them in cardboard, stick onto things, etc.

KiCad is used to design the boards. You can even see me following the tutorial in kicad-tutorial!

JLCPCB was used to print the boards. Elbow grease and lots of solder was used to assemble the boards.

The schematics can be found in dpad.

Software

The Pico runs CircuitPython and uses Adafruit's HID library to emulate a keyboard. It's also possible to emulate a mouse and a gamepad (there are some experiments for gamepad emulation in experiments).

Code execution order:

  1. boot.py is run once on board startup to configure it. Here we enable keyboard emulation. If you change this you need to unplug and plug the board back in. If you want to pretend to be a mouse or gamepad this is where you do it.
  2. Next code.py is run to configure the button mapping and listen for events. Editing this should immediately restart the code and use your changes. If you need to change the button mappings this is where you do it.

When running the library code lives in lib on the pico but lives in src here in GitHub.

Building and Deploying to a Pico

just is used to run the build and deployment steps.

poetry is used to manage local tool dependencies. It's also used to install libraries into your development environment, but these won't allow you to run the code on your desktop. They're primarily intended to allow for error checking.

Note that the default paths in the justfile are Apple Mac defaults, you'll need to adjust them for your machine.

  1. To install dependencies: poetry install
  2. To build: just build
  3. To flash CircuitPython onto a Pico:
    1. Hold down the bootsel button on the Pico while plugging in the USB cable into your machine
    2. Keep holding it down until a RPI-RP2 disk is mounted
    3. Run just install-firmware
  4. To deploy the built code onto the pico: just deploy

You can make this process a little more efficient using:

  1. Run just watch to see which disk is mounted
  2. After plugging in the pico use just install-firmware && just deploy && just eject in another terminal to flash the firmware and install the code in one step.

Setting Up

If you're using mise it should activate automatically.

Otherwise you need uv and just installed.

Parts

9
QtyValueFootprintReferences
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
4SW_Push_DualButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4
1Conn_01x05_SocketConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ1

More from micktwomey/alt-controller-jam

1
  • 2 layersController, the printed circuit board in 3D

    Controller

    micktwomey/alt-controller-jam

    Custom controller hardware for ALT.CTRL.GameCraft 2023

    30 parts1MIT

Similar boards

  • 2 layers103 × 30.5 mmTS Back Endcap, the printed circuit board in 3D

    TS Back Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    9 parts1.3kMIT
  • 2 layers31.8 × 47.6 mmNGC 38 connector, the printed circuit board in 3D

    NGC 38 connector

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    9 parts1.2k
  • 2 layers24 × 27.3 mmExpansion Card Retrofit, the printed circuit board in 3D

    Expansion Card Retrofit

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    9 parts1.1kCC-BY-4.0
  • 2 layers15.6 × 17.3 mmSKR Mini TFT Thermistor Board, the printed circuit board in 3D

    SKR Mini TFT Thermistor Board

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    9 parts1.1kGPL-3.0
  • 2 layers39.1 × 49.5 mmLearnoliver, the printed circuit board in 3D

    Learnoliver

    hackclub/OnBoard

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

    9 parts915
  • 2 layers17.4 × 16.9 mmToolhead, the printed circuit board in 3D

    Toolhead

    tanaes/whopping_Voron_mods

    9 parts787GPL-3.0
  • 2 layers9.8 × 108 mmExpander, the printed circuit board in 3D

    Expander

    wntrblm/Castor_and_Pollux

    A Juno-inspired dual oscillator

    9 parts587
  • 2 layersKeyboard after, the printed circuit board in 3D

    Keyboard after

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    9 parts547GPL-3.0

Questions

How big is the Dpad PCB?

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

What parts does the Dpad use?

9 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 Dpad KiCad files?

From the micktwomey/alt-controller-jam repository on GitHub, at the commit this page was made from: the board is dpad/dpad.kicad_pcb and its schematic controller/controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Dpad design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).