With Max/MSP as a layer between hardware and software, I've used and built a variety of controllers for sound design, some of that in interactive products:
phidgets http://t2.gstatic.com/images?q=tbn:pTZGDSXYM7b0VM:http://www.techchee.com/wp-content/uploads/2007/05/phidget-analog-sensors-leds-switches-18052007.jpg
(c74 app) (monome) (phidgets) (arduino)
- A Monome (basically a boutique version of the Novation Launchpad, that's where the concept of the Launchpad came from)
- Wiimote, using the Max external by aka.
- iPhone multitouch controller apps like Fantastick, TouchOSC and now c74.
- Arduino prototyping board with various sensors and controls attached to it
- Phidgets
- A webcam for real-time camera tracking and image recognition using the cv.jit library
The controller mentioned by Colin looks awesome, it's probably speedier to work with than virtual keys because they provide physical (tactile) feedback.
When the iPad comes out in Europe I'll get one and run the iPhone controller apps on there, again using Max/MSP as interpretation layer between the hardware and the sound-generating software.
Edit: and then there is of course the very expensive Optimus Maximus keyboard that has a mini oled screen inside each key allowing dynamic switching of key functions, macros and icons. Awesome.
(source: techeblog.com)