You're close. The inputs (knobs, buttons, sliders, whatever) connect to a board (could be arduino, or others), then the board connects to the controller via USB.
If you want to add a button (or any other input) to mimic one of the several out-of-the-box PP keyboard shortcuts, then its quite simple and all you really need to do from a software standpoint is keyboard emulation. However if you want to do something that path pilot doesnt have keyboard shortcuts for or you want two-way communication, then its more complicated.
In my case I'm only doing one-way communication. I added a bunch of keyboard shortcuts to PP because they dont exist for controlling the sliders, probing and all the other things I wanted. The only downside is that I have to readd those changes after every PP update. The good side is that it makes the machine easier to use and the changes only take me about 1/2 day to implement and test.
When I first started building this out, I didnt know how to add buttons to the PathPilot interface. Since then, I have figured that out and wont need as many physical inputs, but I'll probably keep them just incase my touchscreen takes a dump.
Here's a screenshot of the probing routines I added to PP 1.9.13 (it also shows the WCS buttons I added at the bottom). I havent added them to 2.0 yet because I knew there would probably be an update soon after the initial release. Turns out I was right.