// // ID Engine // ID_IN.h - Header file for Input Manager // v1.0d1 // By Jason Blochowiak // #ifndef __ID_IN__ #define __ID_IN__ #ifdef __DEBUG__ #define __DEBUG_InputMgr__ #endif typedef int ScanCode; #define sc_None 0 #define sc_Bad 0xff #define sc_Return SDLK_RETURN #define sc_Enter sc_Return #define sc_Escape SDLK_ESCAPE #define sc_Space SDLK_SPACE #define sc_BackSpace SDLK_BACKSPACE #define sc_Tab SDLK_TAB #define sc_Alt SDLK_LALT #define sc_Control SDLK_LCTRL #define sc_CapsLock SDLK_CAPSLOCK #define sc_LShift SDLK_LSHIFT #define sc_RShift SDLK_RSHIFT #define sc_UpArrow SDLK_UP #define sc_DownArrow SDLK_DOWN #define sc_LeftArrow SDLK_LEFT #define sc_RightArrow SDLK_RIGHT #define sc_Insert SDLK_INSERT #define sc_Delete SDLK_DELETE #define sc_Home SDLK_HOME #define sc_End SDLK_END #define sc_PgUp SDLK_PAGEUP #define sc_PgDn SDLK_PAGEDOWN #define sc_F1 SDLK_F1 #define sc_F2 SDLK_F2 #define sc_F3 SDLK_F3 #define sc_F4 SDLK_F4 #define sc_F5 SDLK_F5 #define sc_F6 SDLK_F6 #define sc_F7 SDLK_F7 #define sc_F8 SDLK_F8 #define sc_F9 SDLK_F9 #define sc_F10 SDLK_F10 #define sc_F11 SDLK_F11 #define sc_F12 SDLK_F12 #define sc_ScrollLock SDLK_SCROLLOCK #define sc_PrintScreen SDLK_PRINT #define sc_1 SDLK_1 #define sc_2 SDLK_2 #define sc_3 SDLK_3 #define sc_4 SDLK_4 #define sc_5 SDLK_5 #define sc_6 SDLK_6 #define sc_7 SDLK_7 #define sc_8 SDLK_8 #define sc_9 SDLK_9 #define sc_0 SDLK_0 #define sc_A SDLK_a #define sc_B SDLK_b #define sc_C SDLK_c #define sc_D SDLK_d #define sc_E SDLK_e #define sc_F SDLK_f #define sc_G SDLK_g #define sc_H SDLK_h #define sc_I SDLK_i #define sc_J SDLK_j #define sc_K SDLK_k #define sc_L SDLK_l #define sc_M SDLK_m #define sc_N SDLK_n #define sc_O SDLK_o #define sc_P SDLK_p #define sc_Q SDLK_q #define sc_R SDLK_r #define sc_S SDLK_s #define sc_T SDLK_t #define sc_U SDLK_u #define sc_V SDLK_v #define sc_W SDLK_w #define sc_X SDLK_x #define sc_Y SDLK_y #define sc_Z SDLK_z #define key_None 0 typedef enum { demo_Off,demo_Record,demo_Playback,demo_PlayDone } Demo; typedef enum { ctrl_Keyboard, ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2, ctrl_Joystick, ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2, ctrl_Mouse } ControlType; typedef enum { motion_Left = -1,motion_Up = -1, motion_None = 0, motion_Right = 1,motion_Down = 1 } Motion; typedef enum { dir_North,dir_NorthEast, dir_East,dir_SouthEast, dir_South,dir_SouthWest, dir_West,dir_NorthWest, dir_None } Direction; typedef struct { boolean button0,button1,button2,button3; short x,y; Motion xaxis,yaxis; Direction dir; } CursorInfo; typedef CursorInfo ControlInfo; typedef struct { ScanCode button0,button1, upleft, up, upright, left, right, downleft, down, downright; } KeyboardDef; typedef struct { word joyMinX,joyMinY, threshMinX,threshMinY, threshMaxX,threshMaxY, joyMaxX,joyMaxY, joyMultXL,joyMultYL, joyMultXH,joyMultYH; } JoystickDef; // Global variables extern volatile boolean Keyboard[]; extern boolean MousePresent; extern volatile boolean Paused; extern volatile char LastASCII; extern volatile ScanCode LastScan; extern int JoyNumButtons; extern boolean forcegrabmouse; // Function prototypes #define IN_KeyDown(code) (Keyboard[(code)]) #define IN_ClearKey(code) {Keyboard[code] = false;\ if (code == LastScan) LastScan = sc_None;} // DEBUG - put names in prototypes extern void IN_Startup(void),IN_Shutdown(void); extern void IN_ClearKeysDown(void); extern void IN_ReadControl(int,ControlInfo *); extern void IN_GetJoyAbs(word joy,word *xp,word *yp); extern void IN_SetupJoy(word joy,word minx,word maxx, word miny,word maxy); extern void IN_StopDemo(void),IN_FreeDemoBuffer(void), IN_Ack(void); extern boolean IN_UserInput(longword delay); extern char IN_WaitForASCII(void); extern ScanCode IN_WaitForKey(void); extern word IN_GetJoyButtonsDB(word joy); extern const char *IN_GetScanName(ScanCode); void IN_WaitAndProcessEvents(); void IN_ProcessEvents(); int IN_MouseButtons (void); boolean IN_JoyPresent(); void IN_SetJoyCurrent(int joyIndex); int IN_JoyButtons (void); void IN_GetJoyDelta(int *dx,int *dy); void IN_GetJoyFineDelta(int *dx, int *dy); void IN_StartAck(void); boolean IN_CheckAck (void); bool IN_IsInputGrabbed(); void IN_CenterMouse(); #endif