#ifndef _al_included_aintern_mouse_h
#define _al_included_aintern_mouse_h

#include "allegro/internal/aintern_events.h"

AL_BEGIN_EXTERN_C


typedef struct AL_MOUSE_DRIVER
{
   int  msedrv_id;
   const char *msedrv_name;
   const char *msedrv_desc;
   const char *msedrv_ascii_name;
   AL_METHOD(bool, init_mouse, (void));
   AL_METHOD(void, exit_mouse, (void));
   AL_METHOD(AL_MOUSE*, get_mouse, (void));
   AL_METHOD(unsigned int, get_mouse_num_buttons, (void));
   AL_METHOD(unsigned int, get_mouse_num_axes, (void));
   AL_METHOD(bool, set_mouse_xy, (int x, int y));
   AL_METHOD(bool, set_mouse_axis, (int which, int value));
   AL_METHOD(bool, set_mouse_range, (int x1, int y1, int x2, int y2));
   AL_METHOD(void, get_mouse_state, (AL_MSESTATE *ret_state));
} AL_MOUSE_DRIVER;


AL_ARRAY(_DRIVER_INFO, _al_mouse_driver_list);


struct AL_MOUSE
{
   AL_EVENT_SOURCE es;
};


AL_END_EXTERN_C

#endif

/* vi ts=8 sts=3 sw=3 et */
