73 #ifndef __FK_INPUT_HEADER__
74 #define __FK_INPUT_HEADER__
76 #if defined(WIN32) && !defined(_MINGW_)
77 #define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION
79 #include <DX/dinput.h>
80 #pragma comment(lib,"dxguid.lib")
81 #pragma comment(lib,"dinput8.lib")
84 #ifndef FK_DOXYGEN_USER_PROCESS
92 typedef unsigned long DWORD;
94 typedef int* HINSTANCE;
102 #endif // !FK_DOXYGEN_USER_PROCESS
103 #endif // WIN32 && !_MINGW_
209 #define AXIS1_X FK_AXIS1_X
210 #define AXIS1_Y FK_AXIS1_Y
211 #define AXIS2_X FK_AXIS2_X
212 #define AXIS2_Y FK_AXIS2_Y
213 #define AXIS3_X FK_AXIS3_X
214 #define AXIS3_Y FK_AXIS3_Y
215 #define AXIS_X_POS FK_AXIS_X_POS
216 #define AXIS_X_NEG FK_AXIS_X_NEG
217 #define AXIS_Y_POS FK_AXIS_Y_POS
218 #define AXIS_Y_NEG FK_AXIS_Y_NEG
219 #define AXIS_Z_POS FK_AXIS_Z_POS
220 #define AXIS_Z_NEG FK_AXIS_Z_NEG
221 #define AXIS_RX_POS FK_AXIS_RX_POS
222 #define AXIS_RX_NEG FK_AXIS_RX_NEG
223 #define AXIS_RY_POS FK_AXIS_RY_POS
224 #define AXIS_RY_NEG FK_AXIS_RY_NEG
225 #define AXIS_RZ_POS FK_AXIS_RZ_POS
226 #define AXIS_RZ_NEG FK_AXIS_RZ_NEG
260 #if defined(WIN32) && !defined(_MINGW_)
261 static const int BUTTON_NUM = 32;
262 static const int DIMGR_BUFFER_SIZE = 256;
263 static const int INPUT_DEVICE_NUM = 16;
264 static const int MOUSE_BUTTON_MAX = 8;
265 static const int KEY_NUM = 256;
267 int buttonSwap[INPUT_DEVICE_NUM][BUTTON_NUM], axisSwap[INPUT_DEVICE_NUM][2*3];
268 unsigned long axisMap[4*3], povMap[8], keyMap[BUTTON_NUM];
271 int pos, neg, border;
273 std::map<int, AxisParam> axisParams[INPUT_DEVICE_NUM];
279 POINT m_MouseWorldPos;
281 POINT m_MouseLocalPos;
282 bool m_Button[MOUSE_BUTTON_MAX];
283 bool m_LastButton[MOUSE_BUTTON_MAX];
291 int m_AllowX[INPUT_DEVICE_NUM];
294 int m_AllowY[INPUT_DEVICE_NUM];
297 int m_AllowMin[INPUT_DEVICE_NUM];
300 int m_AllowMax[INPUT_DEVICE_NUM];
304 LPDIRECTINPUT8 m_Input;
305 LPDIRECTINPUTDEVICE8 m_KeyBoardDevice;
306 LPDIRECTINPUTDEVICE8 m_MouseDevice;
307 LPDIRECTINPUTDEVICE8 m_JoyStciDevice[INPUT_DEVICE_NUM];
309 DIDEVICEOBJECTDATA m_DeviceObject[DIMGR_BUFFER_SIZE];
314 HRESULT UpdateJoy(
void);
315 HRESULT UpdateMouse(
void);
316 HRESULT UpdateKey(
void);
321 static BOOL CALLBACK EnumSizesCallback(LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID lpvRef);
322 static BOOL CALLBACK EnumJoysticksCallback(
const DIDEVICEINSTANCE* lpddi, LPVOID lpContext);
324 short AdjustParam(
int,
short);
325 void SetAxisParam(
int,
int,
short);
327 #endif // WIN32 && !_MINGW_
335 #ifndef FK_DOXYGEN_USER_PROCESS
338 POINT& GetMouseLocalPos(
void);
339 POINT& GetMouseWorldPos(
void);
340 bool GetMouseButton(DWORD keycode);
341 bool GetLastMouseButton(DWORD keycode);
342 int GetMouseWheel(
void);
344 bool GetKey(
const DWORD keycode);
367 HRESULT
init(HINSTANCE hinst, HWND hwnd);
487 void setBorder(
int index,
int borderX,
int borderY);
502 void setBorder(
int borderX,
int borderY);
530 void setMinMax(
int index,
int min,
int max);
640 int posBtn,
int negBtn,
int border);
701 void setAxisAssign(
int axis_id, DWORD up, DWORD dn, DWORD lt, DWORD rt);
726 DWORD r, DWORD dl, DWORD d, DWORD dr);