91 lines
2.2 KiB
C
91 lines
2.2 KiB
C
#ifndef __al_included_allegro5_aintern_joystick_h
|
|
#define __al_included_allegro5_aintern_joystick_h
|
|
|
|
#include "allegro5/internal/aintern_driver.h"
|
|
#include "allegro5/internal/aintern_events.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
typedef struct ALLEGRO_JOYSTICK_DRIVER
|
|
{
|
|
int joydrv_id;
|
|
const char *joydrv_name;
|
|
const char *joydrv_desc;
|
|
const char *joydrv_ascii_name;
|
|
AL_METHOD(bool, init_joystick, (void));
|
|
AL_METHOD(void, exit_joystick, (void));
|
|
AL_METHOD(bool, reconfigure_joysticks, (void));
|
|
AL_METHOD(int, num_joysticks, (void));
|
|
AL_METHOD(ALLEGRO_JOYSTICK *, get_joystick, (int joyn));
|
|
AL_METHOD(void, release_joystick, (ALLEGRO_JOYSTICK *joy));
|
|
AL_METHOD(void, get_joystick_state, (ALLEGRO_JOYSTICK *joy, ALLEGRO_JOYSTICK_STATE *ret_state));
|
|
AL_METHOD(const char *, get_name, (ALLEGRO_JOYSTICK *joy));
|
|
AL_METHOD(bool, get_active, (ALLEGRO_JOYSTICK *joy));
|
|
} ALLEGRO_JOYSTICK_DRIVER;
|
|
|
|
|
|
AL_ARRAY(_AL_DRIVER_INFO, _al_joystick_driver_list);
|
|
|
|
|
|
/* macros for constructing the driver list */
|
|
#define _AL_BEGIN_JOYSTICK_DRIVER_LIST \
|
|
_AL_DRIVER_INFO _al_joystick_driver_list[] = \
|
|
{
|
|
|
|
#define _AL_END_JOYSTICK_DRIVER_LIST \
|
|
{ 0, NULL, false } \
|
|
};
|
|
|
|
|
|
/* information about a single joystick axis */
|
|
typedef struct _AL_JOYSTICK_AXIS_INFO
|
|
{
|
|
char *name;
|
|
} _AL_JOYSTICK_AXIS_INFO;
|
|
|
|
|
|
/* information about one or more axis (a slider or directional control) */
|
|
typedef struct _AL_JOYSTICK_STICK_INFO
|
|
{
|
|
int flags; /* bit-field */
|
|
int num_axes;
|
|
_AL_JOYSTICK_AXIS_INFO axis[_AL_MAX_JOYSTICK_AXES];
|
|
char *name;
|
|
} _AL_JOYSTICK_STICK_INFO;
|
|
|
|
|
|
/* information about a joystick button */
|
|
typedef struct _AL_JOYSTICK_BUTTON_INFO
|
|
{
|
|
const char *name;
|
|
} _AL_JOYSTICK_BUTTON_INFO;
|
|
|
|
|
|
/* information about an entire joystick */
|
|
typedef struct _AL_JOYSTICK_INFO
|
|
{
|
|
int num_sticks;
|
|
int num_buttons;
|
|
_AL_JOYSTICK_STICK_INFO stick[_AL_MAX_JOYSTICK_STICKS];
|
|
_AL_JOYSTICK_BUTTON_INFO button[_AL_MAX_JOYSTICK_BUTTONS];
|
|
} _AL_JOYSTICK_INFO;
|
|
|
|
|
|
struct ALLEGRO_JOYSTICK
|
|
{
|
|
_AL_JOYSTICK_INFO info;
|
|
};
|
|
|
|
void _al_generate_joystick_event(ALLEGRO_EVENT *event);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/* vi ts=8 sts=3 sw=3 et */
|