#ifndef _INPUT_H_
#define _INPUT_H_
#include "brender/br_types.h"
#include "dr_types.h"
// Variable leading zero
#ifdef DETHRACE_FIX_BUGS
#define VARLZEROINT "%0*d"
#else
#define VARLZEROINT "%0.*d"
#endif
extern int gEdge_trigger_mode;
extern tU32 gLast_poll_keys;
extern int gInsert_mode;
extern int gGo_ahead_keys[3];
extern tJoy_array gJoy_array;
extern tKey_array gKey_array;
extern int gKey_poll_counter;
extern tRolling_letter* gRolling_letters;
extern int gCurrent_cursor;
extern int gCurrent_position;
extern int gLetter_x_coords[15];
extern int gVisible_length;
extern int gLetter_y_coords[15];
extern int gThe_key;
extern tU32 gLast_key_down_time;
extern int gThe_length;
extern tU32 gLast_roll;
extern int gLast_key_down;
extern int gKey_mapping[67];
extern char gCurrent_typing[110];
void SetJoystickArrays(int* pKeys, int pMark);
void PollKeys(void);
void CyclePollKeys(void);
void ResetPollKeys(void);
void CheckKeysForMouldiness(void);
int EitherMouseButtonDown(void);
tKey_down_result PDKeyDown2(int pKey_index);
int PDKeyDown(int pKey_index);
int PDKeyDown3(int pKey_index);
int PDAnyKeyDown(void);
int AnyKeyDown(void);
tU32* KevKeyService(void);
int OldKeyIsDown(int pKey_index);
int KeyIsDown(int pKey_index);
void WaitForNoKeys(void);
void WaitForAKey(void);
int CmdKeyDown(int pFKey_ID, int pCmd_key_ID);
void GetMousePosition(int* pX_coord, int* pY_coord);
void InitRollingLetters(void);
void EndRollingLetters(void);
int AddRollingLetter(char pChar, int pX, int pY, tRolling_type rolling_type);
void AddRollingString(char* pStr, int pX, int pY, tRolling_type rolling_type);
void AddRollingNumber(tU32 pNumber, int pWidth, int pX, int pY);
void RollLettersIn(void);
int ChangeCharTo(int pSlot_index, int pChar_index, char pNew_char);
void ChangeTextTo(int pXcoord, int pYcoord, char* pNew_str, char* pOld_str);
void SetRollingCursor(int pSlot_index);
void BlankSlot(int pIndex, int pName_length, int pVisible_length);
void DoRLBackspace(int pSlot_index);
void DoRLDelete(int pSlot_index);
void DoRLInsert(int pSlot_index);
void DoRLCursorLeft(int pSlot_index);
void DoRLCursorRight(int pSlot_index);
void DoRLTypeLetter(int pChar, int pSlot_index);
void StopTyping(int pSlot_index);
void RevertTyping(int pSlot_index, char* pRevert_str);
void StartTyping(int pSlot_index, char* pText, int pVisible_length);
void TypeKey(int pSlot_index, char pKey);
void SetSlotXY(int pSlot_index, int pX_coord, int pY_coord);
void GetTypedName(char* pDestn, int pMax_length);
void KillCursor(int pSlot_index);
void EdgeTriggerModeOn(void);
void EdgeTriggerModeOff(void);
#endif