JOY(4) BSD Kernel Interfaces Manual JOY(4)NAME
joy -- joystick device driver
SYNOPSIS
To compile this driver into the kernel, place the following lines in your kernel configuration file:
device joy
Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):
joy_load="YES"
In /boot/device.hints:
hint.joy.0.at="isa"
hint.joy.0.port="0x201"
hint.joy.1.at="isa"
hint.joy.1.port="0x201"
#include <sys/joystick.h>
DESCRIPTION
The joystick device driver allows applications to read the status of the PC joystick.
This device may be opened by only one process at a time.
The joystick status is read from a structure via a read() call. The structure is defined in the header file as follows:
struct joystick {
int x; /* x position */
int y; /* y position */
int b1; /* button 1 status */
int b2; /* button 2 status */
};
Positions are typically in the range 0-2000.
One line perl example:
perl -e 'open(JOY,"/dev/joy0")||die;while(1)
{sysread(JOY,$x,16);@j=unpack("iiii",$x);print "@j
";sleep(1);}'
ioctl calls
Several ioctl() calls are also available. They take an argument of type int *
JOY_SETTIMEOUT int *limit
Set the time limit (in microseconds) for reading the joystick status. Setting a value too small may prevent to get correct
values for the positions (which are then set to -2147483648), however this can be useful if one is only interested by the
buttons status.
JOY_GETTIMEOUT int *limit
Get the time limit (in microseconds) used for reading the joystick status.
JOY_SET_X_OFFSET int *offset
Set the value to be added to the X position when reading the joystick status.
JOY_SET_Y_OFFSET int *offset
Set the value to be added to the Y position when reading the joystick status.
JOY_GET_X_OFFSET int *offset
Get the value which is added to the X position when reading the joystick status.
JOY_GET_Y_OFFSET int *offset
Get the value which is added to the Y position when reading the joystick status.
TECHNICAL SPECIFICATIONS
The pinout of the DB-15 connector is as follow:
1 XY1 (+5v)
2 Switch 1
3 X1 (potentiometer #1)
4 Switch 1 (GND)
5 Switch 2 (GND)
6 Y1 (potentiometer #2)
7 Switch 2
8 N.C.
9 XY2 (+5v)
10 Switch 4
11 X2 (potentiometer #3)
12 Switch 3&4 (GND)
13 Y2 (potentiometer #4)
14 Switch 3
15 N.C.
Pots are normally 0-150k variable resistors (0-100k sometimes), and according to the IBM technical reference, the time is given by Time =
24.2e-6s + 0.011e-6s * R/Ohms
FILES
/dev/joy? joystick device files
HISTORY
The joy driver appeared in FreeBSD 2.0.5.
AUTHORS
Jean-Marc Zucconi <jmz@cabri.obs-besancon.fr>
BSD January 23, 1995 BSD
Check Out this Related Man Page
joystick_getaxis(3) Svgalib User Manual joystick_getaxis(3)NAME
joystick_getaxis, joystick_getbutton - query the current state of a joystick.
SYNOPSIS
#include <vgajoystick.h>
char joystick_getaxis(int joydev, int a);
char joystick_getbutton(int joydev, int b);
DESCRIPTION
These functions query the current state of the joystick joydev. Actually this is the state found during the last call to joy-
stick_update(3) with the default joystick event handler active.
joystick_getaxis(joydev, a) return the current state of the given axis (usually it is x - 0, y - 1, z - 1, ...) in range -128 .. 127.
Some effort is made such that the center position is close to 0.
Note that especially the version 0.* protocol joystick calibration is very bad. You won't usually see the extrem values on the extreme
position. Also, the center position will be close to zero but often not be exactly zero and return values will also vary slightly from call
to call even when the user did not move the joystick.
joystick_getbutton(joydev, b) returns the state of a button. It returns 1 for pressed button and 0 else. Note that no hardware checks for
button clicks. The button press is only detected during a call to joystick_update(3) (at least in the 0.* protocol).
NOTE: The functions simply return the data passed to the default joystick event handler!
For your convenience, the following stortcuts have been established by use of the preprocessor:
joystick_button1(i) for joystick_getbutton(i, 0).
joystick_button2(i) for joystick_getbutton(i, 1).
joystick_button3(i) for joystick_getbutton(i, 2).
joystick_button4(i) for joystick_getbutton(i, 3).
joystick_x(i) for joystick_getaxis(i, 0).
joystick_y(i) for joystick_getaxis(i, 1).
joystick_z(i) for joystick_getaxis(i, 2).
joystick_getb1() for joystick_getbutton(0, 0).
joystick_getb2() for joystick_getbutton(0, 1).
joystick_getb3() for joystick_getbutton(0, 2).
joystick_getb4() for joystick_getbutton(0, 3).
joystick_getx() for joystick_getaxis(0, 0).
joystick_gety() for joystick_getaxis(0, 1).
joystick_getz() for joystick_getaxis(0, 2).
CAVEATS
This function is only available in ELF versions of svgalib. Due to backwards compatibility issues it cannot be used with shared a.out libs.
SEE ALSO svgalib(7), vgagl(7), libvga.config(5), joytest(6), mjoytest(6), joystick_init(3), joystick_close(3), joystick_update(3), joy-
stick_sethandler(3), joystick_setdefaulthandler(3), joystick_getnumaxes(3), joystick_getnumbuttons(3).
AUTHOR
The svgalib joystick handler was mostly done by Daniel Engstr"om <daniel.engstrom@riksnett.no>. Multiple joystick, VC switching support
and code to glue it into svgalib by Michael Weller <eowmob@exp-math.uni-essen.de>. Part of the code is based on code from C. Smith and
Vojtech Pavlik.
Svgalib 1.3.0 14 April 1998 joystick_getaxis(3)