[ANNOUNCE] libinput 0.7.0

Peter Hutterer peter.hutterer at who-t.net
Thu Dec 4 21:01:23 PST 2014

A new release of libinput, 0.7, is available.

A main focus in this cycle was to get to almost feature parity with the
current X-based input stack. Things libinput gained since 0.6:

* devices can be disabled/enabled at runtime. This includes smart disabling
  of touchpads when a USB mouse is plugged in, and smart disabling of the
  T440 touchpads so that the top buttons still work even when the touchpad
  is disabled.
* edge scrolling is available on some devices, and the scroll method can be
  switched at runtime
* trackpoints can scroll by pressing the middle button and moving the stick.
  This button-scrolling method is also available on other devices on request.
* pointer acceleration is becoming device-resolution independent, provided
  your device has a DPI entry in the udev hwdb. This makes high-resolution
  gaming mice behave normally. See this post for more details:
* pointer speed can be changed at runtime
* natural scrolling is now available, for touchpads and mice
* devices can be switched to left-handed, libinput handles the details
* devices can be asked to change their assigned logical seat at runtime
* relative pointer events also provide unaccelerated motion. Note that this
  is _not_ raw data as it comes from the device, it's normalized to

There are no API breakages in this version, but many additions.
Note that the APIs that are marked as deprecated since 0.6 will be removed
in the next version.

Two convenience functions were added to get the struct libinput back from a
device or a seat object:

The call to reassign a new logical seat to a device is:

Some callers have a requirement to modify or examine the device outside of
what libinput provides. libinput now can hand callers the matching udev
device (if any) that represents a libinput device:

To access unaccelerated delta motion from pointer events:

Config APIs always come in a quartett of has/set/get/get_default, I've only
listed the respective "set" method below, please find the rest in the API

To know which button can be used to enable button-based scrolling:

And of course the usual cleanups, fixes, etc.

The full commit shortlog is below.

David Herrmann (2):
      util: introduce ratelimit helpers
      evdev: ratelimit SYN_DROPPED logging

Derek Foreman (8):
      cosmetic: Remove prototype for nonexistent create_linear_acceleration_filter()
      cosmetic: convert evdev_need_touch_frame from int to bool
      evdev: Log evdev event queue overflows
      filter: Fix typo
      filter: perform speed computations with doubles
      evdev: add DPI to evdev calculations
      evdev: Fix uninitialized variable warning
      evdev: Query mouse DPI from udev

Hans de Goede (39):
      evdev: Move generic scroll code from evdev-mt-touchpad.c to evdev.c
      evdev: Add middle button scrolling for trackpoints
      evdev: Add an internal device suspend / resume notification system
      touchpad: Route top softbuttons through the trackstick if we've one
      touchpad: Put state unrolling code in a tp_clear_state() helper function
      touchpad: When disabling a TOPBUTTONPAD, leave the top buttons enabled
      touchpad: Enlarge topbutton area a bit while the touchpad is disabled
      litest: Add litest_assert_scroll() helper function
      test: Add trackpoint middlebutton scrolling tests
      core: Make time argument to internal foo_notify_bar functions 64 bit
      core: Add timestamp parameter to post_device_event
      core: Add internal event notification mechanism
      core: Move libinput_event definition to libinput-private.h
      touchpad: Rewrite / fix tp_release_all_taps
      touchpad: Add tap suspend / resume
      touchpad: Rename consumed to filter_motion
      touchpad: Disable touchpads on trackpoint activity
      touchpad: Fix log_bug_libinput calls on tap enable with fingers down
      litest: Add a sleep_ms parameter to litest_touch_move_to
      touchpad: Make motion during tap-n-drag test take some time
      touchpad: Don't send scroll events during 2 finger tap-n-drag
      touchpad: Add a test for 2fg tap-n-drag release on a 3th finger down
      touchpad: Make tap code follow state machine diagram part 1
      touchpad: Make tap code follow state machine diagram part 2
      touchpad: Make tap code follow state machine diagram part 3
      Fix libinput_device_config_send_events_get_default_mode docs
      Add libinput_device_has_button function
      Add configuration option to select scroll mode
      evdev: Add evdev_any_button_down helper function
      evdev: Hookup scroll mode configuration
      touchpad: s/config/config_natural/
      test: s/test_2fg_scroll/test_trackpoint_scroll/
      test: Add trackpoint middle button scrolling disable test
      test: Add litest_button_scroll helper function
      test: Add button scroll test to pointer tests
      touchpad: Hookup scroll-mode configuration
      touchpad: Move 2 finger scrolling functions to above tp_process_state()
      touchpad: Add code to get the touchpad model / manufacturer
      touchpad: Add edge-scrolling support

Jonas Ã…dahl (2):
      Introduce unaccelerated motion event vectors
      test: Don't send two motion events when button scrolling

Krzysztof A. Sobiecki (1):
      Ignore devices that have joystick buttons

