Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Moved the directinput joystick hwdata stuff into a seperate header file.
Browse files Browse the repository at this point in the history
  • Loading branch information
bobbens committed Aug 6, 2008
1 parent 2ccda11 commit 12bb5f4
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 42 deletions.
43 changes: 1 addition & 42 deletions src/joystick/win32/SDL_dxjoystick.c
Expand Up @@ -38,20 +38,7 @@
#include "SDL_joystick.h"
#include "../SDL_sysjoystick.h"
#include "../SDL_joystick_c.h"

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define DIRECTINPUT_VERSION 0x0500
#include <dinput.h>
#ifdef _MSC_VER
/* Used for the c_dfDIJoystick2 symbol (no imports are used) */
# pragma comment (lib, "dinput.lib")
#endif
#include <dxerr.h>
#ifdef _MSC_VER
# pragma comment (lib, "dxerr.lib")
#endif
#include "SDL_dxjoystick_c.h"

/* an ISO hack for VisualC++ */
#ifdef _MSC_VER
Expand All @@ -60,7 +47,6 @@

#define INPUT_QSIZE 32 /* Buffer up to 32 input messages */
#define MAX_JOYSTICKS 8
#define MAX_INPUTS 256 /* each joystick can have up to 256 inputs */
#define AXIS_MIN -32768 /* minimum value for axis coordinate */
#define AXIS_MAX 32767 /* maximum value for axis coordinate */
#define JOY_AXIS_THRESHOLD (((AXIS_MAX)-(AXIS_MIN))/100) /* 1% motion */
Expand Down Expand Up @@ -95,33 +81,6 @@ static int SDL_PrivateJoystickButton_Int(SDL_Joystick * joystick,
Uint8 button, Uint8 state);


/* local types */
typedef enum Type
{ BUTTON, AXIS, HAT } Type;

typedef struct input_t
{
/* DirectInput offset for this input type: */
DWORD ofs;

/* Button, axis or hat: */
Type type;

/* SDL input offset: */
Uint8 num;
} input_t;

/* The private structure used to keep track of a joystick */
struct joystick_hwdata
{
LPDIRECTINPUTDEVICE2 InputDevice;
DIDEVCAPS Capabilities;
int buffered;

input_t Inputs[MAX_INPUTS];
int NumInputs;
};

/* Convert a DirectInput return code to a text message */
static void
SetDIerror(const char *function, HRESULT code)
Expand Down
82 changes: 82 additions & 0 deletions src/joystick/win32/SDL_dxjoystick_c.h
@@ -0,0 +1,82 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2006 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

#ifndef SDL_JOYSTICK_DINPUT_H

/* DirectInput joystick driver; written by Glenn Maynard, based on Andrei de
* A. Formiga's WINMM driver.
*
* Hats and sliders are completely untested; the app I'm writing this for mostly
* doesn't use them and I don't own any joysticks with them.
*
* We don't bother to use event notification here. It doesn't seem to work
* with polled devices, and it's fine to call IDirectInputDevice2_GetDeviceData and
* let it return 0 events. */

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

#define DIRECTINPUT_VERSION 0x0500
#include <dinput.h>
#ifdef _MSC_VER
/* Used for the c_dfDIJoystick2 symbol (no imports are used) */
# pragma comment (lib, "dinput.lib")
#endif
#include <dxerr.h>
#ifdef _MSC_VER
# pragma comment (lib, "dxerr.lib")
#endif


#define MAX_INPUTS 256 /* each joystick can have up to 256 inputs */


/* local types */
typedef enum Type
{ BUTTON, AXIS, HAT } Type;

typedef struct input_t
{
/* DirectInput offset for this input type: */
DWORD ofs;

/* Button, axis or hat: */
Type type;

/* SDL input offset: */
Uint8 num;
} input_t;

/* The private structure used to keep track of a joystick */
struct joystick_hwdata
{
LPDIRECTINPUTDEVICE2 InputDevice;
DIDEVCAPS Capabilities;
int buffered;

input_t Inputs[MAX_INPUTS];
int NumInputs;
};

#endif /* SDL_JOYSTICK_DINPUT_H */

0 comments on commit 12bb5f4

Please sign in to comment.