Specifications

CHAPTER 2. DRIVERS AND INTERFACES 14
ACPI Event
Driver
ACPI Bus
Driver
Power Button
Sleep Button
Lid Switch
Other Input
Proc Filesystem
ACPI Button Driver
/proc/acpi/event
/proc/acpi/other
Other ACPI Drivers
User Space
Process
Process
Figure 2.4: Linux ACPI Input
The event driver is part of the ACPI subsystem and does not need to be enabled ex-
plicitly in the kernel configuration. As mentioned above, user space is responsible for the
distribution of the ACPI events. For this purpose, the ACPI daemon acpid (http://acpid.
sourceforge.net/) is used by most Linux distributions. The ACPI daemon permanently
reads /proc/acpi/event and distributes the events using Unix domain sockets to other user
space applications. Besides distributing the events the ACPI daemon can be used to react
upon occurring events.
2.7 Other Interfaces
Several other drivers for function keys of mobile computers are also available, and have not yet
been discussed. Since many laptop vendors recently changed the hardware interface for function
keys using ACPI, the following drivers mostly apply to laptops which are not recent. While
some of these drivers are directly included in the mainline version of the Linux kernel, others
are only available as kernel patch. The Linux kernel includes drivers for the following mobile
computers: Dell (CONFIG DELL), IBM ThinkPad (CONFIG NVRAM), Sony (CONFIG SONYPI) and
Toshiba (CONFIG TOSHIBA). Mobile computers from Acer, Hewlett Packard and Panasonic are
supported by external drivers (not included in the Linux mainline kernel).
Many Dell laptops (Appendix C, §C.3) are supported by the Dell system management
mode driver i8k.c, which provides the user space interface /proc/i8k. The i8tools package
(available from http://people.debian.org/~dz/i8k/) requires this interface and contains a
tool called i8kbuttons. This tool enables the use of the function keys found on the supported
Dell laptops.
Function keys of IBM ThinkPad laptops can be used with the help of a user space applica-
tion called tpb which stands for “ThinkPad Button”. The NVRAM interface /dev/nvram
which is enabled by compiling the Linux kernel with the configuration option CONFIG NVRAM—is
required in order to use tpb. A list of the laptops which are supported by the driver is found in
Appendix C, §C.6. The source package of tpb is available from http://www.nongnu.org/tpb/.
The “Panasonic Hotkey Driver” is available from http://www.da-cha.org/letsnote/ and
supports function keys found on several recent Panasonic laptops. On supported systems
(Appendix C, §C.7), the driver generates events using the ACPI event interface. The driver
generates events with device class set to pcc and bus id set to HKEY. While type is always