joystick.rst 20.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
.. include:: <isonum.txt>

============================
Linux Joystick driver v2.0.0
============================

:Copyright: |copy| 1996-2000 Vojtech Pavlik <vojtech@ucw.cz> - Sponsored by SuSE


Disclaimer
==========

This program is free software; you can redistribute it and/or modify it
L
Linus Torvalds 已提交
14 15 16 17
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.

18
This program is distributed in the hope that it will be useful, but
L
Linus Torvalds 已提交
19 20 21 22
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
more details.

23
You should have received a copy of the GNU General Public License along
L
Linus Torvalds 已提交
24 25 26
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA

27
Should you need to contact me, the author, you can do so either by e-mail
L
Linus Torvalds 已提交
28 29 30
- mail your message to <vojtech@ucw.cz>, or by paper mail: Vojtech Pavlik,
Simunkova 1594, Prague 8, 182 00 Czech Republic

31
For your convenience, the GNU General Public License version 2 is included
L
Linus Torvalds 已提交
32 33
in the package: See the file COPYING.

34 35 36 37
Intro
=====

The joystick driver for Linux provides support for a variety of joysticks
L
Linus Torvalds 已提交
38 39 40
and similar devices. It is based on a larger project aiming to support all
input devices in Linux.

41
Should you encounter any problems while using the driver, or joysticks
L
Linus Torvalds 已提交
42 43 44
this driver can't make complete use of, I'm very interested in hearing about
them. Bug reports and success stories are also welcome.

45
The input project website is at:
L
Linus Torvalds 已提交
46 47 48

	http://atrey.karlin.mff.cuni.cz/~vojtech/input/

49
There is also a mailing list for the driver at:
L
Linus Torvalds 已提交
50 51 52 53 54

	listproc@atrey.karlin.mff.cuni.cz

send "subscribe linux-joystick Your Name" to subscribe to it.

55 56 57 58
Usage
=====

For basic usage you just choose the right options in kernel config and
L
Linus Torvalds 已提交
59 60
you should be set.

61 62 63
inpututils
----------

L
Linus Torvalds 已提交
64 65 66 67
For testing and other purposes (for example serial devices), a set of
utilities is available at the abovementioned website. I suggest you download
and install it before going on.

68 69 70
Device nodes
------------

71
For applications to be able to use the joysticks,
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
you'll have to manually create these nodes in /dev::

    cd /dev
    rm js*
    mkdir input
    mknod input/js0 c 13 0
    mknod input/js1 c 13 1
    mknod input/js2 c 13 2
    mknod input/js3 c 13 3
    ln -s input/js0 js0
    ln -s input/js1 js1
    ln -s input/js2 js2
    ln -s input/js3 js3

For testing with inpututils it's also convenient to create these::

    mknod input/event0 c 13 64
    mknod input/event1 c 13 65
    mknod input/event2 c 13 66
    mknod input/event3 c 13 67

Modules needed
--------------

For all joystick drivers to function, you'll need the userland interface
module in kernel, either loaded or compiled in::
L
Linus Torvalds 已提交
98 99 100

	modprobe joydev

101
For gameport joysticks, you'll have to load the gameport driver as well::
L
Linus Torvalds 已提交
102 103 104

	modprobe ns558

105 106
And for serial port joysticks, you'll need the serial input line
discipline module loaded and the inputattach utility started::
L
Linus Torvalds 已提交
107 108 109 110

	modprobe serport
	inputattach -xxx /dev/tts/X &

111 112
In addition to that, you'll need the joystick driver module itself, most
usually you'll have an analog joystick::
L
Linus Torvalds 已提交
113 114

	modprobe analog
115 116 117

For automatic module loading, something like this might work - tailor to
your needs::
L
Linus Torvalds 已提交
118 119 120 121 122 123

	alias tty-ldisc-2 serport
	alias char-major-13 input
	above input joydev ns558 analog
	options analog map=gamepad,none,2btn

124 125 126 127 128
Verifying that it works
-----------------------

For testing the joystick driver functionality, there is the jstest
program in the utilities package. You run it by typing::
L
Linus Torvalds 已提交
129

130
	jstest /dev/input/js0
L
Linus Torvalds 已提交
131

132
And it should show a line with the joystick values, which update as you
L
Linus Torvalds 已提交
133 134 135 136 137 138
move the stick, and press its buttons. The axes should all be zero when the
joystick is in the center position. They should not jitter by themselves to
other close values, and they also should be steady in any other position of
the stick. They should have the full range from -32767 to 32767. If all this
is met, then it's all fine, and you can play the games. :)

139
If it's not, then there might be a problem. Try to calibrate the joystick,
L
Linus Torvalds 已提交
140 141 142
and if it still doesn't work, read the drivers section of this file, the
troubleshooting section, and the FAQ.

143 144 145 146
Calibration
-----------

For most joysticks you won't need any manual calibration, since the
L
Linus Torvalds 已提交
147 148
joystick should be autocalibrated by the driver automagically. However, with
some analog joysticks, that either do not use linear resistors, or if you
149
want better precision, you can use the jscal program::
L
Linus Torvalds 已提交
150

151
	jscal -c /dev/input/js0
L
Linus Torvalds 已提交
152

153
included in the joystick package to set better correction coefficients than
L
Linus Torvalds 已提交
154 155
what the driver would choose itself.

156
After calibrating the joystick you can verify if you like the new
L
Linus Torvalds 已提交
157
calibration using the jstest command, and if you do, you then can save the
158
correction coefficients into a file::
L
Linus Torvalds 已提交
159

160
	jscal -p /dev/input/js0 > /etc/joystick.cal
L
Linus Torvalds 已提交
161

162
And add a line to your rc script executing that file::
L
Linus Torvalds 已提交
163 164 165

	source /etc/joystick.cal

166 167
This way, after the next reboot your joystick will remain calibrated. You
can also add the ``jscal -p`` line to your shutdown script.
L
Linus Torvalds 已提交
168 169


170 171 172
HW specific driver information
==============================

L
Linus Torvalds 已提交
173 174
In this section each of the separate hardware specific drivers is described.

175 176 177 178
Analog joysticks
----------------

The analog.c uses the standard analog inputs of the gameport, and thus
L
Linus Torvalds 已提交
179 180 181 182
supports all standard joysticks and gamepads. It uses a very advanced
routine for this, allowing for data precision that can't be found on any
other system.

183
It also supports extensions like additional hats and buttons compatible
L
Linus Torvalds 已提交
184 185 186 187
with CH Flightstick Pro, ThrustMaster FCS or 6 and 8 button gamepads. Saitek
Cyborg 'digital' joysticks are also supported by this driver, because
they're basically souped up CHF sticks.

188
However the only types that can be autodetected are:
L
Linus Torvalds 已提交
189 190 191 192 193 194

* 2-axis, 4-button joystick
* 3-axis, 4-button joystick
* 4-axis, 4-button joystick
* Saitek Cyborg 'digital' joysticks

195
For other joystick types (more/less axes, hats, and buttons) support
L
Linus Torvalds 已提交
196 197
you'll need to specify the types either on the kernel command line or on the
module command line, when inserting analog into the kernel. The
198
parameters are::
L
Linus Torvalds 已提交
199 200 201

	analog.map=<type1>,<type2>,<type3>,....

202
'type' is type of the joystick from the table below, defining joysticks
L
Linus Torvalds 已提交
203 204 205
present on gameports in the system, starting with gameport0, second 'type'
entry defining joystick on gameport1 and so on.

206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
	========= =====================================================
	Type      Meaning
	========= =====================================================
	none      No analog joystick on that port
	auto      Autodetect joystick
	2btn      2-button n-axis joystick
	y-joy     Two 2-button 2-axis joysticks on an Y-cable
	y-pad     Two 2-button 2-axis gamepads on an Y-cable
	fcs       Thrustmaster FCS compatible joystick
	chf       Joystick with a CH Flightstick compatible hat
	fullchf   CH Flightstick compatible with two hats and 6 buttons
	gamepad   4/6-button n-axis gamepad
	gamepad8  8-button 2-axis gamepad
	========= =====================================================

In case your joystick doesn't fit in any of the above categories, you can
L
Linus Torvalds 已提交
222 223 224 225
specify the type as a number by combining the bits in the table below. This
is not recommended unless you really know what are you doing. It's not
dangerous, but not simple either.

226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
	==== =========================
	Bit  Meaning
	==== =========================
	 0   Axis X1
	 1   Axis Y1
	 2   Axis X2
	 3   Axis Y2
	 4   Button A
	 5   Button B
	 6   Button C
	 7   Button D
	 8   CHF Buttons X and Y
	 9   CHF Hat 1
	10   CHF Hat 2
	11   FCS Hat
	12   Pad Button X
	13   Pad Button Y
	14   Pad Button U
	15   Pad Button V
	16   Saitek F1-F4 Buttons
	17   Saitek Digital Mode
	19   GamePad
	20   Joy2 Axis X1
	21   Joy2 Axis Y1
	22   Joy2 Axis X2
	23   Joy2 Axis Y2
	24   Joy2 Button A
	25   Joy2 Button B
	26   Joy2 Button C
	27   Joy2 Button D
	31   Joy2 GamePad
	==== =========================

Microsoft SideWinder joysticks
------------------------------

Microsoft 'Digital Overdrive' protocol is supported by the sidewinder.c
L
Linus Torvalds 已提交
263 264 265 266 267
module. All currently supported joysticks:

* Microsoft SideWinder 3D Pro
* Microsoft SideWinder Force Feedback Pro
* Microsoft SideWinder Force Feedback Wheel
268
* Microsoft SideWinder FreeStyle Pro
L
Linus Torvalds 已提交
269
* Microsoft SideWinder GamePad (up to four, chained)
270 271
* Microsoft SideWinder Precision Pro
* Microsoft SideWinder Precision Pro USB
L
Linus Torvalds 已提交
272

273
are autodetected, and thus no module parameters are needed.
L
Linus Torvalds 已提交
274

275
There is one caveat with the 3D Pro. There are 9 buttons reported,
L
Linus Torvalds 已提交
276 277 278 279 280 281
although the joystick has only 8. The 9th button is the mode switch on the
rear side of the joystick. However, moving it, you'll reset the joystick,
and make it unresponsive for about a one third of a second. Furthermore, the
joystick will also re-center itself, taking the position it was in during
this time as a new center position. Use it if you want, but think first.

282 283 284 285 286
The SideWinder Standard is not a digital joystick, and thus is supported
by the analog driver described above.

Logitech ADI devices
--------------------
L
Linus Torvalds 已提交
287

288
Logitech ADI protocol is supported by the adi.c module. It should support
L
Linus Torvalds 已提交
289 290 291 292 293 294 295 296 297 298 299 300 301
any Logitech device using this protocol. This includes, but is not limited
to:

* Logitech CyberMan 2
* Logitech ThunderPad Digital
* Logitech WingMan Extreme Digital
* Logitech WingMan Formula
* Logitech WingMan Interceptor
* Logitech WingMan GamePad
* Logitech WingMan GamePad USB
* Logitech WingMan GamePad Extreme
* Logitech WingMan Extreme Digital 3D

302
ADI devices are autodetected, and the driver supports up to two (any
L
Linus Torvalds 已提交
303 304 305
combination of) devices on a single gameport, using an Y-cable or chained
together.

306
Logitech WingMan Joystick, Logitech WingMan Attack, Logitech WingMan
L
Linus Torvalds 已提交
307 308 309 310 311 312
Extreme and Logitech WingMan ThunderPad are not digital joysticks and are
handled by the analog driver described above. Logitech WingMan Warrior and
Logitech Magellan are supported by serial drivers described below.  Logitech
WingMan Force and Logitech WingMan Formula Force are supported by the
I-Force driver described below. Logitech CyberMan is not supported yet.

313 314 315 316
Gravis GrIP
-----------

Gravis GrIP protocol is supported by the grip.c module. It currently
L
Linus Torvalds 已提交
317 318 319 320 321 322 323
supports:

* Gravis GamePad Pro
* Gravis BlackHawk Digital
* Gravis Xterminator
* Gravis Xterminator DualControl

324
All these devices are autodetected, and you can even use any combination
L
Linus Torvalds 已提交
325 326 327 328 329 330 331
of up to two of these pads either chained together or using an Y-cable on a
single gameport.

GrIP MultiPort isn't supported yet. Gravis Stinger is a serial device and is
supported by the stinger driver. Other Gravis joysticks are supported by the
analog driver.

