I’d like to build a custom input device for text entry and mousing. I have great software on the Mac that allows programing of USB HID inputs. The GP Wiz is a cheap, easy way to hook up normal switches, but I’d like to make touch sensitive switches and also accelerometer-based mouse movement. Is there a reasonable way to make the Arduino talk to the computer as a USB HID device or should I look at having the Arduino interface with some other hardware? Thanks.
The USB port on your arduino is actually a serial (COM) port. So it will not act as a HID by it self.
I belive that programming HID devices on PC or MAC is pretty hairy.
So if there is a hardware alternative you should go that way.
Short answer: not directly.
Long answer: There are a few projects out there to allow an AVR to become a USB device. The three main varieties seem to be USB HID keyboard/mouse, USB HID non-kb/mouse, and USB standard serial port emulation (I didn't know there was such a beast until I saw the AVR project). Operating systems all have USB keyboard/mouse support, so that's a driverless solution. HID support is usually built in as well, but some coding is required on the OS side to interface (libusb is your friend here). If you target the USB serial standard, the report is that windows, Moc OS X, and linux all know how to speak to these devices (although the project home page indicates that serial speeds greater than 4800 are unreliable).
There are other threads on the forums about the posibility of using a second AVR as the USB interface (instead of the most excellent FTDI chip the designers chose).
The biggest catch in using the Arduino as a USB device is the clock speed - every USB AVR project I've seen requires a 12MHz crystal on the AVR to match the 12MHz bus speed of USB.
Is there a reasonable way to make the Arduino talk to the computer as a USB HID device...
No, there isn't
Have a look at the products from this company here :
Most of their chips require only a minimum set of external components for DIY Hid-Devices
Also this device can help you: