Success!!I got this code to work (it is the sample from the joystick library with the inclusion of the shield libraries)::
#include <ch9.h>
#include <Max3421e.h>
#include <Max3421e_constants.h>
#include <Max_LCD.h>
#include <Usb.h>
// usbjoystick_test
// This sketch demonstrates simple use of the USBJoystick library
// It intialises the library, establishes callbacks for when inputs change
// and prints out details whenever an input changes and a callback is called.
//
// USB Host Shield uses an interrupt line, but does not establish an interrupt callback
// Note special requirements in documentation if you are using an older version of the USB Host Shield and a newer
// version of the USB_Host_Shield library.
// Note special requirements to configure the WiShield librray to support the UDP application.
// mikem@airspayce.com
#include <Usb.h>
#include <USBJoystick.h>
// Our singleton joystick
USBJoystick joy;
// Here we define some callbacks thgat will be called when a stick, button
// or hat switch changes. You can also have a callback called for every polled value, if you prefer.
// Alternatively, you can use the *Value() data accessory to asynchronously get the last read value
// for the sticks, buttons and hats.
// stick will be one of USBJOYSTICK_STICK_*
void stickValueDidChangeCallback(uint8_t stick, uint8_t value)
{
Serial.print("stickValueDidChangeCallback: ");
Serial.print(stick, DEC);
Serial.print(": ");
Serial.print(value, DEC);
Serial.println("");
}
// button will be one of USBJOYSTICK_BUTTON_*
void buttonValueDidChangeCallback(uint8_t button, uint8_t value)
{
Serial.print("buttonValueDidChangeCallback: ");
Serial.print(button, DEC);
Serial.print(": ");
Serial.print(value, DEC);
Serial.println("");
}
// hat will be one of USBJOYSTICK_HAT_*
// value will be one of USBJOYSTICK_HAT_POS_*
void hatValueDidChangeCallback(uint8_t hat, uint8_t value)
{
Serial.print("hatValueDidChangeCallback: ");
Serial.print(hat, DEC);
Serial.print(": ");
Serial.print(value, DEC);
Serial.println("");
if ( hat == 0 && value == 1) {
Serial.print("TRIGGER OFF!!!!");
}
}
void setup()
{
Serial.begin(9600);
// Specify callbacks to call when inputs change
joy.setStickValueDidChangeCallback(stickValueDidChangeCallback);
joy.setButtonValueDidChangeCallback(buttonValueDidChangeCallback);
joy.setHatValueDidChangeCallback(hatValueDidChangeCallback);
joy.init();
}
void loop()
{
joy.run();
}
There is no longer an issue with the including the library. I am still having a few issues:
(1)- There seems to be an issue with the library and my Logitech Extreme 3d pro joystick. I have a feeling the c++ program was written for another joystick. Here is a mapping of the buttons so you know what I am talking about.

-the trigger button (1) and thumb button (2) get marked as hat values.
-What I am calling the throttle gets marked as many different button values.
-Buttons 9, 10, & 11 don't leave a response.
-The other buttons get marked as different ones then Logitech claims they are (which is really a simple thing to solve)
(2)- Every few times I upload the code to the Mega, about 1/3 of the time, I get an error message and then try again without changing anything and it works. Here is said message::
Arduino: 1.6.11 (Windows Store 1.6.11.0) (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
collect2.exe: error: ld returned 5 exit status
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
This issue is more of a pothole than a road block but I would like to get this issue resolved.
The other thing I am open to suggestions for is the joystick is really sensitive and Serial.prints tons of stickvaluedidchangecallback. I have solved this by turning these serial.prints into comments but I wanted to know if there is a better way to make the stick values legible.