mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 16:10:06 +01:00
Not all touchpad kernel drivers supply the x/y resolution. Let the udev hwdb fix this up where possible and read the value from it. This is intentionally only used on touchpads, touchscreen devices without resolution should be considered buggy and fixed in the kernel. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
99 lines
4.1 KiB
Text
99 lines
4.1 KiB
Text
/**
|
|
@page udev_config Static device configuration via udev
|
|
|
|
libinput supports some static configuration through udev properties.
|
|
These properties are read when the device is initially added
|
|
to libinput's device list, i.e. before the @ref
|
|
LIBINPUT_EVENT_DEVICE_ADDED event is generated.
|
|
|
|
The following udev properties are supported:
|
|
<dl>
|
|
<dt>LIBINPUT_CALIBRATION_MATRIX</dt>
|
|
<dd>Sets the calibration matrix, see
|
|
libinput_device_config_calibration_get_default_matrix(). If unset,
|
|
defaults to the identity matrix.
|
|
|
|
The udev property is parsed as 6 floating point numbers separated by a
|
|
single space each (scanf(3) format "%f %f %f %f %f %f").
|
|
The 6 values represent the first two rows of the calibration matrix as
|
|
described in libinput_device_config_calibration_set_matrix().
|
|
|
|
Example values are:
|
|
@code
|
|
ENV{LIBINPUT_CALIBRATION_MATRIX}="1 0 0 0 1 0" # default
|
|
ENV{LIBINPUT_CALIBRATION_MATRIX}="0 -1 1 1 0 0" # 90 degree clockwise
|
|
ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1" # 180 degree clockwise
|
|
ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1" # 270 degree clockwise
|
|
ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 1 0 0" # reflect along y axis
|
|
@endcode
|
|
</dd>
|
|
<dt>LIBINPUT_DEVICE_GROUP</dt>
|
|
<dd>A string identifying the @ref libinput_device_group for this device. Two
|
|
devices with the same property value are grouped into the same device group,
|
|
the value itself is irrelevant otherwise.
|
|
</dd>
|
|
<dt>ID_SEAT</dt>
|
|
<dd>Assigns the physical seat for this device. See
|
|
libinput_seat_get_physical_name(). Defaults to "seat0".</dd>
|
|
<dt>ID_INPUT</dt>
|
|
<dd>If this property is set, the device is considered an input device. Any
|
|
device with this property missing will be ignored, see @ref
|
|
udev_device_type.</dt>
|
|
</dd>
|
|
<dt>ID_INPUT_KEYBOARD, ID_INPUT_KEY, ID_INPUT_MOUSE, ID_INPUT_TOUCHPAD,
|
|
ID_INPUT_TOUCHSCREEN, ID_INPUT_TABLET, ID_INPUT_JOYSTICK,
|
|
ID_INPUT_ACCELEROMETER</dt>
|
|
<dd>If any of the above is set, libinput initializes the device as the given
|
|
type, see @ref udev_device_type.</dd>
|
|
<dt>WL_SEAT</dt>
|
|
<dd>Assigns the logical seat for this device. See
|
|
libinput_seat_get_logical_name()
|
|
context. Defaults to "default".</dd>
|
|
<dt>MOUSE_DPI</dt>
|
|
<dd>HW resolution and sampling frequency of a relative pointer device.
|
|
See @ref motion_normalization for details.
|
|
</dd>
|
|
<dt>MOUSE_WHEEL_CLICK_ANGLE</dt>
|
|
<dd>The angle in degrees for each click on a mouse wheel. See
|
|
libinput_pointer_get_axis_source() for details.
|
|
</dd>
|
|
<dt>TOUCHPAD_RESOLUTION</dt>
|
|
<dd>The x and y resolution in units/mm for a touchpad. This value is only
|
|
used if the touchpad kernel driver does not supply a valid resolution. It
|
|
is only used on touchpad devices. The format is two unsigned integer values
|
|
separated by a literal 'x', e.g. "42x129".</dd>
|
|
</dl>
|
|
|
|
Below is an example udev rule to assign "seat1" to a device from vendor
|
|
0x012a with the model ID of 0x034b.
|
|
@code
|
|
ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="012a", \
|
|
ENV{ID_MODEL_ID}=="034b", ENV{ID_SEAT}="seat1"
|
|
@endcode
|
|
|
|
|
|
@section udev_device_type Device type assignment via udev
|
|
|
|
libinput requires the <b>ID_INPUT</b> property to be set on a device,
|
|
otherwise the device will be ignored. In addition, one of <b>
|
|
ID_INPUT_KEYBOARD, ID_INPUT_KEY, ID_INPUT_MOUSE, ID_INPUT_TOUCHPAD,
|
|
ID_INPUT_TOUCHSCREEN, ID_INPUT_TABLET, ID_INPUT_JOYSTICK,
|
|
ID_INPUT_ACCELEROMETER</b> must be set on the device to determine the
|
|
device type. The usual error handling applies within libinput and a device
|
|
type label does not guarantee that the device is initialized by libinput.
|
|
If a device fails to meet the requirements for a device type (e.g. a keyboard
|
|
labelled as touchpad) the device will not be available through libinput.
|
|
|
|
Only one device type should be set per device at a type, though libinput can
|
|
handle some combinations for historical reasons.
|
|
|
|
Below is an example udev rule to remove an <b>ID_INPUT_TOUCHPAD</b> setting
|
|
and change it into an <b>ID_INPUT_TABLET</b> setting. This rule would apply
|
|
for a device with the vendor/model ID of 012a/034b.
|
|
|
|
@code
|
|
ACTION=="add|change", KERNEL=="event[0-9]*", ENV{ID_VENDOR_ID}=="012a", \
|
|
ENV{ID_MODEL_ID}=="034b", ENV{ID_INPUT_TOUCHPAD}="", ENV{ID_INPUT_TABLET}="1"
|
|
@endcode
|
|
|
|
*/
|