libinput 1.30-rc1 (1.29.901) is now available.

This release brings a new core functionality: Lua plugins.

Lua plugins sit logically between libinput and the kernel and can modify the
evdev event stream from a device. A plugin may change the capabilities of a
device (e.g. enabling/disabling event codes) and/or change selected events.
Further more, plugins can disable certain internal libinput features. This
allows for custom-tailored behavior for cases where hardware doesn't match
what libinput expects (or is willing to implement), e.g. mice with very
specific button debouncing behaviours.

A set of example plugins are available in the plugins/ directory of the
libinput source tree. For plugins to work they need to be enabled by
the caller via the new libinput_plugin_system_load_plugins() call.
Until further notice the meson option -Dautoload-plugins will automatically
load plugins if the caller does not do so. This option may be removed in the
future.

The documentation for plugins is here:
https://wayland.freedesktop.org/libinput/doc/latest/lua-plugins.html

The custom pointer acceleration method can now accelerate high-resolution
scroll wheel events. See the custom pointer accel docs for details:
https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#ptraccel-profile-custom

Finally, libinput now detects virtual devices created e.g. by uinput or virtual
machines. Hardware-specific workarounds (e.g. button debouncing) are no longer
enabled on those virtual devices - this task is punted to the provider of the
virtual device.

And of course we have the usual assortment of device-specific quirks and bug
fixes.

Many thanks to our contributors Adam Sampson, Alexander Bruy, Cyrus Lien, Dan
Forest, Daniel Brackenbury, David Santamaría Rogado, Jan Hendrik Farr, José
Expósito, Marge Yang, Matt Turner, Mingcong Bai, Nat Karmios, Peter Hutterer,
Sertonix, Yinon Burgansky, Zephyr Lykos, and wangyafei.

As usual, the git shortlog is below.

Adam Sampson (2):
      test: correct value type in atou64_test
      evdev: remove duplicate sizeof

Alexander Bruy (1):
      add quirk for TongFang GX4 (X4SP4NAL) touchpad

Cyrus Lien (1):
      quirks: add quirks for Dell Pro Rugged tablets for volume keys.

Dan Forest (1):
      quirks: add quirk for Asus ROG Flow Z13 2025 (GZ302EA) keyboard

Daniel Brackenbury (2):
      quirks: add vendor quirks for Nulea M501 thumb trackball
      quirks: revert Nulea USB quirk due to ID conflict

David Santamaría Rogado (1):
      quirks: HP OmniBook Ultra Flip Laptop 14-fh0xxx

Jan Hendrik Farr (1):
      quirks: add quirk for Google Chromebook Roric

José Expósito (9):
      quirks: don't disable the keyboard on the Dell Latitude 7285
      plugin/wheel: Use libinput_device_is_virtual()
      quirks: Add quirks for the GPD MicroPC 2 touchpad
      libinput: Add libinput_event_gesture forward declaration
      quirks: add Dell 16 Premium touchpad quirks
      quirks: add Dell 14 Premium touchpad quirks
      quirks: Rename QUIRK_MODEL_LOGITECH_MX_MASTER_3
      doc/user: Document ModelScrollOnMiddleClick quirk
      quirks: Avoid accidental scroll for Logitech MX Master 2S

Marge Yang (2):
      quirks: add Dell laptop touchpad quirks
      quirks: add Dell laptop touchpad quirks

Matt Turner (1):
      test: Accept mkdir_p("/proc/foo") might return EACCES

Mingcong Bai (1):
      quirks: lower AttrTrackpointMultiplier for Lenovo ThinkPad E16 Gen 3

Nat Karmios (1):
      quirks: Ignore BTN_0 for Microsoft Surface Keyboard