332 333 334 335
FPGaming A3D and MadCatz A3D
----------------------------

The Assassin 3D protocol created by FPGaming, is used both by FPGaming
L
Linus Torvalds 已提交
336 337 338 339 340 341 342
themselves and is licensed to MadCatz. A3D devices are supported by the
a3d.c module. It currently supports:

* FPGaming Assassin 3D
* MadCatz Panther
* MadCatz Panther XL

343
All these devices are autodetected. Because the Assassin 3D and the Panther
L
Linus Torvalds 已提交
344 345 346
allow connecting analog joysticks to them, you'll need to load the analog
driver as well to handle the attached joysticks.

347
The trackball should work with USB mousedev module as a normal mouse. See
L
Linus Torvalds 已提交
348 349
the USB documentation for how to setup an USB mouse.

350 351 352 353
ThrustMaster DirectConnect (BSP)
--------------------------------

The TM DirectConnect (BSP) protocol is supported by the tmdc.c
L
Linus Torvalds 已提交
354 355
module. This includes, but is not limited to:

356
* ThrustMaster Millennium 3D Interceptor
L
Linus Torvalds 已提交
357 358 359
* ThrustMaster 3D Rage Pad
* ThrustMaster Fusion Digital Game Pad

360
Devices not directly supported, but hopefully working are:
L
Linus Torvalds 已提交
361 362 363 364

* ThrustMaster FragMaster
* ThrustMaster Attack Throttle

365
If you have one of these, contact me.
L
Linus Torvalds 已提交
366

367
TMDC devices are autodetected, and thus no parameters to the module
L
Linus Torvalds 已提交
368 369 370
are needed. Up to two TMDC devices can be connected to one gameport, using
an Y-cable.

371 372 373 374
Creative Labs Blaster
---------------------

The Blaster protocol is supported by the cobra.c module. It supports only
L
Linus Torvalds 已提交
375 376 377 378
the:

* Creative Blaster GamePad Cobra

379 380 381 382
Up to two of these can be used on a single gameport, using an Y-cable.

Genius Digital joysticks
------------------------
L
Linus Torvalds 已提交
383

384
The Genius digitally communicating joysticks are supported by the gf2k.c
L
Linus Torvalds 已提交
385 386
module. This includes:

387 388
* Genius Flight2000 F-23 joystick
* Genius Flight2000 F-31 joystick
L
Linus Torvalds 已提交
389 390
* Genius G-09D gamepad

391
Other Genius digital joysticks are not supported yet, but support can be
L
Linus Torvalds 已提交
392 393
added fairly easily.

394 395 396 397
InterAct Digital joysticks
--------------------------

The InterAct digitally communicating joysticks are supported by the
L
Linus Torvalds 已提交
398 399 400
interact.c module. This includes:

* InterAct HammerHead/FX gamepad
401
* InterAct ProPad8 gamepad
L
Linus Torvalds 已提交
402

403
Other InterAct digital joysticks are not supported yet, but support can be
L
Linus Torvalds 已提交
404 405
added fairly easily.

406 407 408 409
PDPI Lightning 4 gamecards
--------------------------

PDPI Lightning 4 gamecards are supported by the lightning.c module.
L
Linus Torvalds 已提交
410 411 412 413 414
Once the module is loaded, the analog driver can be used to handle the
joysticks. Digitally communicating joystick will work only on port 0, while
using Y-cables, you can connect up to 8 analog joysticks to a single L4
card, 16 in case you have two in your system.

415 416 417 418
Trident 4DWave / Aureal Vortex
------------------------------

Soundcards with a Trident 4DWave DX/NX or Aureal Vortex/Vortex2 chipsets
L
Linus Torvalds 已提交
419 420 421 422
provide an "Enhanced Game Port" mode where the soundcard handles polling the
joystick.  This mode is supported by the pcigame.c module. Once loaded the
analog driver can use the enhanced features of these gameports..

423 424 425 426
Crystal SoundFusion
-------------------

Soundcards with Crystal SoundFusion chipsets provide an "Enhanced Game
L
Linus Torvalds 已提交
427 428 429
Port", much like the 4DWave or Vortex above. This, and also the normal mode
for the port of the SoundFusion is supported by the cs461x.c module.

430 431 432 433
SoundBlaster Live!
------------------

