So it looks like there are 4 problems that need to be addressed so far:
#1 - Mounting the ADNS-9800's to the ball sockets of the Microsoft Trackball Opticals.
#2 - Forward and Backward buttons.
#3 - Receiving the multiple Motion_Burst response bytes.
#4 - Scrolling horizontally
In more depth:
#1 - I can't figure out how to attach them to each other... I think a part will have to be 3D printed, but I have no idea how to 3D model. I'll need help with this one, unless my Dad can pull off another hardware store miracle.
#2 - Because there were "
Virtual-Key Codes" I thought it would be quite easy to send them to the computer to get stuff like VK_BROWSER_BACK and VK_BROWSER_FORWARD since the teensy and arduino code libraries didn't seem to have those 2, but so far I haven't been able to figure out how to send Virtual-Key Codes to the computer with arduinos. Being able to use anything defined in the Virtual-Key Codes would mean that volume and media keys would also be mappable.
#3 - SPI.transfer(val) sends and receives a single byte. The Motion_Burst of the ADNS-9800's sends back 14 bytes, and it looks like only the Arduino Due and its SPI_CONTINUE can read those subsequent 13 bytes. I need to be able to read the first 6 bytes of Motion_Burst for it to be used as a more efficient and precise method than John's. Otherwise I'll just have to use John's method of reading REG_Delta_X_L and REG_Delta_Y_L (which takes longer than Motion_Burst) and hope I don't move the ball faster than 127 counts/pixels per millisecond (the limit of precise movement without reading the upper 8 bits of X and Y).
#4 - Scrolling horizontally seems similar to #2 in that there are codes for it, but I can't figure out how to send them to the computer with arduinos. (It should be pointed out that both vertical and horizontal scrolling, and mouse movement are not defined in the "Virtual-Key Codes").
It seems like I may have to have a driver of sorts running on the computer for #2 and #4...