Linux Input Drivers

Introduction - News - Download - Joysticks - Quick Start - Documentation - Supported Hardware - Adapters - Links


The Linux Input Driver project is a project that replace the current handling of keyboards, mice and joysticks in Linux. It's finally modular, and attempts to merge as much of architecture independent code as possible. For mice, keyboards, joysticks and other input devices it tries to create a simple, easy to program for and uniform API, with straightforward binding to XInput.

The project is progressing quite rapidly, already supporting all previously supported PC/x86 devices, and more. Support for other architectures is lagging a little, but that's going to be fixed soon.

Many of the drivers were improved significantly during the proces of rewriting them for the Input Driver project - for example serial MouseSystems mice have two times the refresh rate with the Input Drivers (48 updates/sec), which makes them finally comfortable to use, AT keyboards and PS/2 mice can be plugged in and out at runtime, without problems, analog joysticks have much better resolution (9-12 bits). No more problems with autorepeat on Toshiba laptops, because autorepeat is done by software. It will soon offer tighter integration with ALSA sound drivers for better gameport support. And more and more.

Parts of the Input Driver project are already integrated in the kernel - the core, userland interface modules and USB input device drivers are a part of the kernel USB support. A patch was created to replace the in-kernel Joystick Driver project with new Input Drivers. It adds significant benefits and fixes many bugs. Because the joystick driver is self contained and because the existing USB input device support will be use, there is a hope this change will happen in the 2.4 kernel cycle. See

Replacing current keyboard and mouse drivers is a much larger surgery to the kernel, although needed badly. Because of that, integration of the rest of the Input Driver project will have to wait till the release of a developmental 2.5 kernel. It will go together with the rest of the Linux Console Project.


2000/08/19 - Fixed support for PSX pads
2000/08/19 - Added IM Explorer support, changed mousedev to emulate IM Ex instead of GenPS/2 for 5 buttons
2000/08/18 - Added support for IBM RapidAccess and Chicony multimedia keyboards
2000/08/17 - Fixed ns558 to correctly allocate its i/o region.
2000/08/17 - Added a link to Franz Sirl's Input/PPC page
2000/08/17 - Merged in kernel USB fixes, fixed GenPS/2 emulation
2000/07/14 - Fixed direction gamepad in sidewinder
2000/06/25 - Fixed gamecon and db9
2000/06/24 - Fixed support for SpaceBall 4000 FLX
2000/06/23 - Fixed oops in joydev, evdev and mousedev
2000/06/22 - Joystick input drivers are in the 2.4.0-test2 kernel!
2000/06/21 - Created a joystick-only input patch, see
2000/06/21 - Added support for ESS Solo1 and S3 SonicVibes PCI gameports
2000/06/08 - Updated installation guidelines - see Quick Start
2000/06/08 - Added support for two ThrustMaster DirectConnect joysticks on one gameport, fully functional
2000/06/07 - Saitek Cyborg 3D support fully functional in the analog driver
2000/06/06 - Added support for Gravis Xterminator DualControl, better support for Xterminator Digital

Current version

The Input Drivers are still under heavy development. Because of that, it is not convenient to make versioned tarball or even rpm/deb releases, because for them to be useful the releases would have to be too frequent.

We are using CVS for keeping and distriubiting the drivers right now. As soon as the driver reach some state where they wouldn't happen to be obsoleted by new versions every few days, I'll make a bigger release - 1.0.0 - of the drivers. For now, the drivers are in the same CVS tree as the Linux Console Project. This is because they depend on each other a lot and thus it is useful to develop them together. Also, you might want to take a look at the SourceForge page of the Console/Input project.


You can find some documentation in the linux/Documentation/input directory in the CVS tree - it's not much, but it should get you started. A lot of it will come later, when I'm finished with writing the drivers. Anyway, using and configuring the drivers is very straightforward, so I don't think you'll have any trouble with that. Should you have any, just mail me, the e-mail address is at the end of this page.

Send any questions, comments, bug reports to: Vojtech Pavlik <>

Sponsored by SuSE