Xorg server and HAL

Versions that use HAL

Xorg versions 1.4 through 1.7 (and optionally later versions) use HAL for several things related to input devices:

  1. Finding input devices at startup
  2. Being notified of input device hotplugging (arrival & removal)
  3. Mapping system input devices to Xorg input driver modules (via .fdi files provided with Xorg input drivers)
  4. Setting input device options (via user-customized .fdi files)

HAL is not used by Xorg for output devices or any other devices, only input.

Versions that do not use HAL

Since the HAL project has stopped development and deprecated itself, X.Org is planning to move off HAL in the future. Support for udev instead of HAL is available in X Servers 1.8 and later and enabled by default, pending platform availability. As HAL was also used for input device configuration, a new feature has been added to X Server 1.8 to support configuration snippets in the xorg.conf.d directory. Instead of udev rules, users and distributions are encouraged to use the xorg.conf.d for configuration. Old-style xorg.conf configuration is still available.

https://fedoraproject.org/wiki/Input_device_configuration has instructions on how the new system works.

Future Versions

The currently planned replacements for the above functionality pieces are:

  1. Direct calls to OS-dependent device enumeration libraries (libudev on Linux, libdevinfo on Solaris, etc. - basically whatever HAL called to do this)

Neither DeviceKit, nor the udisks/upower/etc. replacements provide any of this functionality for input devices, and the DeviceKit authors have indicated that they do not plan to provide such functionality, suggesting direct use of the OS interfaces such as libudev instead.