The Live! has a special PCI gameport, which, although it doesn't provide
L
Linus Torvalds 已提交
434
any "Enhanced" stuff like 4DWave and friends, is quite a bit faster than
435
its ISA counterparts. It also requires special support, hence the
L
Linus Torvalds 已提交
436 437
emu10k1-gp.c module for it instead of the normal ns558.c one.

438 439 440 441
SoundBlaster 64 and 128 - ES1370 and ES1371, ESS Solo1 and S3 SonicVibes
------------------------------------------------------------------------

These PCI soundcards have specific gameports. They are handled by the
L
Linus Torvalds 已提交
442 443 444 445
sound drivers themselves. Make sure you select gameport support in the
joystick menu and sound card support in the sound menu for your appropriate
card.

446 447 448 449 450
Amiga
-----

Amiga joysticks, connected to an Amiga, are supported by the amijoy.c
driver. Since they can't be autodetected, the driver has a command line:
L
Linus Torvalds 已提交
451 452 453

	amijoy.map=<a>,<b>

454
a and b define the joysticks connected to the JOY0DAT and JOY1DAT ports of
L
Linus Torvalds 已提交
455 456
the Amiga.

457 458 459 460 461 462
	====== ===========================
	Value  Joystick type
	====== ===========================
	  0    None
	  1    1-button digital joystick
	====== ===========================
L
Linus Torvalds 已提交
463

464
No more joystick types are supported now, but that should change in the
L
Linus Torvalds 已提交
465 466
future if I get an Amiga in the reach of my fingers.

467
Game console and 8-bit pads and joysticks
468
-----------------------------------------
469 470

See :ref:`joystick-parport` for more info.
L
Linus Torvalds 已提交
471

472 473 474 475
SpaceTec/LabTec devices
-----------------------

SpaceTec serial devices communicate using the SpaceWare protocol. It is
L
Linus Torvalds 已提交
476 477 478 479 480 481 482 483 484 485
supported by the spaceorb.c and spaceball.c drivers. The devices currently
supported by spaceorb.c are:

* SpaceTec SpaceBall Avenger
* SpaceTec SpaceOrb 360

Devices currently supported by spaceball.c are:

* SpaceTec SpaceBall 4000 FLX

486
In addition to having the spaceorb/spaceball and serport modules in the
L
Linus Torvalds 已提交
487
kernel, you also need to attach a serial port to it. to do that, run the
488
inputattach program::
L
Linus Torvalds 已提交
489 490

	inputattach --spaceorb /dev/tts/x &
491 492 493

or::

L
Linus Torvalds 已提交
494 495 496 497 498
	inputattach --spaceball /dev/tts/x &

where /dev/tts/x is the serial port which the device is connected to. After
doing this, the device will be reported and will start working.

499
There is one caveat with the SpaceOrb. The button #6, the on the bottom
L
Linus Torvalds 已提交
500 501 502 503 504
side of the orb, although reported as an ordinary button, causes internal
recentering of the spaceorb, moving the zero point to the position in which
the ball is at the moment of pressing the button. So, think first before
you bind it to some other function.

505
SpaceTec SpaceBall 2003 FLX and 3003 FLX are not supported yet.
L
Linus Torvalds 已提交
506

507 508 509 510
Logitech SWIFT devices
----------------------

The SWIFT serial protocol is supported by the warrior.c module. It
L
Linus Torvalds 已提交
511 512 513 514 515 516
currently supports only the:

* Logitech WingMan Warrior

but in the future, Logitech CyberMan (the original one, not CM2) could be
supported as well. To use the module, you need to run inputattach after you
517
insert/compile the module into your kernel::
L
Linus Torvalds 已提交
518 519 520 521 522

	inputattach --warrior /dev/tts/x &

/dev/tts/x is the serial port your Warrior is attached to.

523 524 525 526
Magellan / Space Mouse
----------------------

The Magellan (or Space Mouse), manufactured by LogiCad3d (formerly Space
L
Linus Torvalds 已提交
527 528 529 530 531 532 533 534
Systems), for many other companies (Logitech, HP, ...) is supported by the
joy-magellan module. It currently supports only the:

* Magellan 3D
* Space Mouse

models, the additional buttons on the 'Plus' versions are not supported yet.

