Specifications

CHAPTER 1. AN INTRODUCTION TO LINUX INPUT 3
Recent laptops offer various features like dynamic CPU frequency and adjustment of screen
brightness to save power consumption. Such features are commonly controlled by function keys
which are—as shown above—in many instances not working on Linux systems. It is not unusual
that functions like switching between LCD and CRT are not working, too. About half (48,6%)
of all participants stated that only some, or even none, of these essential function keys are
working on their system.
The questions regarding the demand of features (Appendix B, §B.5) evinced that many
users (58%) would like to have on-screen display notifications (e.g. screen brightness, change of
volume). The majority of the participants classify the possibility to switch between LCD and
CRT screen either as “would like to have” or “must have”. Other requested features include the
ability to launch arbitrary applications (43%), the chance to change screen brightness (62%)
and the possibility to change the system’s volume with the supposed function keys (72%).
1.2 Objective
The objective of this diploma thesis is to close the gap between the existing Linux input device
drivers and the user interface. As shown by the survey, experienced users demand better
support for input devices just as beginners do. This implies that whether input devices can be
utilized or not is not only a question of knowledge.
Since the different input device drivers are accessed in different ways, and since their
data structures for input events differ from each other, there is an urgent need for the Input
Abstraction Layer. The Input Abstraction Layer needs to gather as many events as possible
and deliver them—no matter which interface the event originally came from—in a unified data
representation to user space. Assuming that, applications get notice of user input they were
not able to receive before.
1.3 Overview of the Diploma Thesis
The chapters are build on top of each other. Chapter 2 discusses Linux input device drivers
and their interfaces. It is followed by three chapters discussing the requirements specifica-
tion, architecture, design and the actual implementation of the Input Abstraction Layer. The
achievements are discussed in Chapter 6 by chiefly analyzing whether the specified require-
ments are met by the implementation. Chapter 7 explains the development methodology of
Free and Open Source Software on the basis of the Input Abstraction Layer. The last chapter
retrospects the diploma thesis as a whole and shows directions for the future of the Input
Abstraction Layer.
Many passages of Chapter 2 and 5 discuss source code written in C. The reader is required to
be acquainted with the C programming language to comprehend these passages. Additionally,
expertise with common Unix tools and libraries is helpful. All chapters reference further
reading, which are summarized in the bibliography. The following typographic conventions are
used:
italic Used for numeric variables, values of variables and to emphasize terms.
constant width Used for commands, files, directories, options, programs, source
code and variable names.