After printing this design (https://www.thingiverse.com/thing:1481429) by elkayem, I discovered that the case was too short for my longer buttons (especially with the USB encoder mount), the screw holes didn't fit my smaller M3s, the button holes were too loose for my taste, and I had leftover buttons.
To solve these problems, I designed my own controller from the ground up in Fusion 360, taking heavy inspiration from elkayem's beautifully simple design.
All my buttons fit, and I simply jammed the USB encoder where it would fit. Not the most elegant solution, I know. When I put it together, the pieces didn't have enough clearance for a smooth comfortable fit, so I made some tweaks which are reflected in V2.
Solutech PLA & PETG
Print with the largest flat side down to minimize material. I got away with no brim on a glass + glue stick + heat combo.