/*
File Name: DeviceInput.h
Created By: Andy Odle
Date: Jan 16, 2010

Description:     
*/
    
#ifndef DeviceInput_h
#define DeviceInput_h

#define _WIN32_WINNT 0x0501
#include <windows.h>

// Keyboard, Mouse, and Joystick vritual key codes win32.
struct KeysAndButtons
{
    // ---- Begin Keyboard Section ----

    static const unsigned int LEFT_KEYBOARD = VK_LEFT;	       // Left arrow keyboard button.
    static const unsigned int UP_KEYBOARD = VK_UP;	           // Up arrow keyboard button.
    static const unsigned int RIGHT_KEYBOARD = VK_RIGHT;	       // Right arrow keyboard button.
    static const unsigned int DOWN_KEYBOARD = VK_DOWN;           // Down arrow keyboard button.

    // ASCII Maped Keys.
    static const unsigned int ZERO_KEYBOARD = '0';                  // 0 keyboard key.
    static const unsigned int ONE_KEYBOARD = '1';                  // 1 keyboard key.
    static const unsigned int TWO_KEYBOARD = '2';                  // 2 keyboard key.
    static const unsigned int THREE_KEYBOARD = '3';                  // 3 keyboard key.
    static const unsigned int FOUR_KEYBOARD = '4';                  // 4 keyboard key.
    static const unsigned int FIVE_KEYBOARD = '5';                  // 5 keyboard key.
    static const unsigned int SIX_KEYBOARD = '6';                  // 6 keyboard key.
    static const unsigned int SEVEN_KEYBOARD = '7';                  // 7 keyboard key.
    static const unsigned int EIGHT_KEYBOARD = '8';                  // 8 keyboard key.
    static const unsigned int NINE_KEYBOARD = '9';                  // 9 keyboard key.

    static const unsigned int A_KEYBOARD = 'A';                  // A keyboard key.
    static const unsigned int B_KEYBOARD = 'B';                  // B keyboard key.
    static const unsigned int C_KEYBOARD = 'C';                  // C keyboard key.
    static const unsigned int D_KEYBOARD = 'D';                  // D keyboard key.
    static const unsigned int E_KEYBOARD = 'E';                  // E keyboard key.
    static const unsigned int F_KEYBOARD = 'F';                  // F keyboard key.
    static const unsigned int G_KEYBOARD = 'G';                  // G keyboard key.
    static const unsigned int H_KEYBOARD = 'H';                  // H keyboard key.
    static const unsigned int I_KEYBOARD = 'I';                  // I keyboard key.
    static const unsigned int J_KEYBOARD = 'J';                  // J keyboard key.
    static const unsigned int K_KEYBOARD = 'K';                  // K keyboard key.
    static const unsigned int L_KEYBOARD = 'L';                  // L keyboard key.
    static const unsigned int M_KEYBOARD = 'M';                  // M keyboard key.
    static const unsigned int N_KEYBOARD = 'N';                  // N keyboard key.
    static const unsigned int O_KEYBOARD = 'O';                  // O keyboard key.
    static const unsigned int P_KEYBOARD = 'P';                  // P keyboard key.
    static const unsigned int Q_KEYBOARD = 'Q';                  // Q keyboard key.
    static const unsigned int R_KEYBOARD = 'R';                  // R keyboard key.
    static const unsigned int S_KEYBOARD = 'S';                  // S keyboard key.
    static const unsigned int T_KEYBOARD = 'T';                  // T keyboard key.
    static const unsigned int U_KEYBOARD = 'U';                  // U keyboard key.
    static const unsigned int V_KEYBOARD = 'V';                  // V keyboard key.
    static const unsigned int W_KEYBOARD = 'W';                  // W keyboard key.
    static const unsigned int X_KEYBOARD = 'X';                  // X keyboard key.
    static const unsigned int Y_KEYBOARD = 'Y';                  // Y keyboard key.
    static const unsigned int Z_KEYBOARD = 'Z';                  // Z keyboard key.
    
    static const unsigned int NUMPAD0_KEYBOARD = VK_NUMPAD0;	   // Numberpad 0 keyboard button.
    static const unsigned int NUMPAD1_KEYBOARD = VK_NUMPAD1;	   // Numberpad 1 keyboard button.
    static const unsigned int NUMPAD2_KEYBOARD = VK_NUMPAD2;	   // Numberpad 2 keyboard button.
    static const unsigned int NUMPAD3_KEYBOARD = VK_NUMPAD3;	   // Numberpad 3 keyboard button.
    static const unsigned int NUMPAD4_KEYBOARD = VK_NUMPAD4;	   // Numberpad 4 keyboard button.
    static const unsigned int NUMPAD5_KEYBOARD = VK_NUMPAD5;	   // Numberpad 5 keyboard button.
    static const unsigned int NUMPAD6_KEYBOARD = VK_NUMPAD6;	   // Numberpad 6 keyboard button.
    static const unsigned int NUMPAD7_KEYBOARD = VK_NUMPAD7;	   // Numberpad 7 keyboard button.
    static const unsigned int NUMPAD8_KEYBOARD = VK_NUMPAD8;	   // Numberpad 8 keyboard button.
    static const unsigned int NUMPAD9_KEYBOARD = VK_NUMPAD9;	   // Numberpad 9 keyboard button.
    
    static const unsigned int NUMPADADD_KEYBOARD = VK_ADD;             // + aka add keyboard button.		
    static const unsigned int NUMPADSUBTRACT_KEYBOARD = VK_SUBTRACT;   // - aka minus keyboard button.
    static const unsigned int NUMPADMULTIPLY_KEYBOARD = VK_MULTIPLY;   // * aka multiply keyboard button.
    static const unsigned int NUMPADDIVIDE_KEYBOARD = VK_DIVIDE;	   // / aka devide keyboard button.
    static const unsigned int NUMPADDECIMAL_KEYBOARD = VK_DECIMAL;	   // . aka decimal keyboard button.
    static const unsigned int SEPARATOR_KEYBOARD = VK_SEPARATOR; // , keyboard button.
    
