// // G A M E.O.N.E - LOW LEVEL LIB V1.0 // Copyright (C) 2001 LEVEL ONE ENTERTAINMENT, // Licensed under the terms of LGPL. //:--------------------------------------------------------------------------- //:Description // // LOW LEVEL INPUT DRIVER INCLUDE FILE // #ifndef _LLINPUT_H #define _LLINPUT_H #include "lib_base.h" #include "llqueue.h" /* * global states of system devices * if( llinput_Keys[LLINPUT_KEY_I] ) key is down; */ extern TxU8 llinput_Keys[256]; // llinput_keyboard.cpp extern int llinput_MouseX; // llinput_mouse.cpp extern int llinput_MouseY; extern int llinput_MouseZ; extern int llinput_MouseRelX; extern int llinput_MouseRelY; extern int llinput_MouseRelZ; extern TxU8 llinput_MouseBtn1; extern TxU8 llinput_MouseBtn2; extern TxU8 llinput_MouseBtn3; extern TxU8 llinput_MouseBtn4; extern TxU8 llinput_MouseBtn5; extern TxU8 llinput_MouseBtn6; extern TxU8 llinput_MouseBtn7; extern TxU8 llinput_MouseBtn8; /* * Input Event Struct */ typedef struct { // info int id; // device identifier int userid; // user identifier const char *devicename; const char *eventname; // state TxU32 state; int ch; // character if this event is a keyboard event int x,y,z; // rel or abs coords } s_event, inputEvent, *PtrInputEvent; #include "llinput_devices.h" /* * INPUT TYPES * */ typedef enum { KEYBOARD = 0x10000, MOUSE = 0x20000, JOYSTICK = 0x30000, GAMEPAD = 0x40000, WHEEL = 0x60000, FORCE_FB_JOYSTICK = 0x70000, FORCE_FB_WHEEL = 0x80000, } eInputDevices; #define LLINPUT_CHAR 0x1000 /* value of userid for characters */ #define LLINPUT_ESCAPE (0xFF) #define LLINPUT_FKEY1 (0xA0) #define LLINPUT_FKEY2 (0xA1) #define LLINPUT_FKEY3 (0xA2) #define LLINPUT_FKEY4 (0xA3) #define LLINPUT_FKEY5 (0xA4) #define LLINPUT_FKEY6 (0xA5) #define LLINPUT_FKEY7 (0xA6) #define LLINPUT_FKEY8 (0xA7) #define LLINPUT_FKEY9 (0xA9) #define LLINPUT_FKEY10 (0xAA) #define LLINPUT_FKEY11 (0xAB) #define LLINPUT_FKEY12 (0xAC) #define LLINPUT_CURSOR_UP (0xB0) /* UpArrow on arrow keypad */ #define LLINPUT_CURSOR_LEFT (0xB1) /* LeftArrow on arrow keypad */ #define LLINPUT_CURSOR_RIGHT (0xB2) /* RightArrow on arrow keypad */ #define LLINPUT_CURSOR_DOWN (0xB3) /* DownArrow on arrow keypad */ #define LLINPUT_PAGEUP (0xB4) /* PgUp on arrow keypad */ #define LLINPUT_PAGEDOWN (0xB5) /* PgDn on arrow keypad */ #define LLINPUT_CURSOR_PAUSE (0xB6) /* PAUSE */ //#define LLINPUT_CURSOR_SCROLL (0xB7) /* Scroll */ #define LLINPUT_CURSOR_INSERT (0xB8) /* Insert on arrow keypad */ #define LLINPUT_CURSOR_DELETE (0xB9) /* Delete on arrow keypad */ #define LLINPUT_CURSOR_HOME (0xBA) /* Home on arrow keypad */ #define LLINPUT_CURSOR_END (0xBB) /* End on arrow keypad */ #define LLINPUT_NUMPAD_ENTER (0xBC) /* Enter on numeric keypad */ #define LLINPUT_NUMPAD_ADD (0xBD) /* + on numeric keypad */ #define LLINPUT_NUMPAD_SUBTRACT (0xBE) /* - on numeric keypad */ #define LLINPUT_NUMPAD_DIVIDE (0xBF) /* / on numeric keypad */ #define LLINPUT_NUMPAD_MULTIPLY (0xC0) /* * on numeric keypad */ #define LLINPUT_NUMPAD_DECIMAL (0xC1) /* . on numeric keypad */ #define LLINPUT_NUMPAD_0 (0xC5) #define LLINPUT_NUMPAD_1 (0xC6) #define LLINPUT_NUMPAD_2 (0xC7) #define LLINPUT_NUMPAD_3 (0xC8) #define LLINPUT_NUMPAD_4 (0xC9) #define LLINPUT_NUMPAD_5 (0xCA) #define LLINPUT_NUMPAD_6 (0xCB) #define LLINPUT_NUMPAD_7 (0xCC) #define LLINPUT_NUMPAD_8 (0xCD) #define LLINPUT_NUMPAD_9 (0xCE) #define LLINPUT_LSHIFT (0xCF) #define LLINPUT_RSHIFT (0xD0) #define LLINPUT_LCONTROL (0xD1) #define LLINPUT_RCONTROL (0xD2) #define LLINPUT_SYSRQ (0xD3) #define LLINPUT_CAPITAL (0xD4) #define LLINPUT_NUMLOCK (0xD5) #define LLINPUT_SCROLL (0xD7) /* Scroll Lock */ #define LLINPUT_LMENU (0xD8) /* left Alt */ #define LLINPUT_RMENU (0xD9) /* right Alt */ #define LLINPUT_LWIN (0xDA) /* Left Windows key */ #define LLINPUT_RWIN (0xDB) /* Right Windows key */ #define LLINPUT_APPS (0xFD) /* AppMenu key */ #define LLINPUT_KEY_1 ((TxU8)'1') #define LLINPUT_KEY_2 ((TxU8)'2') #define LLINPUT_KEY_3 ((TxU8)'3') #define LLINPUT_KEY_4 ((TxU8)'4') #define LLINPUT_KEY_5 ((TxU8)'5') #define LLINPUT_KEY_6 ((TxU8)'6') #define LLINPUT_KEY_7 ((TxU8)'7') #define LLINPUT_KEY_8 ((TxU8)'8') #define LLINPUT_KEY_9 ((TxU8)'9') #define LLINPUT_KEY_0 ((TxU8)'0') #define LLINPUT_KEY_A ((TxU8)'A') #define LLINPUT_KEY_B ((TxU8)'B') #define LLINPUT_KEY_C ((TxU8)'C') #define LLINPUT_KEY_D ((TxU8)'D') #define LLINPUT_KEY_E ((TxU8)'E') #define LLINPUT_KEY_F ((TxU8)'F') #define LLINPUT_KEY_G ((TxU8)'G') #define LLINPUT_KEY_H ((TxU8)'H') #define LLINPUT_KEY_I ((TxU8)'I') #define LLINPUT_KEY_J ((TxU8)'J') #define LLINPUT_KEY_K ((TxU8)'K') #define LLINPUT_KEY_L ((TxU8)'L') #define LLINPUT_KEY_M ((TxU8)'M') #define LLINPUT_KEY_N ((TxU8)'N') #define LLINPUT_KEY_O ((TxU8)'O') #define LLINPUT_KEY_P ((TxU8)'P') #define LLINPUT_KEY_Q ((TxU8)'Q') #define LLINPUT_KEY_R ((TxU8)'R') #define LLINPUT_KEY_S ((TxU8)'S') #define LLINPUT_KEY_T ((TxU8)'T') #define LLINPUT_KEY_U ((TxU8)'U') #define LLINPUT_KEY_V ((TxU8)'V') #define LLINPUT_KEY_W ((TxU8)'W') #define LLINPUT_KEY_X ((TxU8)'X') #define LLINPUT_KEY_Y ((TxU8)'Y') #define LLINPUT_KEY_Z ((TxU8)'Z') #define LLINPUT_KEY_MINUS ((TxU8)'-') /* - on main keyboard */ #define LLINPUT_KEY_EQUALS ((TxU8)'=') #define LLINPUT_KEY_BACK ((TxU8)'\b') /* backspace */ #define LLINPUT_KEY_TAB ((TxU8)'\t') #define LLINPUT_KEY_LBRACKET ((TxU8)'[') #define LLINPUT_KEY_RBRACKET ((TxU8)']') #define LLINPUT_KEY_RETURN ((TxU8)'\n') /* Enter on main keyboard */ #define LLINPUT_KEY_SEMICOLON ((TxU8)';') #define LLINPUT_KEY_APOSTROPHE ((TxU8)'\'') #define LLINPUT_KEY_GRAVE ((TxU8)'`') /* accent grave */ #define LLINPUT_KEY_BACKSLASH ((TxU8)'\\') #define LLINPUT_KEY_COMMA ((TxU8)',') #define LLINPUT_KEY_PERIOD ((TxU8)'.') /* . on main keyboard */ #define LLINPUT_KEY_SLASH ((TxU8)'/') /* / on main keyboard */ #define LLINPUT_KEY_SPACE ((TxU8)' ') //:------------------------------------------------------------------------- #define LLINPUT_MOTION 0x101 #define LLINPUT_POSITION 0x102 #define LLINPUT_BUTTON(idx) (0x200+idx) #define LLINPUT_BUTTON_0 0x200 #define LLINPUT_BUTTON_1 0x201 #define LLINPUT_BUTTON_2 0x202 #define LLINPUT_BUTTON_3 0x203 #define LLINPUT_BUTTON_4 0x204 #define LLINPUT_BUTTON_5 0x205 #define LLINPUT_BUTTON_6 0x206 #define LLINPUT_BUTTON_7 0x207 #define LLINPUT_BUTTON_8 0x208 #define LLINPUT_BUTTON_9 0x209 #define LLINPUT_BUTTON_10 0x20a #define LLINPUT_BUTTON_11 0x20b #define LLINPUT_BUTTON_12 0x20c #define LLINPUT_BUTTON_13 0x20d #define LLINPUT_BUTTON_14 0x20e #define LLINPUT_BUTTON_15 0x20f #define LLINPUT_MOTION_X 0x300 #define LLINPUT_MOTION_XP 0x301 #define LLINPUT_MOTION_XM 0x302 #define LLINPUT_MOTION_Y 0x303 #define LLINPUT_MOTION_YP 0x304 #define LLINPUT_MOTION_YM 0x305 #define LLINPUT_MOTION_Z 0x306 #define LLINPUT_MOTION_ZP 0x307 #define LLINPUT_MOTION_ZM 0x308 #define LLINPUT_WINDOW_ACTIVE 0x400 #define LLINPUT_WINDOW_MINIMIZED 0x401 #define LLINPUT_DISPLAYMODE_CHANGED 0x402 /* * Utilities * STATE_Justdown() - returns true when key just pressed * STATE_Justup() - returns true when key just released * STATE_Up() - returns true when key released * STATE_Down() - returns true when key pressed */ inline bool STATE_Justdown(PtrInputEvent ev ) { SYS_ASSERT_PTR(ev); return (ev->state & 0x3) == 0x1; // just pressed } inline bool STATE_Justup(PtrInputEvent ev ) { SYS_ASSERT_PTR(ev); return (ev->state & 0x3) == 0x2; // just released } inline bool STATE_Up(PtrInputEvent ev ) { SYS_ASSERT_PTR(ev); return (ev->state & 0x1) == 0x0; // released } inline bool STATE_Down(PtrInputEvent ev ) { SYS_ASSERT_PTR(ev); return (ev->state & 0x1) == 0x1; // pressed } inline bool Justdown(TxU8 kbtn){ return (kbtn&0x3) == 0x1; // just pressed } inline bool Justup(TxU8 kbtn){ return (kbtn&0x3) == 0x2; // just pressed } inline bool down(TxU8 kbtn){ return (kbtn&0x1); // pressed } inline bool up(TxU8 kbtn){ return (kbtn&0x1) == 0; // released } extern queue Input_Devices; /* * prototypes exported functions */ extern void llinput_Init(void *window); extern void llinput_Exit(void); extern void llinput_Update(void); //no msg wait extern void llinput_Poll(void); //msg wait extern void llinput_ResetEvent(void); extern void llinput_ResetEvent(const char *devicename); extern void llinput_ClearEvent(void); extern void llinput_ClearEvent(const char *devicename); extern inputEvent * llinput_GetEvent(void); extern inputEvent * llinput_GetEvent(const char *devicename); extern inputEvent * llinput_GetState(int eventid, const char *devicename); extern void llinput_WaitforActivation(void); extern const char * llinput_GetEventName(int eventid); extern int llinput_GetEventId(const char *eventname); #endif