svgalib-1/src/joystick/vgajoystick.h
2011-02-24 00:22:00 -08:00

68 lines
2.3 KiB
C

#ifndef VGAJOYSTICK_H
#define VGAJOYSTICK_H
/* Joystick interface modeled after svgalibs keyboard and mouse interfaces
* Copyright 1998 Daniel Engström <daniel.engstrom@riksnett.no>
* Partly based on code from
* joystick-0.7.3 Copyright (C) 1992, 1993 Author C. Smith
* and
* joystick-1.0.6 Copyright (C) 1997 Vojtech Pavlik
*
* Extension and modifications. Multiple joystick support, VC switching,
* etc. Michael Weller <eowmob@exp-math.uni-essen.de>.
*/
/* event for joystick handlers */
#define JOY_EVENTBUTTONDOWN 1
#define JOY_EVENTBUTTONUP 2
#define JOY_EVENTAXIS 3
/* file is a struct FILE to output calibration instructions to,
* set to NULL to skip calibration
*/
typedef void (*__joystick_output) (const char *msg);
int joystick_init(int joydev, __joystick_output jo);
/* This is guaranteed not to collide with any user definition */
#define JOY_CALIB_STDOUT ((__joystick_output)(void *)joystick_init)
void joystick_close(int joydev);
/* polls the joystick and calls the eventhandler */
int joystick_update(void);
typedef void (*__joystick_handler) (int event, int number, char value, int joydev);
/* event - event type; see above
* number - the axis or button number for this event 0=x axis or button 1, etc.
* value - value for axis events -128 - 0 - +127
*/
void joystick_sethandler(int joydev, __joystick_handler jh);
void joystick_setdefaulthandler(int joydev);
char joystick_getnumaxes(int joydev);
char joystick_getnumbuttons(int joydev);
/* querys the default handler if used */
char joystick_getaxis(int joydev, int a);
char joystick_getbutton(int joydev, int b);
#define joystick_button1(i) joystick_getbutton(i, 0)
#define joystick_button2(i) joystick_getbutton(i, 1)
#define joystick_button3(i) joystick_getbutton(i, 2)
#define joystick_button4(i) joystick_getbutton(i, 3)
#define joystick_getb1() joystick_getbutton(0, 0)
#define joystick_getb2() joystick_getbutton(0, 1)
#define joystick_getb3() joystick_getbutton(0, 2)
#define joystick_getb4() joystick_getbutton(0, 3)
#define joystick_x(i) joystick_getaxis(i, 0)
#define joystick_y(i) joystick_getaxis(i, 1)
#define joystick_z(i) joystick_getaxis(i, 2)
#define joystick_getx() joystick_getaxis(0, 0)
#define joystick_gety() joystick_getaxis(0, 1)
#define joystick_getz() joystick_getaxis(0, 2)
#endif