535
To use it, you need to attach the serial port to the driver using the::
L
Linus Torvalds 已提交
536 537 538 539 540 541

	inputattach --magellan /dev/tts/x &

command. After that the Magellan will be detected, initialized, will beep,
and the /dev/input/jsX device should become usable.

542 543 544 545
I-Force devices
---------------

All I-Force devices are supported by the iforce module. This includes:
L
Linus Torvalds 已提交
546 547 548 549 550

* AVB Mag Turbo Force
* AVB Top Shot Pegasus
* AVB Top Shot Force Feedback Racing Wheel
* Logitech WingMan Force
551
* Logitech WingMan Force Wheel
L
Linus Torvalds 已提交
552 553 554 555
* Guillemot Race Leader Force Feedback
* Guillemot Force Feedback Racing Wheel
* Thrustmaster Motor Sport GT

556
To use it, you need to attach the serial port to the driver using the::
L
Linus Torvalds 已提交
557 558 559 560 561 562

	inputattach --iforce /dev/tts/x &

command. After that the I-Force device will be detected, and the
/dev/input/jsX device should become usable.

563
In case you're using the device via the USB port, the inputattach command
L
Linus Torvalds 已提交
564 565
isn't needed.

566
The I-Force driver now supports force feedback via the event interface.
L
Linus Torvalds 已提交
567

568
Please note that Logitech WingMan 3D devices are _not_ supported by this
L
Linus Torvalds 已提交
569 570 571
module, rather by hid. Force feedback is not supported for those devices.
Logitech gamepads are also hid devices.

572 573 574 575
Gravis Stinger gamepad
----------------------

The Gravis Stinger serial port gamepad, designed for use with laptop
L
Linus Torvalds 已提交
576
computers, is supported by the stinger.c module. To use it, attach the
577
serial port to the driver using::
L
Linus Torvalds 已提交
578

579
	inputattach --stinger /dev/tty/x &
L
Linus Torvalds 已提交
580 581 582

where x is the number of the serial port.

583 584 585 586
Troubleshooting
===============

There is quite a high probability that you run into some problems. For
L
Linus Torvalds 已提交
587 588
testing whether the driver works, if in doubt, use the jstest utility in
some of its modes. The most useful modes are "normal" - for the 1.x
589
interface, and "old" for the "0.x" interface. You run it by typing::
L
Linus Torvalds 已提交
590 591 592 593

	jstest --normal /dev/input/js0
	jstest --old    /dev/input/js0

594
Additionally you can do a test with the evtest utility::
L
Linus Torvalds 已提交
595 596 597

	evtest /dev/input/event0

598 599 600 601 602 603 604 605
Oh, and read the FAQ! :)

FAQ
===

:Q: Running 'jstest /dev/input/js0' results in "File not found" error. What's the
    cause?
:A: The device files don't exist. Create them (see section 2.2).
L
Linus Torvalds 已提交
606

607 608 609 610 611
:Q: Is it possible to connect my old Atari/Commodore/Amiga/console joystick
    or pad that uses a 9-pin D-type cannon connector to the serial port of my
    PC?
:A: Yes, it is possible, but it'll burn your serial port or the pad. It
    won't work, of course.
L
Linus Torvalds 已提交
612

613 614 615
:Q: My joystick doesn't work with Quake / Quake 2. What's the cause?
:A: Quake / Quake 2 don't support joystick. Use joy2key to simulate keypresses
    for them.
L
Linus Torvalds 已提交
616

617 618
Programming Interface
=====================
L
Linus Torvalds 已提交
619

620
The 1.0 driver uses a new, event based approach to the joystick driver.
L
Linus Torvalds 已提交
621 622 623 624 625 626
Instead of the user program polling for the joystick values, the joystick
driver now reports only any changes of its state. See joystick-api.txt,
joystick.h and jstest.c included in the joystick package for more
information. The joystick device can be used in either blocking or
nonblocking mode and supports select() calls.

627
For backward compatibility the old (v0.x) interface is still included.
L
Linus Torvalds 已提交
628 629 630 631
Any call to the joystick driver using the old interface will return values
that are compatible to the old interface.  This interface is still limited
to 2 axes, and applications using it usually decode only 2 buttons, although
the driver provides up to 32.