EngiPad

Created by [egg splats] • Started on June 20, 2025

The Engineer's Construction PDA from Team Fortress 2, now as a macropad!

Total Hours (at time of submission): 16 hours

back at it with another project :3
this time a quick one!
(dates are again in mm/dd/yy cuz 🦅)

6/21/25 - started planning and designing in KiCad

we locking in for this one 🗣️🗣️🔥

For this Hackpad, I plan to base it off of the TF2 Engineer's Construction PDA, which has 8 switches and a rocker switch.

image

Looking at the model, the macropad can be split into two halves with the split going down the dark grey, with the PCB and electronics on the bottom half and the rest of the case going on top.

image

After I got the general plan down, I started to design the PCB in KiCad, starting with the schematic. I first considered doing a matrix-style wiring for the switches, but then settled on doing direct wiring since the Hackpad microcontroller has enough GPIO to support 8 switches and LEDs and the fact that matrix wiring requires diodes which take up space on the PCB.
I also decided to add on an OLED screen to the macropad, putting the OLED in a slot inside the PDA's screen. I originally planned not to do this idea since the OLED didn't have any screw holes, but then I was inspired by samliu's solution by having a slot in their macropad case, as seen in their Squarepad's CAD.

schematic
image

After I got the schematic, I started to work on the PCB design, mirroring the 3x3 grid of the Engineer's PDA with the 8th key taking up twice the space and adding RGB lights between the switches. I considered having the PCB extend throughout the macropad, but found it easier to place the RP2040 going to the side to compact the PCB below 100mm x 100mm in order to save money.
I also threw in some silkscreen art, making a TF2 inspired graphic for the front and a Highway backside, as well as a lanyard hole for extra PCBs!
pcb front back

note: i disabled the silkscreen in the PCB view since it made the board look very cluttered lol

I made the backside with Figma, using the frame technique I learned from the Highway Figma magazine to place and design my back silkscreen (and is by far my favorite pcb made yet :3)
image image

I used an orthographic screenshot of the PCB's backside and used Figma to draw out shapes to put on the silkscreen! The graphic was made in black and white since it's the easiest format for KiCad's image converter to work with

time spent: 6 hours planning, designing PCB, and making art

6/22/25 - cadding the case

After finishing my PCB, I started working on the case. While I could lazily take the game files for the PDA and port them into a model, I figured that ripping and using the exact models from the game would definitely NOT be allowed in Highway (plus the fact that it's lame and boring).
This left me with recreating the model in Fusion. I found a source online that had the original model for the PDA, and managed to import them into Blender to take pictures to aid in designing.
image image image image
image

After a while, I finished most the CAD for the case. I split the case apart into the two shells, as detailed above, as well as splitting the trapezoidal screen part thingy into it's own section.

image

To mount the OLED in the screen section, I made two halves of the PDA's screen and sandwiched the OLED in between those two halves, with the headers poking out to connect to the PCB. The two halves are then slotted into the main shell for the screen, with the back side of one of the halves having a ledge for easy gluing.
I initially thought of using some tiny screws to mount the two halves, but was soon shut down due to the screws being too big for this scale and my printer not having that level of precision, especially at an angle.

image image

The two case halves are mounted with the PCB in a sandwich style mounting, with the PCB in between of the screw holes in the case shells. The case halves also have a small lip where they can interlock to improve alignment and ease of building, which is used between the top shell and the screen section.

image image

For the rocker switch, I used a 11.5mm wide hole to put my own toggle switch in (the metal lever one). I did find an actual rocker switch like the one in-game, but it was too large for my scale. I aimed to be as game-accurate for this CAD as possible, but using an actual switch was honestly too cool to pass up in my opinion.

image

However, for people who don't have a cool metal switch, I also made an alternate version of the screen shell with a rocker switch. (unfunctional though, sorry)

image

Speaking of being game-accurate, I noticed that the keycaps on the actual PDA model weren't perfectly square, but more like octogons in a way. This led to me designing my own custom keycaps, modeling them after the buttons on the Engineer's PDA.

image

I didn't have time to color and render the model, but I will most likely finish modeling and the Hackpad tomorrow time: 6 hours cadding

6/23/25 - Rendering and finishing up

This morning I managed to color the Fusion model and render it.
I took a screenshot of the PDA from the TF2 Wiki and took apart the colors, applying it to the CAD model.

image

I also SEVERELY underestimated the Render tool in Fusion, because it made the colored CAD model look so much better like wtf :sob:

engipad exploded top

Once I had the CAD down, I started to work on the firmware. I picked QMK for the firmware, since I have experience using it from my other Highway project. I followed the guide found here, and made a folder containing the keyboard and keymap .json files.

image

I edited the code to fit my Hackpad's direct, 8-key wiring, as well as setting the keybinds to correspond with shortcuts for Fusion commands, like Shift for selecting multiple elements or rotating the camera and E to extrude. I also added undo and redo macros, since I always forget what shortcut redo is lol

image
image image

I also set up the code for the OLED and RGB, making the OLED print out engineer gamin for now and the RGB set to a default RGB pattern by QMK. I plan to fine tune and test out the firmware more accurately when the Hackpad parts come in, but this will do for now.

After I got the firmware setup, I began working on my README and preparing this repo for submission :D

current time: 4 hours rendering, programming QMK firmware, and setting up for submission

7/2/25 - parts came in

the parts actually came in two days ago but i was lazy so im putting this under today

Got my parts from hack club!
I 3D printed my custom keycaps using the last of my black filament and test fitted the keycaps on the switches. I was worried about my printer screwing up the stem geometry, but turned out the outer diameter of the stem was too big to fit in the switch (6mm wide to the switches' 5.4mm size limit).

Once I got the keycaps down, I turned to the hardware, soldering the headers onto the OLED and rp2040 and then flashing the firmware. The current firmware was preliminary, so only part of it worked with many of the features like the OLED and RGB not implemented, so I started work on that.

Once I made a proper keybaord setup with QMK, I started to work on the keyboard.json and keymap.c files.
I thought my current matrix setup would work, but QMK would refuse to compile it. I thought it was something to do with the microcontroller or me setting up QMK incorrectly, but ended up being an issue with the GPIO pin names. I initially put in the pin names found on the Seeed Studio store page (D1, D2, D3, etc.), but QMK only recognizes the original GPIO names on the chip, meaning that I had to go into my schematic and adjust the GPIO names to the ones on the rp2040 chip.

image

The firmware managed to compile and work when I connected GND to the GPIO pins, which left me with coding the RGB and OLED.
There really wasn't any good sources online from my very short research into Google, since many of the wiki pages and videos referenced a rules.mk and config file that should have been made with the keybaord, so I went into @alexren's Orpheuspad for reference on how to implement OLED and RGB.
Turns out, I was supposed to make my own rules.mk and config.h file inside the keyboard, so I proceeded to make those files and put in the settings for the additions. I'm not able to test out the rgb as of now since my PCB isn't here, but I managed to get the OLED screen working with QMK.

I used the QMK wiki page for oled drivers and tweaked around with the code for the logo, and managed to get the OLED to display my own custom image by making my own glcdfont.c file and pasting in code from this logo editor.
I made the custom image with photoshop, down sizing and adjusting the images used for my PCB's silkscreen art.

image

engipad-banner

time spent: 5 hours soldering, coding hardware, and redesigning keycaps