Peter Hutterer (107):
      test: fix a jumping touch movement
      test: print strerror() if uinput device creation fails
      Add a helper function for clock_gettime
      test: avoid erroneous devices to be passed into the test suites
      test: add litest_add_device()
      test: move assert_button_event to litest proper
      test: wait for events in litest_assert_button_events
      touchpad: fix tap-and-drag handling for timeouts
      evdev: prefix the hw key/button bitmask with 'hw'
      evdev: factor out closing a device into evdev_suspend()
      evdev: prevent double-suspending a device
      Add a config interface for enabling/disabling event generation from a device
      evdev: add helper function evdev_need_mtdev
      evdev: hook up a generic enable/disable interface for devices
      evdev: don't resume a removed device
      test: add test for device suspend/resume
      evdev: drop the button count when releasing keys on remove
      touchpad: split handling the state into a separate function
      touchpad: hook up sendevents configuration
      test: test for release events on device suspend
      evdev: add a internal device notification mechanism
      evdev: add internal tagging system
      touchpad: implement conditional disabling
      touchpad: move softbutton initialization to separate function
      touchpad: Keep track of associated trackpoint device
      test: Test the topbuttons of a disabled touchpad still send events through the trackpoint
      evdev: drop unused declaration evdev_proces_event
      Drop two semicolons after a macro definition
      Replace pointer acceleration with a much simpler linear one
      filter: add a filter-private.h header file
      filter: move the threshold/accel into the filter struct
      filter: add a configurable speed interface
      filter: adjust acceleration curve depending on speed
      touchpad: use the evdev device's filter struct
      Add a pointer acceleration API
      evdev: hook into pointer acceleration config interface
      touchpad: hook up pointer acceleration configuration
      tools: keep a list of devices around for run-time changes
      tools: map KEY_UP/DOWN to pointer acceleration
      Add a configuration option for natural scrolling
      touchpad: hook up natural scrolling configuration
      test: add tests for natural scrolling
      Add missing doxygen @ingroup commands
      test: add helper functions for the two timers we care about
      test: add litest_push/pop_event_frame() helpers
      Add configuration option for left-handed behavior
      evdev: hook up left-handed configuration option
      touchpad: hook up left-handed configuration
      test: add some left-handed tests
      doc: update for latest doxygen
      Fix a documentation typo
      Fix documentation for libinput_log_set_handler
      test: drop superfluous empty line
      test: pass an enum for the axis instead of uint
      Change sendevents configuration to use bitmasks
      evdev: factor out resolution changing code
      evdev: move a comment to where it belongs
      evdev: handle fake MT devices
      test: add the MS surface touch cover device and fake-mt tests
      test: fix coding style
      evdev: don't ignore REL_HWHEEL values over 1
      test: add QEMU tablet as test device
      test: add test for absolute pointer motion
      test: add Xen Virtual Pointer device
      test: add VMWare Virtual USB Mouse device
      test: rename a parameter to litest_assert_scroll()
      evdev: move scroll flag setting/check into a helper function
      evdev: use fabs(x) instead of (x <= -a || x >= a)
      touchpad: explicitly init scroll settings
      evdev: use distance triggers to start scrolling
      evdev: add missing break
      evdev: fix indentation on an if condition
      Allow for a 0 button on button scrolling
      tools: print config options for each device on DEVICE_ADDED
      tools: print the device name on DEVICE_ADDED
      evdev: move calibration/sendevents config init into helpers
      evdev: move natural scrolling configuration into evdev
      evdev: enable natural scrolling for all pointer devices
      test: add natural scrolling tests for pointers
      doc: add a few missing @ref tags
      touchpad: print the device name on error
      Drop unused libinput_device->terminated field
      evdev: fix leaking file descriptor
      Rename scroll_mode to scroll_method
      path: keep the udev context around
      path: split out creating a device into a helper function
      path: store the udev device instead of just the devnode
      evdev: use a udev_device instead of separate sysname/syspath/devnode
      evdev: remove a race condition opening the wrong device
      udev: optionally pass the seat name into device_added()
      path: optionally pass the seat name into path_device_enable()
      Add libinput_device_set_seat_logical_name() to change seats at runtime
      test: add seat changing tests
      test: move device ID test to test/device.c
      filter: fix a comment, 400 isn't hard-coded anymore
      Move DEFAULT_MOUSE_DPI to filter.h
      Change default DPI to 1000
      Add a function to retrieve the udev_device handle from a libinput device
      Add libinput_device_get_context/libinput_seat_get_context
      Document relative motion normalization
      Add missing @ingroup tag
      touchpad: drop unused device arg from tp_clear_state
      Always check for INVALID configs first
      Split libinput-util into a noinst helper library
      udev: only apply default calibration on absolute devices
      configure.ac: libinput 0.7

git tag: 0.7.0

MD5:  381b61396de28c12716ef7a5475fea50  libinput-0.7.0.tar.xz
SHA1: 4bbe9c7ccb23215a818f440e94cb84edc58e99e8  libinput-0.7.0.tar.xz
SHA256: 129f485afe5e4a9394641293991c97cb99f5f3338340d0d65b704ff463d1579e  libinput-0.7.0.tar.xz
PGP:  http://www.freedesktop.org/software/libinput/libinput-0.7.0.tar.xz.sig

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20141205/3103190a/attachment.sig>

More information about the wayland-devel mailing list