mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 16:10:06 +01:00
There is quite a wide spread in the delta events generated by trackpoints, some generate deltas of 1-2 under normal use, while others generate deltas from 1-20. It is desirable to normalize trackpoint deltas just like we are normalizing mouse deltas to 1000 dpi, so as to give different model laptops aprox. the same trackpoint cursor speed ootb. Recent versions of udev + hwdb set a POINTINGSTICK_CONST_ACCEL udev property which can be used to adjust trackpoints which are too slow / too fast ootb, this commit implements support for that property. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
101 lines
4.1 KiB
Text
101 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. Note that for historical reasons more than
|
|
one of these may be set at any time, libinput will select only one of these
|
|
to determine the device type. To ensure libinput selects the correct device
|
|
type, only set one of them.</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>POINTINGSTICK_CONST_ACCEL</dt>
|
|
<dd>A constant (linear) acceleration factor to apply to pointingstick deltas
|
|
to normalize them.
|
|
</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
|
|
|
|
*/
|