Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
joy(3)				 Allegro manual 			  joy(3)

NAME
     joy  - Global array of joystick state information. Allegro game programming
     library.

SYNOPSIS
     #include <allegro.h>

     extern JOYSTICK_INFO joy[n];

DESCRIPTION
     Global array of  joystick	state  information,  which  is	updated  by  the
     poll_joystick()  function.  Only the first num_joysticks elements will con-
     tain meaningful information. The JOYSTICK_INFO structure is defined as:

	typedef struct JOYSTICK_INFO
	{
	   int flags;			    - status flags for this
					      joystick
	   int num_sticks;		    - how many stick inputs?
	   int num_buttons;		    - how many buttons?
	   JOYSTICK_STICK_INFO stick[n];    - stick state information
	   JOYSTICK_BUTTON_INFO button[n];  - button state information
	} JOYSTICK_INFO;

     The button status is stored in the structure:

	typedef struct JOYSTICK_BUTTON_INFO
	{
	   int b;			    - boolean on/off flag
	   char *name;			    - description of this
					      button
	} JOYSTICK_BUTTON_INFO;

     You may wish to display the button names as part of an input  configuration
     screen  to let the user choose what game function will be performed by each
     button, but in simpler situations you can safely assume that the first  two
     elements in the button array will always be the main trigger controls.

     Each  joystick  will  provide  one  or more stick inputs, of varying types.
     These can be digital controls which  snap	to  specific  positions  (eg.  a
     gamepad controller, the coolie hat on a Flightstick Pro or Wingman Extreme,
     or a normal joystick which hasn't yet been calibrated), or they can be full
     analogue inputs with a smooth range of motion. Sticks may also have differ-
     ent  numbers of axes, for example a normal directional control has two, but
     the Flightstick Pro throttle is only a single axis, and it is possible that
     the system could be extended in the future to support full 3d  controllers.
     A stick input is described by the structure:

	typedef struct JOYSTICK_STICK_INFO
	{
	   int flags;			    - status flags for this
					      input
	   int num_axis;		    - how many axes do we
					      have? (note the misspelling)
	   JOYSTICK_AXIS_INFO axis[n];	    - axis state information
	   char *name;			    - description of this
					      input
	} JOYSTICK_STICK_INFO;

     A	single	joystick may provide several different stick inputs, but you can
     safely assume that the first element in the stick array will always be  the
     main directional controller.

     Information about each of the stick axis is stored in the substructure:

	typedef struct JOYSTICK_AXIS_INFO
	{
	   int pos;			    - analogue axis position
	   int d1, d2;			    - digital axis position
	   char *name;			    - description of this axis
	} JOYSTICK_AXIS_INFO;

     This  provides  both  analogue input in the pos field (ranging from -128 to
     128 or from 0 to 255, depending on the type of the  control),  and  digital
     values in the d1 and d2 fields. For example, when describing the X-axis po-
     sition, the pos field will hold the horizontal position of the joystick, d1
     will  be  set if it is moved left, and d2 will be set if it is moved right.
     Allegro will fill in all these values regardless of whether it is	using  a
     digital or analogue joystick, emulating the pos field for digital inputs by
     snapping it to the min, middle, and maximum positions, and emulating the d1
     and  d2 values for an analogue stick by comparing the current position with
     the centre point.

     The joystick flags field may contain any combination of the bit flags:

     JOYFLAG_DIGITAL This control is currently providing digital input.

     JOYFLAG_ANALOGUE This control is currently providing analogue input.

     JOYFLAG_CALIB_DIGITAL This control will be capable of providing digital in-
     put once it has been calibrated, but is not doing this at the moment.

     JOYFLAG_CALIB_ANALOGUE This control will be capable of  providing	analogue
     input once it has been calibrated, but is not doing this at the moment.

     JOYFLAG_CALIBRATE	Indicates that this control needs to be calibrated. Many
     devices require multiple calibration steps, so you should	call  the  cali-
     brate_joystick() function from a loop until this flag is cleared.

     JOYFLAG_SIGNED  Indicates that the analogue axis position is in signed for-
     mat, ranging from -128 to 128. This is the case for all 2d directional con-
     trols.

     JOYFLAG_UNSIGNED Indicates that the analogue axis position is  in	unsigned
     format,  ranging  from  0 to 255. This is the case for all 1d throttle con-
     trols.

     Note for people who spell funny: in case you  don't  like	having	to  type
     "analogue",  there are some #define aliases in allegro/joystick.h that will
     allow you to write "analog" instead.

SEE ALSO
     install_joystick(3),  poll_joystick(3),  num_joysticks(3),   calibrate_joy-
     stick(3), calibrate_joystick_name(3), exjoy(3)

Allegro 			  version 4.4.3 			  joy(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=joy&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help