ID_IN.H (4728B)
1 // 2 // ID Engine 3 // ID_IN.h - Header file for Input Manager 4 // v1.0d1 5 // By Jason Blochowiak 6 // 7 8 #ifndef __ID_IN__ 9 #define __ID_IN__ 10 11 #ifdef __DEBUG__ 12 #define __DEBUG_InputMgr__ 13 #endif 14 15 #define MaxPlayers 4 16 #define MaxKbds 2 17 #define MaxJoys 2 18 #define NumCodes 128 19 20 typedef byte ScanCode; 21 #define sc_None 0 22 #define sc_Bad 0xff 23 #define sc_Return 0x1c 24 #define sc_Enter sc_Return 25 #define sc_Escape 0x01 26 #define sc_Space 0x39 27 #define sc_BackSpace 0x0e 28 #define sc_Tab 0x0f 29 #define sc_Alt 0x38 30 #define sc_Control 0x1d 31 #define sc_CapsLock 0x3a 32 #define sc_LShift 0x2a 33 #define sc_RShift 0x36 34 #define sc_UpArrow 0x48 35 #define sc_DownArrow 0x50 36 #define sc_LeftArrow 0x4b 37 #define sc_RightArrow 0x4d 38 #define sc_Insert 0x52 39 #define sc_Delete 0x53 40 #define sc_Home 0x47 41 #define sc_End 0x4f 42 #define sc_PgUp 0x49 43 #define sc_PgDn 0x51 44 #define sc_F1 0x3b 45 #define sc_F2 0x3c 46 #define sc_F3 0x3d 47 #define sc_F4 0x3e 48 #define sc_F5 0x3f 49 #define sc_F6 0x40 50 #define sc_F7 0x41 51 #define sc_F8 0x42 52 #define sc_F9 0x43 53 #define sc_F10 0x44 54 #define sc_F11 0x57 55 #define sc_F12 0x59 56 57 #define sc_1 0x02 58 #define sc_2 0x03 59 #define sc_3 0x04 60 #define sc_4 0x05 61 #define sc_5 0x06 62 #define sc_6 0x07 63 #define sc_7 0x08 64 #define sc_8 0x09 65 #define sc_9 0x0a 66 #define sc_0 0x0b 67 68 #define sc_A 0x1e 69 #define sc_B 0x30 70 #define sc_C 0x2e 71 #define sc_D 0x20 72 #define sc_E 0x12 73 #define sc_F 0x21 74 #define sc_G 0x22 75 #define sc_H 0x23 76 #define sc_I 0x17 77 #define sc_J 0x24 78 #define sc_K 0x25 79 #define sc_L 0x26 80 #define sc_M 0x32 81 #define sc_N 0x31 82 #define sc_O 0x18 83 #define sc_P 0x19 84 #define sc_Q 0x10 85 #define sc_R 0x13 86 #define sc_S 0x1f 87 #define sc_T 0x14 88 #define sc_U 0x16 89 #define sc_V 0x2f 90 #define sc_W 0x11 91 #define sc_X 0x2d 92 #define sc_Y 0x15 93 #define sc_Z 0x2c 94 95 #define key_None 0 96 #define key_Return 0x0d 97 #define key_Enter key_Return 98 #define key_Escape 0x1b 99 #define key_Space 0x20 100 #define key_BackSpace 0x08 101 #define key_Tab 0x09 102 #define key_Delete 0x7f 103 104 // Stuff for the mouse 105 #define MReset 0 106 #define MButtons 3 107 #define MDelta 11 108 109 #define MouseInt 0x33 110 #define Mouse(x) _AX = x,geninterrupt(MouseInt) 111 112 typedef enum { 113 demo_Off,demo_Record,demo_Playback,demo_PlayDone 114 } Demo; 115 typedef enum { 116 ctrl_Keyboard, 117 ctrl_Keyboard1 = ctrl_Keyboard,ctrl_Keyboard2, 118 ctrl_Joystick, 119 ctrl_Joystick1 = ctrl_Joystick,ctrl_Joystick2, 120 ctrl_Mouse 121 } ControlType; 122 typedef enum { 123 motion_Left = -1,motion_Up = -1, 124 motion_None = 0, 125 motion_Right = 1,motion_Down = 1 126 } Motion; 127 typedef enum { 128 dir_North,dir_NorthEast, 129 dir_East,dir_SouthEast, 130 dir_South,dir_SouthWest, 131 dir_West,dir_NorthWest, 132 dir_None 133 } Direction; 134 typedef struct { 135 boolean button0,button1,button2,button3; 136 int x,y; 137 Motion xaxis,yaxis; 138 Direction dir; 139 } CursorInfo; 140 typedef CursorInfo ControlInfo; 141 typedef struct { 142 ScanCode button0,button1, 143 upleft, up, upright, 144 left, right, 145 downleft, down, downright; 146 } KeyboardDef; 147 typedef struct { 148 word joyMinX,joyMinY, 149 threshMinX,threshMinY, 150 threshMaxX,threshMaxY, 151 joyMaxX,joyMaxY, 152 joyMultXL,joyMultYL, 153 joyMultXH,joyMultYH; 154 } JoystickDef; 155 // Global variables 156 extern boolean Keyboard[], 157 MousePresent, 158 JoysPresent[]; 159 extern boolean Paused; 160 extern char LastASCII; 161 extern ScanCode LastScan; 162 extern KeyboardDef KbdDefs; 163 extern JoystickDef JoyDefs[]; 164 extern ControlType Controls[MaxPlayers]; 165 166 extern Demo DemoMode; 167 extern byte _seg *DemoBuffer; 168 extern word DemoOffset,DemoSize; 169 170 // Function prototypes 171 #define IN_KeyDown(code) (Keyboard[(code)]) 172 #define IN_ClearKey(code) {Keyboard[code] = false;\ 173 if (code == LastScan) LastScan = sc_None;} 174 175 // DEBUG - put names in prototypes 176 extern void IN_Startup(void),IN_Shutdown(void), 177 IN_Default(boolean gotit,ControlType in), 178 IN_SetKeyHook(void (*)()), 179 IN_ClearKeysDown(void), 180 IN_ReadCursor(CursorInfo *), 181 IN_ReadControl(int,ControlInfo *), 182 IN_SetControlType(int,ControlType), 183 IN_GetJoyAbs(word joy,word *xp,word *yp), 184 IN_SetupJoy(word joy,word minx,word maxx, 185 word miny,word maxy), 186 IN_StopDemo(void),IN_FreeDemoBuffer(void), 187 IN_Ack(void),IN_AckBack(void); 188 extern boolean IN_UserInput(longword delay); 189 extern char IN_WaitForASCII(void); 190 extern ScanCode IN_WaitForKey(void); 191 extern word IN_GetJoyButtonsDB(word joy); 192 extern byte *IN_GetScanName(ScanCode); 193 194 195 byte IN_MouseButtons (void); 196 byte IN_JoyButtons (void); 197 198 void INL_GetJoyDelta(word joy,int *dx,int *dy); 199 void IN_StartAck(void); 200 boolean IN_CheckAck (void); 201 202 #endif