    static const unsigned int F1_KEYBOARD = VK_F1;               // F1 keyboard button.	
    static const unsigned int F2_KEYBOARD = VK_F2;	           // F2 keyboard button.
    static const unsigned int F3_KEYBOARD = VK_F3;	           // F3 keyboard button.
    static const unsigned int F4_KEYBOARD = VK_F4;	           // F4 keyboard button.
    static const unsigned int F5_KEYBOARD = VK_F5;	           // F5 keyboard button.
    static const unsigned int F6_KEYBOARD = VK_F6;	           // F6 keyboard button.
    static const unsigned int F7_KEYBOARD = VK_F7;	           // F7 keyboard button.
    static const unsigned int F8_KEYBOARD = VK_F8;	           // F8 keyboard button.
    static const unsigned int F9_KEYBOARD = VK_F9;	           // F9 keyboard button.
    static const unsigned int F10_KEYBOARD = VK_F10;	           // F10 keyboard button.
    static const unsigned int F11_KEYBOARD = VK_F11;	           // F11 keyboard button.
    static const unsigned int F12_KEYBOARD = VK_F12;	           // F12 keyboard button.
    static const unsigned int F13_KEYBOARD = VK_F13;	           // F13 keyboard button.
    static const unsigned int F14_KEYBOARD = VK_F14;	           // F14 keyboard button.
    static const unsigned int F15_KEYBOARD = VK_F15;	           // F15 keyboard button.
    static const unsigned int F16_KEYBOARD = VK_F16;	           // F16 keyboard button.
    static const unsigned int F17_KEYBOARD = VK_F17;	           // F17 keyboard button.
    static const unsigned int F18_KEYBOARD = VK_F18;	           // F18 keyboard button.
    static const unsigned int F19_KEYBOARD = VK_F19;	           // F19 keyboard button.
    static const unsigned int F20_KEYBOARD = VK_F20;	           // F20 keyboard button.
    static const unsigned int F21_KEYBOARD = VK_F21;	           // F21 keyboard button.
    static const unsigned int F22_KEYBOARD = VK_F22;	           // F22 keyboard button.
    static const unsigned int F23_KEYBOARD = VK_F23;	           // F23 keyboard button.
    static const unsigned int F24_KEYBOARD = VK_F24;	           // F24 keyboard button.
    
    static const unsigned int NUMLOCK_KEYBOARD = VK_NUMLOCK;     // Numlock keyboard button.	
    static const unsigned int SCROLL_KEYBOARD = VK_SCROLL;	   // Scroll Lock keyboard button.
    static const unsigned int LSHIFT_KEYBOARD = VK_LSHIFT;	   // Left Shift keyboard button.
    static const unsigned int RSHIFT_KEYBOARD = VK_RSHIFT;	   // Right Shift keyboard button.
    static const unsigned int LCONTROL_KEYBOARD = VK_LCONTROL;   // Left Ctrl keyboard button.
    static const unsigned int RCONTROL_KEYBOARD = VK_RCONTROL;   // Right Ctrl keyboard button.
    static const unsigned int LALT_KEYBOARD = VK_LMENU;          // Left Alt keyboard key.
    static const unsigned int RALT_KEYBOARD = VK_RMENU;          // Right Alt keyboard key.
    static const unsigned int SNAPSHOT_KEYBOARD = VK_SNAPSHOT;   // Print Screen keyboard button.
    static const unsigned int INSERT_KEYBOARD = VK_INSERT;       // Insert keyboard button.
    static const unsigned int DELETE_KEYBOARD = VK_DELETE;       // Delete keyboard button.	
    static const unsigned int BACK_KEYBOARD = VK_BACK;           // Backspace keyboard button.
    static const unsigned int TAB_KEYBOARD = VK_TAB;	           // Tab keyboard button.
    static const unsigned int ENTER_KEYBOARD = VK_RETURN;	   // Enter keyboard button.
    static const unsigned int PAUSE_KEYBOARD = VK_PAUSE;         // Puase keyboard button.	
    static const unsigned int CAPITAL_KEYBOARD = VK_CAPITAL;	   // Capslock keyboard button.
    static const unsigned int ESC_KEYBOARD = VK_ESCAPE;	   // Esc keyboard button.
    static const unsigned int SPACE_KEYBOARD = VK_SPACE;	       // Spacebar keyboard button.
    static const unsigned int END_KEYBOARD = VK_END;	           // End keyboard button.
    static const unsigned int HOME_KEYBOARD = VK_HOME;	       // Home keyboard button.
    static const unsigned int PAGEUP_KEYBOARD = SB_PAGEUP;      // Page Up keyboard button.
    static const unsigned int PAGEDOWN_KEYBOARD = SB_PAGEDOWN;  // Page Down keyboard button.

    // ---- End Keyboard Section ------

    // ---- Begin Mouse Section -------

    static const unsigned int LEFTBUTTON_MOUSE = VK_LBUTTON;      // Left mouse button.
    static const unsigned int RIGHTBUTTON_MOUSE = VK_RBUTTON;      // Right mouse button.
    static const unsigned int MIDDLEBUTTON_MOUSE = VK_MBUTTON;      // Middle mouse button.
    static const unsigned int FORWARDBUTTON_MOUSE = VK_XBUTTON1;     // Forward mouse button.
    static const unsigned int BACKBUTTON_MOUSE = VK_XBUTTON2;     // Back mouse button.

    // ---- End Mouse Section ---------
};

#endif
