Determining Which Modules You Need
For an extensive overview of all joystick related modules in Linux, you will need access to the Linux kernel sources -- specifically the Documentation section. Unfortunately, pacman kernel packages don't include what we need. If you have the kernel sources downloaded, have a look at
Documentation/input/joystick.txt. You can browse the kernel source tree at kernel.org by clicking the "C" (current changesets) link, then clicking the "tree" link near the top. Here's a link to the Documentation from kernel 22.214.171.124.
Some joysticks need specific modules, such as the Microsoft Sidewinder controllers (
sidewinder), or the Logitech digital controllers (
adi). Many older joysticks will work with the simple
analog module. If your joystick is plugging in to a gameport provided by your soundcard, you will need your soundcard drivers loaded - however, some cards, like the Soundblaster Live, have a specific gameport driver (
emu10k1-gp). Older ISA soundcards may need the
ns558 module, which is a standard gameport module.
Loading the Modules
You need to load a module for your gameport (
cs461x, etc...), a module for your joystick (
adi, etc...), and finally the kernel joystick device driver (
joydev). Add these to your
/etc/rc.conf, or simply modprobe them. The
gameport module should load automatically, as this is a dependency of the other modules.
Testing Your Configuration
Once the modules are loaded, you should find a new device:
/dev/input/js0. You can simply
cat the device to see if it works - move the stick around, press all the buttons. I found my Logitech Thunderpad Digital had two buttons that weren't working with the
analog module. After reading some docs, I saw there was a specific
adi module for this controller. The moral of the story is, if it doesn't work the first time, don't give up, and read those docs thoroughly! I couldn't get anything working at all until I found that documentation.
You need to get USB working, and then modprobe your joystick driver, which is
usbhid, as well as
If you use a usb mouse or keyboard,
usbhid will be loaded already and you just have to load the