A friend of mine asked me around the time of the Palette kickstarter if I could build something similar for him since it was relatively expensive. The Palette is a USB device with several different kinds of inputs (buttons, sliders, knobs) that can be configured as various keyboard shortcuts and the like. So over last couple of months I've been thinking about possible implementations and only recently got around to prototyping them. And now that Hackaday is hosting this contest I simply had to document it, such that others might profit from the solutions to problems I had during development.
Research and preparation
For this first prototype we decided that the device should have 8 buttons and 4 rotary encoders which have 4 additional buttons arranged in a 4 wide and 3 tall array with the encoders on top.
Since my microcontrollers of choice are AVRs and I also wanted to get into USB capable AVRs and VUSB, the decision to use a Pro Trinket as platform for this project was a quick one. Also the fact that it can be reprogrammed (i.e. with different keyboard shortcuts) without additional hardware (dedicated ISP or USB-to-serial converter) is a great advantage.