The Linux Input layer is a new implementation of keyboard, mouse,
joystick, and other human input device drivers for Linux. It has been
long in development, and has been added to the Linux kernel in version
Today, in the 2.6 kernel, it's in widespread use, and it's strengths
and and weaknesses are showing.
The input layer allowed for a very needed generalization and
abstraction of human input handling in Linux, creating an unified
interace for all such devices. This allowed merging and removing
several reimplementations of drivers for identical hardware across
different architectures, easing maintenance.
The input layer, by moving input data processing into the kernel also
allowed support of multiplexer and pass-through devices found in
notebooks, which is a benefit not expected while designing it.
The drawbacks then are namely that it wasn't designed to be 100%
compatible with the previous implementation used in the 2.4
kernel. This angers many a user upgrading from 2.4 to 2.6, even when
the backward compatibility was sacrificed for enhancing the
Thus, the development of the input layer is an ongoing battle between
innovation and compatibility, trying to keep present behavior as
closely as possible, while not being stuck with existing design.
Another unpleasant surprise was that while the kernel development can
move forward rather quickly, applications (like is the case of X or
GPM) that interface it stay behind. This was a hard learned lesson,
and for future a closer cooperation with application developers shows
as an absolute necessity.
Last, there are plans for the future - adding full hotplug and sysfs
capabilities, that'll allow interfacing to d-bus, better integration
with X.org new X servers, adding more drivers, enhancing 2.4
compatibility even further.