f31522130f
Build system (5 gaps hardened): - COOKBOOK_OFFLINE defaults to true (fork-mode) - normalize_patch handles diff -ruN format - New 'repo validate-patches' command (25/25 relibc patches) - 14 patched Qt/Wayland/display recipes added to protected list - relibc archive regenerated with current patch chain Boot fixes (fixable): - Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset) - D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped) - redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped) - daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch) - udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async) - relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs - greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait) - greeter-ui: built and linked (header guard unification, sem_compat stubs removed) - mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps - greeter config: removed stale keymapd dependency from display/greeter services - prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified Unfixable (diagnosed, upstream): - i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort - kded6/greeter-ui: page fault 0x8 — Qt library null deref - Thread panics fd != -1 — Rust std library on Redox - DHCP timeout / eth0 MAC — QEMU user-mode networking - hwrngd/thermald — no hardware RNG/thermal in VM - live preload allocation — BIOS memory fragmentation, continues on demand
59 lines
3.2 KiB
ReStructuredText
59 lines
3.2 KiB
ReStructuredText
.. _touchpad_pressure:
|
|
|
|
==============================================================================
|
|
Touchpad pressure-based touch detection
|
|
==============================================================================
|
|
|
|
libinput uses the touchpad pressure values and/or touch size values to
|
|
detect whether a finger has been placed on the touchpad. This is
|
|
:ref:`kernel_pressure_information` and combines with a libinput-specific hardware
|
|
database to adjust the thresholds on a per-device basis. libinput uses
|
|
these thresholds primarily to filter out accidental light touches but
|
|
the information is also used for some :ref:`palm_detection`.
|
|
|
|
Most devices only support one of either touch pressure or touch size.
|
|
libinput uses whichever is available but a preference is given to touch size
|
|
as it provides more specific information. Since most devices only provide
|
|
one type anyway, this internal preference does not usually matter.
|
|
|
|
Pressure and touch size thresholds are **not** directly configurable by the
|
|
user. Instead, libinput provides these thresholds for each device where
|
|
necessary. See :ref:`touchpad_pressure_hwdb` for instructions on how to adjust
|
|
the pressure ranges and :ref:`touchpad_touch_size_hwdb` for instructions on
|
|
how to adjust the touch size ranges.
|
|
|
|
.. _kernel_pressure_information:
|
|
|
|
------------------------------------------------------------------------------
|
|
Information provided by the kernel
|
|
------------------------------------------------------------------------------
|
|
|
|
The kernel sends multiple values to inform userspace about a finger touching
|
|
the touchpad. The most basic is the ``EV_KEY/BTN_TOUCH`` boolean event
|
|
that simply announces physical contact with the touchpad. The decision when
|
|
this event is sent is usually made by the kernel driver and may depend on
|
|
device-specific thresholds. These thresholds are transparent to userspace
|
|
and cannot be modified. On touchpads where pressure or touch size is not
|
|
available, libinput uses ``BTN_TOUCH`` to determine when a finger is
|
|
logically down.
|
|
|
|
Many contemporary touchpad devices provide an absolute pressure axis in
|
|
addition to ``BTN_TOUCH``. This pressure generally increases as the pressure
|
|
increases, however few touchpads are capable of detecting true pressure. The
|
|
pressure value is usually related to the covered area - as the pressure
|
|
increases a finger flattens and thus covers a larger area. The range
|
|
provided by the kernel is not mapped to a specific physical range and
|
|
often requires adjustment. Pressure is sent by the ``ABS_PRESSURE`` axis
|
|
for single-touch touchpads or ``ABS_MT_PRESSURE`` on multi-touch capable
|
|
touchpads. Some devices can detect multiple fingers but only provide
|
|
``ABS_PRESSURE``.
|
|
|
|
Some devices provide additional touch size information through
|
|
the ``ABS_MT_TOUCH_MAJOR/ABS_MT_TOUCH_MINOR`` axes and/or
|
|
the ``ABS_MT_WIDTH_MAJOR/ABS_MT_WIDTH_MINOR`` axes. These axes specifcy
|
|
the size of the touch ellipse. While the kernel documentation specifies how
|
|
these axes are supposed to be mapped, few devices forward reliable
|
|
information. libinput uses these values together with a device-specific
|
|
:ref:`device-quirks` entry. In other words, touch size detection does not work
|
|
unless a device quirk is present for the device.
|