wolf3d

The original open source release of Wolfenstein 3D
Log | Files | Refs

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