Peter Hutterer (83):
      tools/replay: improve the verbose output a bit
      quirks: minor cleanup to use attribute(cleanup)
      CI: don't run the wayland-web job for marge
      clang-format: add litest_with_logcapture to foreach macros
      test: don't run the check for lowres events if we don't have hires events
      test: track bug messages separately in log captures
      test: switch another test to use logcapture
      test: add litest_assert_strv_no_substring
      test: fix the keycode obfuscation test
      util: add bitmask_size() to return the size of a bitmask
      util: add an infmask_t type for an infinitely-sized bitmask
      util: add a helper struct for an evdev mask
      plugin: add evdev usage masks for plugins
      plugin: register plugins for the plugin-specific usages
      Add a public plugin system to libinput
      test: allow creating a context with a custom plugindir
      plugins: add support for lua plugins to change evdev event streams
      lua: drop compatibility to 5.1 to allow for luajit
      Drop evdev_frame_new_on_stack()
      pad: don't assert when unable to find the mode group, just discard
      util: mark the various bitmask functions as nonnull
      test: fix two clang-tidy dead store complaints
      tools: move a clang-tidy silence back to where it needs to be
      touchpad: fix a clang-tidy warning
      util: annotate that our mask cannot be NULL
      util: silence two clang-tidy false positives
      plugins: remove two unused cleanup functions
      plugin: add hooks to disable internal features
      plugin: allow disabling the button debouncing feature
      plugin: allow disabling the wheel debouncing feature
      touchpad: allow disabling the touchpad jumping cursor detection
      touchpad: allow disabling the touchpad hysteresis
      touchpad: allow disabling palm detection altogether
      lua: implement support for disabling of features
      Correct the @since tags for the new plugin functions
      CI: change the wayland-web job to use rules
      pad: add some extra asserts to shut up clang-tidy
      clang-tidy: fix WarningAsErrors option to actually work
      quirks: add XDG_RUNTIME_DIR/libinput to the quirks directories
      replay: use the runtime quirks for our replay quirks
      doc/user: add eraser buttons to the "Configuration Options" page
      doc/user: fixes and a TOC for the Configuration Options page
      plugin: expand the plugin name prefix to 22 chars
      util: print nonchanged axis with a space instead of a *
      plugin: when disabling wheel-debouncing set to the correct enum value
      plugin: remove the event frame callbacks when disabling a plugin
      plugin: don't register the mouse-wheel plugin for passthrough devices
      plugin: reset the filtered frame after sending it with buttons
      quirks: add quirk for the RazerBlade162025 keyboard
      plugin: don't initialize the debounce plugin on a virtual device
      plugin: remove the proximity timer callback after prox out events
      plugin: ensure prox out for a forced proximity tool if the tool changes
      quirks: change VM devices to AttrIsVirtual
      triage-policies: add a bugbot hook for re-closing a bug
      lua: add missing lua_pop for the evdev frame
      lua: ignore unsupported event codes in modified frames
      tools/replay: set the multiprocessing start method to fork
      tools/replay: rmdir, not unlink for directories
      CI: drop the ci-fairy check-mr job
      quirks: add a quirk for the RazerBlade142025 keyboard
      meson.build: bump to 1.29.900
      plugins: rename the flags to libinput_plugin_system_flags
      plugins: update plugins for the current API
      doc: fix wrong reference to the plugin system
      tablet: log the pressure offset's percentage once we detected it
      tablet: when configuring a user-defined pressure range, zero the offset
      tablet: don't consider a 0.0-1.0 pressure range as configured range
      tools: don't set the tool pressure range if we're using the default
      tools: add support for NO_COLOR/FORCE_COLOR
      doc: some updates to the plugin system docs
      doc/user: update the lua plugin documentation
      lua: remove the inject_frame API
      lua: drop the log global in favor of libinput:log_*
      meson.build: change set10 to set
      plugins: add meson option to autoload plugins
      plugins: add an example plugin on how to reconfigure the Copilot key
      doc/user: fix a few issues with the Lua API documentation
      plugins: fix some minor issues with the example plugins
      lua: fix superfluous comma
      lua: remove the unpack global function
      lua: return an empty table as device info after device removal
      lua: fix the event type/code loops - EV_MAX/ABS_MAX is inclusive
      lua: add select to the list of allowed functions

Sertonix (1):
      Fix format strings on 32-bit with 64-bit time_t

Yinon Burgansky (2):
      filter: support accelerating high-resolution scroll wheel events
      filter: avoid division-by-zero when delta_time is zero in custom filter

Zephyr Lykos (2):
      meson.build: mark executables with install_tag
      meson.build: remove useless meson version checks

wangyafei (1):
      quirks: add quirks for Dell laptop with Sensel Touchpad.

Attachment: signature.asc
Description: PGP signature

Reply via email to