From Fedora Project Wiki

Input Device Properties

Summary

With X server 1.6, input devices provide a generic mechanism to change driver settings at runtime. The same mechanism may be used by applications to store information directly on device.

Owner

Current status

  • Targeted release: Fedora 11
  • Last updated: (2009-02-26)
  • Percentage of completion: 100%

Detailed Description

X server 1.6 (as shipped in F11) provides new X Protocol requests to list, change and query input device properties. Properties as information exchange mechanism have a long tradition: they are used extensively on windows to provide information exchange between applications (including the window manager). For example, even closing a window is usually performed through setting properties. With the RandR extension, properties became available on output devices, and now, with server 1.6 and the X Input Extension 1.5, such properties are now available on input devices as well.

Input device properties provide two benefits for applications and users:

  • Properties initialized and recognized by the driver or the server can be used to modify device settings at run-time.
  • Properties initialized by an application can be used to store information globally on a device. This information is available through a generic interface to all other applications and can thus be used to annotate devices.

Run-time manageable device properties reduce the need for configuration in the xorg.conf/HAL's fdi files and supersede custom mechanisms such as synaptics's SHM mechanism.

Benefit to Fedora

Run-time manageable device properties reduce the need for configuration in the xorg.conf/HAL's fdi files and supersede custom mechanisms such as synaptics's SHM areas. They further allow for easily extendable GUI configuration tools and for new ways of exchanging device-related information between applications.

Scope

Requires rebasing to X.Org X11 server 1.6.

How To Test

  • Install xorg-x11-server-1.6.0-1 or higher
  • Install xorg-x11-apps (for the xinput tool)
  • Use xinput to query and modify the properties on your input device
    • xinput --list --short - lists all input devices
    • xinput --list-props <device name> - lists the properties for the given device (you can substitute the name with the device ID)
    • xinput --set-int-prop <device name> <property name> <format> <value> [<value> <value> ...] - changes an integer property to the given value(s). For example, xinput --set-int-prop "USB Mouse" "Evdev Wheel Emulation" 8 1 sets the wheel emulation property (8 bit format) on the usb mouse to the value 1.

The properties are driver-dependent, so far evdev and synaptics export their available settings as properties. The man pages of the respective drivers list all available properties and their formats.

User Experience

This is a low-level interface that has no direct impact on the user. However, some tools are being converted to use input properties instead of custom mechanisms, and a generic tool ('xinput') is available to enable users to change properties in the absence of GUI tools. The drivers xorg-x11-drv-evdev and xorg-x11-drv-synaptics expose configuration settings as properties and can thus be configured at runtime.

The GNOME Mouse capplet has gained a 'Touchpad' tabbed section that allows to configure basic aspects of synaptics touchpads by means of input device properties.

Dependencies

  • xorg-x11-server 1.6 (RCs already in rawhide)
  • libXi 1.2 (already in rawhide)

For run-time configuration of drivers:

  • evdev 2.1 (in F10)
  • synaptics 1.0 (already in rawhide)

Contingency Plan

  • none, this feature comes built-in with server 1.6

Documentation

Release Notes

The new X server 1.6 includes Input Device Properties, a new mechanism to store information on input devices. This new API allows for run-time configuration of drivers as well as enabling applications to globally store information on an input device.

The drivers xorg-x11-drv-evdev and xorg-x11-drv-synaptics already expose configuration settings as properties and can thus be configured at runtime.