Innovation... driven by intelligence and logic

Input Device Drivers


The Linux Input Driver is a driver that is used to handle the keyboards, mice and joysticks. 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.

This is a collection of drivers that is designed to support all input devices under Linux. While it is currently used only on for USB input devices, future use (say 2.5/2.6) is expected to expand to replace most of the existing input system, which is why it lives in drivers/input/ instead of drivers/usb/.

The centre of the input drivers is the input module, which must be loaded before any other of the input module –
it serves as a way of communication between two groups of modules i.e. Device drivers and event handlers .


The kernel's input subsystem was created to unify scattered drivers that handle diverse classes of data-input devices such as keyboards, mice, trackballs, joysticks, roller wheels, touch screens, and accelerometers . The centre of the input drivers subsystem contains basically two classes of drivers -

  • Event Drivers

  • Device Drivers

The input event driver's interfaces are exported by input subsystem that is evolved in many windowing systems . Event driver offers a hardware independent abstraction to talk with input device through a frame buffer mechanism which provides a general mechanism to communicate with display devices .Event driver also provides the mechanism to insulate GUI(graphical user interface ) from the vagaries of the underlying hardware .

Input drivers are used to drive the input devices such as keyboard , joystick and touch screen . These drivers are basically control the device's controller and and provide the input data from the devices .


All the Input devices through which the user gives the data to the PC need its driver to control the input device and its events . In these days so many input devices exists from different vendors and modifying so the more advanced drivers are developing and modifying for the input devices .


  • Good knowledge of 'C' programming Language .

  • Must know about the basic Linux commands .

  • Should developed the Character driver , Serial Driver, Block Driver and USB Client driver.

  • Good understanding of driver Interfaces .

Training Topics In Brief:

  • Driver Initialization and Exit .

    • Register the platform device .

    • Create the sysfs group for the device .

    • Allocate the device specific structure .

    • Allocate the input device .

    • Write the code according to the input device. (if device have registers then map it and set the bits of register of input devices .

    • Remove all the interfaces created in the Initialization function .

  • Write the event Handler for the input device.

    • This section depends on the device's class and depends that which type events generated by the device .

Go to Top ^