Specifications
CHAPTER 3. REQUIREMENTS SPECIFICATION 19
3.2 Functional Requirements
The functional requirements are derived from the current problems regarding user input.
Unattended Input Events
The major problem is that many events received by the Linux kernel actually are not arriving
at to user space applications. Thus, they can not be used. The first functional requirement is
the implementation of a user space interface which is reporting to up until to now unattended
events.
Until now, each keypress event which does not have a translation from its scancode to
a keycode is recognized by the Linux input core, but the event does not reach user space
applications as the event interface is not utilized to its full extent. Even though ACPI events are
accessible by either using the ACPI event interface or the ACPI daemon’s socket, applications
do not make full use of these interfaces. This applies to events of the above mentioned specific
input device drivers, too: input events are delivered to user space interfaces which are not
utilized by applications.
Elimination of Barriers
The aforementioned input interfaces have different access permissions—some are accessible by
all users, some only by users with special permissions (root). No special permissions shall be
necessary in order to access the user space interface offered by the Input Abstraction Layer.
All user space processes should be able to receive events by listening on the interface. This
second functional requirement implies a security threat, which is addressed in Section §3.5.
Unified Data Representation
The third functional requirement applies to the representation of the events reported by the
Input Abstraction Layer’s output interface. To avoid inconsistency, the events should have a
common data representation, independent of the actual event source.
Permanent Interface
The output interface itself should not change its location. No matter how it is implemented,
it should always be accessible at the same location. This ensures that applications can easily
check whether the Input Abstraction Layer is available or not. The permanent interface is the
fourth functional requirement.
Independent Interface
The fifth and last functional requirement states that the Input Abstraction Layer should b e ac-
cessible to all applications. This time, access does not apply on the permissions as described by
functional requirement number two. Applications should be able to use the Input Abstraction
Layer’s interface independent of the programming language they are implemented in.