/* Keyboard.h : Functions definition for the keyboard management. Author : JENTEY F. Last update : 03/07/96 01/08/97 Direct Input */ #ifndef _INO_KEYBOARD_H #define _INO_KEYBOARD_H #include "cpa_std.h" #include "dinput.h" #ifndef u_short #define u_short unsigned short #endif #ifndef u_long #define u_long unsigned long #endif /**************************************/ #ifndef CPA_EXPORT #if defined(CPA_WANTS_IMPORT) #define CPA_EXPORT __declspec(dllimport) #elif defined(CPA_WANTS_EXPORT) #define CPA_EXPORT __declspec(dllexport) #else #define CPA_EXPORT #endif #endif /**************************************/ /* All functions return a short value that should be compared with this constant */ #define C_wKbError 32767 #define C_wKbTrue 32766 #define C_wKbFalse 32765 /* Keyboard error code */ #define C_FirstErrorKeyboard 0x2000 #define C_ErrKeyboardNotInitialized ( C_FirstErrorKeyboard + 0 ) #define C_ErrBadKeyCode ( C_FirstErrorKeyboard + 1 ) #define C_ErrNotInRecordingMode ( C_FirstErrorKeyboard + 2 ) #define C_ErrNotInNormalMode ( C_FirstErrorKeyboard + 3 ) #define C_ErrNotInPlayingMode ( C_FirstErrorKeyboard + 4 ) #define C_ErrDemoBadFileFormat ( C_FirstErrorKeyboard + 5 ) #define C_ErrDemoFileError ( C_FirstErrorKeyboard + 6 ) #define C_ErrHistoricOverflow ( C_FirstErrorKeyboard + 7 ) #define C_ErrFocusLost ( C_FirstErrorKeyboard + 8 ) #define C_ErrDirectInputError ( C_FirstErrorKeyboard + 9 ) /* Key state */ #define C_ucKeyPressed 0x80 /* Constant to use to select key */ #define C_ucKey_SQUARE DIK_GRAVE #define C_ucKey_1 DIK_1 #define C_ucKey_2 DIK_2 #define C_ucKey_3 DIK_3 #define C_ucKey_4 DIK_4 #define C_ucKey_5 DIK_5 #define C_ucKey_6 DIK_6 #define C_ucKey_7 DIK_7 #define C_ucKey_8 DIK_8 #define C_ucKey_9 DIK_9 #define C_ucKey_0 DIK_0 #define C_ucKey_END_BRACET DIK_MINUS #define C_ucKey_EQUAL DIK_EQUALS #define C_ucKey_A DIK_Q #define C_ucKey_Z DIK_W #define C_ucKey_E DIK_E #define C_ucKey_R DIK_R #define C_ucKey_T DIK_T #define C_ucKey_Y DIK_Y #define C_ucKey_U DIK_U #define C_ucKey_I DIK_I #define C_ucKey_O DIK_O #define C_ucKey_P DIK_P #define C_ucKey_EXP DIK_LBRACKET #define C_ucKey_DOLLAR DIK_RBRACKET #define C_ucKey_Q DIK_A #define C_ucKey_S DIK_S #define C_ucKey_D DIK_D #define C_ucKey_F DIK_F #define C_ucKey_G DIK_G #define C_ucKey_H DIK_H #define C_ucKey_J DIK_J #define C_ucKey_K DIK_K #define C_ucKey_L DIK_L #define C_ucKey_M DIK_SEMICOLON #define C_ucKey_PERCENT DIK_APOSTROPHE #define C_ucKey_MUL DIK_BACKSLASH #define C_ucKey_INF 0x56 /* Not define in dinput.h */ #define C_ucKey_W DIK_Z #define C_ucKey_X DIK_X #define C_ucKey_C DIK_C #define C_ucKey_V DIK_V #define C_ucKey_B DIK_B #define C_ucKey_N DIK_N #define C_ucKey_VIRG DIK_M #define C_ucKey_PVIRG DIK_COMMA #define C_ucKey_PP DIK_PERIOD #define C_ucKey_NOT DIK_SLASH #define C_ucKey_F1 DIK_F1 #define C_ucKey_F2 DIK_F2 #define C_ucKey_F3 DIK_F3 #define C_ucKey_F4 DIK_F4 #define C_ucKey_F5 DIK_F5 #define C_ucKey_F6 DIK_F6 #define C_ucKey_F7 DIK_F7 #define C_ucKey_F8 DIK_F8 #define C_ucKey_F9 DIK_F9 #define C_ucKey_F10 DIK_F10 #define C_ucKey_F11 DIK_F11 #define C_ucKey_F12 DIK_F12 #define C_ucKey_SYSTEM DIK_SYSRQ #define C_ucKey_SCROLL DIK_SCROLL #define C_ucKey_PAUSE 0x69 /* Not define in dinput.h*/ #define C_ucKey_SPACE DIK_SPACE #define C_ucKey_ESC DIK_ESCAPE #define C_ucKey_TAB DIK_TAB #define C_ucKey_CAPSLOCK DIK_CAPITAL #define C_ucKey_LSHIFT DIK_LSHIFT #define C_ucKey_RSHIFT DIK_RSHIFT #define C_ucKey_RCTRL DIK_RCONTROL #define C_ucKey_LCTRL DIK_LCONTROL #define C_ucKey_LALT DIK_LMENU #define C_ucKey_RALT DIK_RMENU #define C_ucKey_ALTGR DIK_LCONTROL #define C_ucKey_ENTER DIK_RETURN #define C_ucKey_BACK DIK_BACK #define C_ucKey_INS DIK_INSERT #define C_ucKey_DEL DIK_DELETE #define C_ucKey_HOME DIK_HOME #define C_ucKey_END DIK_END #define C_ucKey_PRIOR DIK_PRIOR #define C_ucKey_NEXT DIK_NEXT #define C_ucKey_UP DIK_UP #define C_ucKey_DOWN DIK_DOWN #define C_ucKey_LEFT DIK_LEFT #define C_ucKey_RIGHT DIK_RIGHT #define C_ucKey_PAD_ENTER DIK_NUMPADENTER #define C_ucKey_NUMLOCK 0xc5 /* DIK_NUMLOCK ?? */ #define C_ucKey_PAD_DIV DIK_DIVIDE #define C_ucKey_PAD_MUL DIK_MULTIPLY #define C_ucKey_PAD_SUB DIK_SUBTRACT #define C_ucKey_PAD_ADD DIK_ADD #define C_ucKey_PAD_POINT DIK_DECIMAL #define C_ucKey_PAD_0 DIK_NUMPAD0 #define C_ucKey_PAD_1 DIK_NUMPAD1 #define C_ucKey_PAD_2 DIK_NUMPAD2 #define C_ucKey_PAD_3 DIK_NUMPAD3 #define C_ucKey_PAD_4 DIK_NUMPAD4 #define C_ucKey_PAD_5 DIK_NUMPAD5 #define C_ucKey_PAD_6 DIK_NUMPAD6 #define C_ucKey_PAD_7 DIK_NUMPAD7 #define C_ucKey_PAD_8 DIK_NUMPAD8 #define C_ucKey_PAD_9 DIK_NUMPAD9 #define C_ucKey_LWIN DIK_LWIN #define C_ucKey_RWIN DIK_RWIN #define C_ucKey_APPS DIK_APPS /****************************************************************************** All functions return a short type value that must be compared with the C_wKbError to check if the function success. You can then read the error code with the error management functions. ******************************************************************************/ #if !defined U64 /*////////////////////*/ /* Global Variables //*/ /*////////////////////*/ #undef EXTERN #undef extern #if !defined(__DeclareGlobalVariableIntell_h__) #define EXTERN extern #else #define EXTERN #endif /* __DeclareGlobalVariableIntell_h__*/ EXTERN char g_cIsAzerty; #endif /* U64*/ #if defined(__cplusplus) extern "C" { /****************************************************************************** Keyboard initialisation functions. ******************************************************************************/ /* This function must be called one time when the game is launched. The parameter HistorySize is the number of previous status conserve. */ CPA_EXPORT short INO_fn_wInitKeyboard(short wHistorySize, HINSTANCE hInstance, HWND hWindow); /* Reinitialization of the keyboard. The history is clear. */ CPA_EXPORT short INO_fn_wResetKeyboard(void); /* This function free memory and release keyboard ressource. */ CPA_EXPORT short INO_fn_wFreeKeyboard(void); /* This function returns the number of keys of the keyboard. */ CPA_EXPORT short INO_fn_wGetNumberOfKey(void); /****************************************************************************** Keyboard state. ******************************************************************************/ /* This function must be called at regular interval, for example each VBL. It Update the informations about the keyboard. */ CPA_EXPORT short INO_fn_wReadKeyboard(void); /* Retrun C_wKbTrue if the application has the keyboard focus */ CPA_EXPORT short INO_fn_wIsKeyboardAcquired(void); /* Remove an active key. An error occurs when the specified key isn't active. */ CPA_EXPORT short INO_fn_wRemoveActiveKey(short wKeyCode); /* Add a key to be managed. There is an error if the specified key is already active. */ CPA_EXPORT short INO_fn_wAddActiveKey(short wKeyCode); /* Return the code of the last pressed key. */ CPA_EXPORT short INO_fn_wGetLastKey(void); /* This function return c_wKbTrue if the keyboard state has changed since the last */ CPA_EXPORT short INO_fn_wKeyboardStateHasChanged(void); /* This function returns C_wKbTrue if the specified key is down else the result is C_wKbFalse. */ CPA_EXPORT short INO_fn_wKeyDown(short wKeyCode); /* This function returns C_wKbTrue if the specified key has just been pressed. ( it wasn't pressed after the previous call of fn_wKbReadKeyboard and it is pressed after the last call of this fonction). */ CPA_EXPORT short INO_fn_wKeyJustDown(short wKeyCode); /* This function returns C_wKbTrue if the specified key has just been released. ( it was pressed after the previous call of fn_wKbReadKeyboard and it isn't yet). */ CPA_EXPORT short INO_fn_wKeyJustUp(short wKeyCode); /* This function return C_wKbTrue if the selected key was down in the specified previous state. */ CPA_EXPORT short INO_fn_wKeyWasDown(short wKeycode, short wHistoryIndex); /* This fonction returns the ASCII code corresponding to a key code if this key is printable. */ /* CPA_EXPORT short INO_fn_wGetASCIICodeOfKey(short wKeyCode); */ /* This fonction returns the ASCII code corresponding to the keyboard current state. If the last pressed key is not printable, return an error. */ CPA_EXPORT short INO_fn_wGetLastASCIICode(void); /* This function compares the string pointed by the p_szTestString with the string formed with the last pressed key. */ CPA_EXPORT short INO_fn_wCompareWithCurrentString(char *p_szTestString); /* If not C_wJoyError, the result is the elapsed time of inactivity of the keyboard. */ CPA_EXPORT short INO_fn_wGetKeyboardInactivityTime(u_long *p_ulCount); /* If not C_wJoyError, the result is the elapsed time since the specified previous state. */ CPA_EXPORT short INO_fn_wKbElapsedTime(short wHistoryIndex, u_long *p_ulCount); /* This function returns a pointer to the last error message string. */ CPA_EXPORT short INO_fn_wGetErrorString(char **pp_szErrorString); /* This function returns a last error code. */ CPA_EXPORT u_long INO_fn_ulGetLastErrorCode(void); /********************************************************************* Demo mode functions *********************************************************************/ /* DEFINE THE KEYS TO STOP THE DEMO RECORDING MODE. OF COURSE, THE DEFINE HERE SHOULDN'T BE USED IN THE GAME. DEFAULT IS ESC. */ CPA_EXPORT short INO_fn_wAddStopRecordingKey(short wKeyCode); /* REMOVE A KEY FROM THE EXIT DEMO KEY LIST. */ CPA_EXPORT short INO_fn_wRemoveStopRecordingKey(short wKeyCode); /* STARTS THE DEMO RECORDING MODE. A FILE IS CREATE WITH THE NAME INDICATED BY p_szFileName. */ CPA_EXPORT short INO_fn_wStartRecordingKeyboard(char *p_szFileName); /* Quit the demo recording mode. The data of the demo sequence are stored in the file open in the fn_wKbStartDemoRecordMode. */ CPA_EXPORT short INO_fn_wStopRecordingKeyboard(void); /* THIS FUNCTION RETURN THE NUMBER OF FRAME OF THE DEMO SEQUENCE. */ CPA_EXPORT short INO_fn_wGetKeyboardDemoFrameCount(void); /* THIS FUNCTION START THE DEMO PLAYING MODE. */ CPA_EXPORT short INO_fn_wStartKeyboardDemo(char *p_szFileName); /* THIS FUNCTION QUIT THE DEMO PLAYING MODE. */ CPA_EXPORT short INO_fn_wStopKeyboardDemo(void); /* THIS FUNCTION RETURN THE CURRENT KEYBOARD MODE.(NORMAL, DEMO RECORDING OR DEMO PLAYING). */ CPA_EXPORT short INO_fn_wGetKeyboardCurrentMode(void); } #else /* C prototype */ extern CPA_EXPORT short INO_fn_wInitKeyboard(short wHistorySize, HINSTANCE hInstance, HWND hWindow); extern CPA_EXPORT short INO_fn_wResetKeyboard(void); extern CPA_EXPORT short INO_fn_wFreeKeyboard(void); extern CPA_EXPORT short INO_fn_wGetNumberOfKey(void); extern CPA_EXPORT short INO_fn_wReadKeyboard(void); extern CPA_EXPORT short INO_fn_wIsKeyboardAcquired(void); extern CPA_EXPORT short INO_fn_wRemoveActiveKey(short wKeyCode); extern CPA_EXPORT short INO_fn_wAddActiveKey(short wKeyCode); extern CPA_EXPORT short INO_fn_wGetLastKey(void); extern CPA_EXPORT short INO_fn_wKeyboardStateHasChanged(void); extern CPA_EXPORT short INO_fn_wKeyDown(short wKeyCode); extern CPA_EXPORT short INO_fn_wKeyJustDown(short wKeyCode); extern CPA_EXPORT short INO_fn_wKeyJustUp(short wKeyCode); extern CPA_EXPORT short INO_fn_wKeyWasDown(short wKeycode, short wHistoryIndex); /*CPA_EXPORT short INO_fn_wGetASCIICodeOfKey(short wKeyCode);*/ extern CPA_EXPORT short INO_fn_wGetLastASCIICode(void); extern CPA_EXPORT short INO_fn_wCompareWithCurrentString(char *p_szTestString); extern CPA_EXPORT short INO_fn_wGetKeyboardInactivityTime(u_long *p_ulCount); extern CPA_EXPORT short INO_fn_wKbElapsedTime(short wHistoryIndex, u_long *p_ulCount); extern CPA_EXPORT short INO_fn_wGetErrorString(char **pp_szErrorString); extern CPA_EXPORT u_long INO_fn_ulGetLastErrorCode(void); extern CPA_EXPORT short INO_fn_wAddStopRecordingKey(short wKeyCode); extern CPA_EXPORT short INO_fn_wRemoveStopRecordingKey(short wKeyCode); extern CPA_EXPORT short INO_fn_wStartRecordingKeyboard(char *p_szFileName); extern CPA_EXPORT short INO_fn_wStopRecordingKeyboard(void); extern CPA_EXPORT short INO_fn_wGetKeyboardDemoFrameCount(void); extern CPA_EXPORT short INO_fn_wStartKeyboardDemo(char *p_szFileName); extern CPA_EXPORT short INO_fn_wStopKeyboardDemo(void); extern CPA_EXPORT short INO_fn_wGetKeyboardCurrentMode(void); #endif /* Old prototype compatibility */ #define fn_wKbInitKeyboard(A,B,C) INO_fn_wInitKeyboard(A,B,C) #define fn_wKbResetKeyboard() INO_fn_wResetKeyboard() #define fn_wKbFreeKeyboard() INO_fn_wFreeKeyboard() #define fn_wKbKeyNumber() INO_fn_wGetNumberOfKey() #define fn_wKbReadKeyboard() INO_fn_wReadKeyboard() #define fn_wKbIsKeyboardAcquired() INO_fn_wIsKeyboardAcquired() #define fn_wKbRemoveActiveKey(A) INO_fn_wRemoveActiveKey(A) #define fn_wKbAddActiveKey(A) INO_fn_wAddActiveKey(A) #define fn_wKbLastKey() INO_fn_wGetLastKey() #define fn_wKbStateHasChanged() INO_fn_wKeyboardStateHasChanged() #define fn_wKbIsDown(A) INO_fn_wKeyDown(A) #define fn_wKbJustDown(A) INO_fn_wKeyJustDown(A) #define fn_wKbJustUp(A) INO_fn_wKeyJustUp(A) #define fn_wKbWasDown(A,B) INO_fn_wKeyWasDown(A,B) #define fn_wKbGetLastASCII() INO_fn_wGetCurrentASCIICode() #define fn_wKbCompareString(A) INO_fn_wCompareWithCurrentString(A) #define fn_wKbInactivityTime(A) INO_fn_wGetKeyboardInactivityTime(A) #define fn_wKbElapsedTime(A,B) INO_fn_wKbElapsedTime(A,B) #define fn_wKbAddExitDemoKey(A) INO_fn_wAddStopRecordingKey(A) #define fn_wKbRemoveExitDemoKey(A) INO_fn_wRemoveStopRecordingKey(A) #define fn_wKbStartDemoRecording(A) INO_fn_wStartRecordingKeyboard(A) #define fn_wKbExitDemoRecording() INO_fn_wStopRecordingKeyboard() #define fn_wKbGetDemoFrameCount() INO_fn_wGetKeyboardDemoFrameCount() #define fn_wKbStartDemoPlaying(A) INO_fn_wStartKeyboardDemo(A) #define fn_wKbExitDemoPlaying() INO_fn_wStopKeyboardDemo() #define fn_wKbGetCurrentMode() INO_fn_wGetKeyboardCurrentMode() #define fn_wKbGetErrorString(A) INO_fn_wGetErrorString(A) #define fn_ulKbGetLastErrorCode() INO_fn_ulGetLastErrorCode() #endif /* _INO_KEYBOARD_H */