The easiest way to interact with an AVR over USB would be to connect an FTDI FT232 to the UART, and then interact with your AVR as a virtual COM port using the FTDI drivers.
You've probably heard of or used this chip; it's on a lot of embedded devices (Including the Arduino boards) and it's probably the easiest way to interact with a microcontroller over USB. However, I'm not sure that it can do what you're trying to do; it creates a virtual COM port. If you can write a plugin to query the device for button presses, it will be ideal. However, if you want it to show up as an input device, I'm not sure that this is the solution for you.
Edit: This is the plug-in simple solution to get basic communication. Joby's answer does not restrict your project to a virtual COM port as this device does.
However, the port provided can be made to function in the same way with inputattach. (Source: Joby's comment below) However, it appears that you will have to patch your device driver into the inputattach utility.