Joystick

Kernel Configuration
You need to enable the following your kernel:

Additionally, if you choose to compile the joystick interface as a module, it will be called joydev.

Gameport Joysticks
If you have a joystick that connects to a parallel or game port, you need to enable support for the joystick under Joysticks/Gamepads.

Gameport joysticks must also have the gameport on the PCI card enabled. Often, there is a driver for the gameport separate from the card's driver. Select the card from this list:

If the card shown is not listed, then often, the module will require a kernel parameter to enable the gameport. This is specific to each module.

USB Joysticks
If you have a joystick that connects to a USB port, you first need to enable HID support:

See Special HID drivers and enable support for your joystick if it's listed there.

Also, if you have a PID device, you will have to enable PID support.

If you have a USB joystick that wasn't listed here, it's probable that is works with just USB Human Interface Device (full HID) support enabled.

Tools
The old jstest and jscal programs and utilities can be found in the package,

Testing
You can use dmesg to see how your joystick identified itself,

The output would for example be: input: USB HID v1.00 Joystick [Saitek Cyborg USB Stick] on usb2:2.0

If you see something like this, then your joystick is detected and should have been created.

will show you if you have the device detected.

A simple test to see what entry is is to cat the node while using the joystick:

This will produce a string of garbage to the console for stick movement and button clicks.

jstest
You can test your joystick with the jstest tool,

Calibration
Many joysticks, in particular gameport joysticks, should be calibrated before use (to reduce drift and inaccuracy). This can be done with the utility: