xref: /dragonfly/share/man/man4/joy.4 (revision 81c11cd3)
1.\"
2.\" $FreeBSD: src/share/man/man4/joy.4,v 1.12.4.10 2002/07/22 14:21:51 ru Exp $
3.\" $DragonFly: src/share/man/man4/joy.4,v 1.6 2008/05/02 02:05:05 swildner Exp $
4.\"
5.Dd January 23, 1995
6.Dt JOY 4
7.Os
8.Sh NAME
9.Nm joy
10.Nd joystick device driver
11.Sh SYNOPSIS
12To link into the kernel:
13.Cd device joy
14.Pp
15To load as a kernel loadable module:
16.Dl kldload joy
17.Pp
18.In sys/joystick.h
19.Sh DESCRIPTION
20The joystick device driver allows applications to read the status of
21the PC joystick.
22.Pp
23This device may be opened by only one process at a time.
24.Pp
25The joystick status is read from a structure via a
26.Fn read
27call.
28The structure is defined in the header file as follows:
29.Bd -literal -offset indent
30	struct joystick {
31		int x;         /* x position */
32		int y;         /* y position */
33		int b1;	       /* button 1 status */
34		int b2;	       /* button 2 status */
35	};
36.Ed
37.Pp
38Positions are typically in the range 0-2000.
39.Ss One line perl example:
40.Bd -literal -compact
41perl -e 'open(JOY,"/dev/joy0")||die;while(1)
42{sysread(JOY,$x,16);@j=unpack("iiii",$x);print "@j\\n";sleep(1);}'
43.Ed
44.Ss ioctl calls
45Several
46.Fn ioctl
47calls are also available.
48They take an argument of
49type int *
50.Bl -tag -width ".Dv JOY_SET_X_OFFSET"
51.It Dv JOY_SETTIMEOUT Fa int *limit
52Set the time limit (in microseconds) for reading the joystick
53status.
54Setting a value
55too small may prevent to get correct values for the positions (which
56are then set to -2147483648), however this can be useful if one is
57only interested by the buttons status.
58.It Dv JOY_GETTIMEOUT Fa int *limit
59Get the time limit (in microseconds) used for reading the joystick
60status.
61.It Dv JOY_SET_X_OFFSET Fa int *offset
62Set the value to be added to the X position  when reading the joystick
63status.
64.It Dv JOY_SET_Y_OFFSET Fa int *offset
65Set the value to be added to the Y position  when reading the joystick
66status.
67.It Dv JOY_GET_X_OFFSET Fa int *offset
68Get the value which is added to the X position  when reading the joystick
69status.
70.It Dv JOY_GET_Y_OFFSET Fa int *offset
71Get the value which is added to the Y position  when reading the joystick
72status.
73.El
74.Sh TECHNICAL SPECIFICATIONS
75The pinout of the DB-15 connector is as follows:
76.Bd -literal
77  1  XY1 (+5v)
78  2  Switch 1
79  3  X1 (potentiometer #1)
80  4  Switch 1 (GND)
81  5  Switch 2 (GND)
82  6  Y1 (potentiometer #2)
83  7  Switch 2
84  8  N.C.
85  9  XY2 (+5v)
86 10  Switch 4
87 11  X2 (potentiometer #3)
88 12  Switch 3&4 (GND)
89 13  Y2 (potentiometer #4)
90 14  Switch 3
91 15  N.C.
92.Ed
93.Pp
94Pots are normally 0-150k variable resistors (0-100k sometimes), and
95according to the IBM techref, the time is given by
96Time = 24.2e-6s + 0.011e-6s * R/Ohms
97.Sh FILES
98.Bl -tag -width /dev/joy?
99.It Pa /dev/joy?
100joystick device files
101.El
102.Sh HISTORY
103The joystick driver appeared in
104.Fx 2.0.5 .
105.Sh AUTHORS
106.An Jean-Marc Zucconi Aq jmz@cabri.obs-besancon.fr
107