Specifications

Chapter 8
Conclusion
The creation of the Input Abstraction Layer helps GNU/Linux to fulfill the users’ claim for
an operating system that just works. Due to its basic approach, the Input Abstraction Layer
ensures to report a wide range of different input events. Thus, the functionality of the Input
Abstraction Layer affects several fields of application. The achieved goals and the remaining
efforts are recapitulated in the following paragraphs.
8.1 Achievements
The Input Abstraction Layer’s fundamental idea was—and still is—to close existing gaps b e-
tween input device drivers and user space applications. The presently implemented modules
prove that the Input Abstraction Layer’s approach is correct. The Input Abstraction Layer’s
implementation provides a framework that unifies the input events of the existing input device
drivers and enables applications to receive all input events. Due to the numerous bindings
offered by D-BUS for all commonly used programming languages, the Input Abstraction Layer
is not limiting its usage by redlining applications because of the programming language they
are implemented in.
The modular architecture of the Input Abstraction Layer provides two important advan-
tages. On the one hand, the Input Abstraction Layer easily can be adapted to a specific system
and the users needs. On the other hand, developers who are missing the support for an input
device driver are able to implement a module for the Input Abstraction Layer with little efforts.
Without the Input Abstraction Layer’s presence, applications which process user input
events have to face two problems. First, applications can not make any assumptions about the
availability of input devices on the different systems. Secondly, applications are unsure about
the privileges they have at run time. No matter where an input event actually occurred, the
Input Abstraction Layer ensures its notification in a unified way. Thus, applications which
utilize the Input Abstraction Layer benefit from the unified representation of input events and
the output interface which does not require any special permissions to be accessed.
To avoid reaching a dead end, the most important phase of the development was the
study of other projects’ source code. This study gave hints about how to solve problems
in a reasonable way. For several parts of the Input Abstraction Layer, this study kept the
development from reinventing the wheel. This phase preceding the actual implementation was
important to achieve satisfying results which comply with the original ideas of the project.
68