Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

jscal(1) [debian man page]

jscal(1)						      General Commands Manual							  jscal(1)

NAME
jscal - joystick calibration and remapping program SYNOPSIS
jscal [options] <device-name> DESCRIPTION
jscal calibrates joysticks and maps joystick axes and buttons. Calibrating a joystick ensures the positions on the various axes are cor- rectly interpreted. Mapping axes and buttons allows the meanings of the joystick's axes and buttons to be redefined. On Debian systems the calibration settings can be stored and later applied automatically using the jscal-store command. OPTIONS
-c, --calibrate Calibrate the joystick. -h, --help Print out a summary of available options. -s, --set-correction <nb_axes,type,precision,coefficients,...> Sets correction to specified values. For each axis, specify the correction type (0 for none, 1 for "broken line"), the precision, and if necessary the correction coefficients ("broken line" corrections take four coefficients). -u, --set-mappings <nb_axes,axmap1,axmap2,...,nb_buttons,btnmap1,btnmap2,...> Sets axis and button mappings. n_of_buttons can be set to 0 to remap axes only. -t, --test-center Tests if the joystick is correctly calibrated. Returns 2 if the axes are not calibrated, 3 if buttons were pressed, 1 if there was any other error, and 0 on success. -V, --version Prints the version numbers of the running joystick driver and that which jscal was compiled for. -p, --print-correction Prints the current correction settings. The format of the output is a jscal command line. -q, --print-mappings Prints the current axis and button mappings. The format of the output is a jscal command line. CALIBRATION
Using the Linux input system, joysticks are expected to produce values between -32767 and 32767 for axes, with 0 meaning the joystick is centred. Thus, full-left should produce -32767 on the X axis, full-right 32767 on the X axis, full-forward -32767 on the Y axis, and so on. Many joysticks and gamepads (especially older ones) are slightly mis-aligned; as a result they may not use the full range of values (for the extremes of the axes), or more annoyingly they may not give 0 when centred. Calibrating a joystick provides the kernel with informa- tion on a joystick's real behaviour, which allows the kernel to correct various joysticks' deficiencies and produce consistent output as far as joystick-using software is concerned. jstest(1) is useful to determine whether a joystick is calibrated: when run, it should produce all 0s when the joystick is at rest, and each axis should be able to produce the values -32767 and 32767. Analog joysticks should produce values in between 0 and the extremes, but this is not necessary; digital directional pads work fine with only the three values. SEE ALSO
ffset(1), jstest(1), jscal-store(1). AUTHORS
jscal was written by Vojtech Pavlik and improved by many others; see the linuxconsole tools documentation for details. This manual page was written by Stephen Kitt <steve@sk2.org>, for the Debian GNU/Linux system (but may be used by others). jscal Jul 11, 2010 jscal(1)

Check Out this Related Man Page

joy(3alleg4)							  Allegro manual						      joy(3alleg4)

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 contain 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 per- formed 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 different numbers of axes, for example a normal direc- tional 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 position, 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 regard- less 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 input 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 calibrate_joystick() function from a loop until this flag is cleared. JOYFLAG_SIGNED Indicates that the analogue axis position is in signed format, ranging from -128 to 128. This is the case for all 2d direc- tional controls. JOYFLAG_UNSIGNED Indicates that the analogue axis position is in unsigned format, ranging from 0 to 255. This is the case for all 1d throt- tle controls. 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(3alleg4), poll_joystick(3alleg4), num_joysticks(3alleg4), calibrate_joystick(3alleg4), calibrate_joystick_name(3alleg4), exjoy(3alleg4) Allegro version 4.4.2 joy(3alleg4)
Man Page