[ANNOUNCE] libinput 1.2.0

Peter Hutterer peter.hutterer at who-t.net
Tue Feb 23 07:03:13 UTC 2016

libinput 1.2 is now available. 

Nothing significant since rc2, below is an outline of changes since 1.1.
The main feature merged since 1.1 is graphics tablet tool support.
Devices tagged by udev as ID_INPUT_TABLET are handled by libinput now and
exposed with the LIBINPUT_DEVICE_CAP_TABLET_TOOL capability. Note that this
currently only includes tablet tool support, including stylus, eraser,
cursor, lens cursor, etc. The "pad" part of the tablet is not yet
integrated. For documentation on tablet support see these two links:

It is now possible to disable tap-and-drag independently from tapping in
general by caling libinput_device_config_tap_set_drag_enabled()

We now have three-finger pinch gestures on supported hardware, but also had
to disable gestures on some hardware. On that hardware the data is generally
garbage for gestures but two-finger scroll gestures and multi-finger taps
should work a lot more reliable now.

The motion hysteresis has been deactivated by default. This provides
smoother motion especially on small to tiny motions, making single-pixel
elements much easier to target.
On some devices, especially older touchpads the hysteresis may be required.
We've enabled a bunch of those already, if you notice the pointer wobbling
when hold the finger still, please file a bug so we can fix this.

Disable-while-typing has seen two fixes: if a key is merely held down rather
than pressed repeatedly, DWT will engage as expected now. And the
pairing algorithm has been improved to avoid cases where the touchpad was
paired with an external USB keyboard, despite there being a internal

Last: the mode button on the Cyborg RAT 5 is disabled. This button is
special, on each press it cycles through 3 'modes', sending a release
event for the current button and a down event for the next event code. This  
causes stuck buttons, since we have nothing in userspace that would handle
that button as intended, disabling it is the current solution.

As usual, the git shortlog is below.

Peter Hutterer (4):
      touchpad: add synaptics semi-mt devices to those needing hysteresis
      touchpad: move the tapping exclusion zone to the top edge of the button
      tablet: use the tilt resolution if we have it
      configure.ac: libinput 1.2.0

And the git shortlog since 1.1:

Caibin Chen (1):
      touchpad: fix DWT pairing for Macbook Pro 2015

Carlos Garnacho (6):
      Add LIBINPUT_DEVICE_CAP_TABLET libinput_device_capability value
      test: Add infrastructure for testing tablet events.
      test: Add Wacom Bamboo 16FG 4x5 Pen device definition
      test: Add Wacom Cintiq 12WX device definition
      test: Add Wacom Intuos5 touch M Pen device definition
      test: Add Wacom ISDv4 E6 Pen device definition

Jason Gerecke (4):
      Fix normalization functions
      Remove spurious addition from range normalization calculation
      evdev: Do not mark tablet touchscreens as tablets
      tools: List relative wheel among axis capabilities

Olivier Blin (1):
      gitignore: ignore compile script generated by automake >= 1.14

Peter Hutterer (338):
      tablet: check the button range before we use it
      tablet: rename flags to mask
      tablet: use "int32_t", not "signed"
      tablet: print invalid evdev types/codes as string for debugging purposes
      tools: print tablet axis debugging on one line
      Merge branch 'master' into tablet-support
      tablet: provide x/y by default in mm off the top/left corner
      tablet: normalize the distance to 0..1
      tablet: ignore pad buttons
      Merge branch 'master' into tablet-support
      tools: explicitly ignore tablet event codes in the event-gui
      evdev: fix a broken log message for per-context logging
      Add a couple missing @ref tags
      tablet: always return 0 for axis values on non-axis events
      Fix address for memcpy()
      Update libinput_tool_ref/unref() to return the tool object
      tablet: copy the axis state into the tablet event
      test: add missing BTN_TOOL_ settings to Wacom I5
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      test: put two warnings into the tablet tests
      Merge tag '0.7.0' into tablet-support
      tablet: initialize all unused dispatch callbacks to NULL
      Drop LIBINPUT_TABLET_AXIS_CNT from the public API
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Move the tablet functions to the 0.9.0 symbol table
      Merge tag '0.9.0' into tablet-support
      Fix a copy/paste error
      test: force the motion test to be axis events only
      test: fix a compiler warning about uninitialized variable
      Merge branch 'master' into tablet-support
      tools: print the tablet capability as 'T' in event-debug
      Clarify proximity handling for tools always in proximity
      Move the tablet APIs into the right library version
      tablet: drop LIBINPUT_TABLET_AXIS_NONE from the API
      tablet: spell out that we always include all values
      Merge branch 'master' into tablet-support
      Revert "tablet: Add tests for axes on proximity events"
      Merge branch 'master' into tablet-support
      cosmetic: drop double empty lines
      Merge branch 'master' into tablet-support
      test: fix two tablet tests
      test: replace a while loop with a litest helper
      test: fix double comparison macros
      test: add litest_assert_tablet_button_event()
      tablet: fix two coding style issues
      tablet: drop LIBINPUT_TOOL_NONE from the public API
      tablet: de-couple tool enum values from linux/input.h
      tablet: document what the tool type means
      tablet: add libinput_tool_get_tool_id()
      Keep the tablet APIs in a separate symbol version block
      tablet: use libwacom to identify tablets for left-handedness
      tablet: explicitly ignore ABS_THROTTLE, ABS_RX, ABS_RY, and ABS_RZ
      tablet: factor out checking a device for axes
      tablet: factor out setting axis bits on a tool
      tablet: expand the button mask to allow for BTN_LEFT, RIGHT, MIDDLE
      tablet: add support for libinput_tool_has_button
      tablet: handle mouse-buttons from a tool
      tablet: rely on libwacom to give us the right tablet axes
      tablet: support z-rotation for the mouse/lens tool
      tablet: support airbrush wheel as slider
      tablet: support artpen rotation
      tools: print tool capabilities on proximity
      tools: only print the tablet axes we have on the tool
      tablet: support the rel wheel on the mouse device
      tablet: add libinput_tablet_get_axis_delta()
      tablet: add libinput_event_tablet_get_axis_delta_discrete()
      Merge branch 'master' into tablet-support
      test: add REL_WHEEL to intuos tablet
      test: add tablet wheel test
      cosmetic: add missing empty line
      tablet: fix tool capability test
      doc: add missing @ref tag
      tablet: warn if the libwacom context fails to initalize
      tools: record the start time before doing anything with libinput
      tablet: sync tools already in proximity at startup
      Merge remote-tracking branch 'origin/master' into tablet-support
      tablet: copy distance axis for the mouse/lens cursor devices
      doc: document recommended handling of fake proximity events in the caller
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Move touch_notify_frame declaration back to the touch_notify group
      Merge branch 'master' into tablet-support
      Merge tag '0.13.0' into tablet-support
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Handle tablet capability in device_has_cap
      tablet: add missing libinput_event_tablet_get_base_event
      test: add tablet conversion checks
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      tools - list-devices: print "tablet" capability
      tablet: fix check for rotation axis
      test: use the litest macros in the tablet button check
      test: skip testing tablet buttons that don't exist on the device
      test: print the missing button's name on test failure
      test: add a waltop tablet test device
      test: disable pointer wheel tests on tablets
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      tablet: rely on libwacom for the list of axis capabilities
      tablet: use libwacom_new_from_path() to handle more tablets
      doc: improve the tablet documentation
      doc: drop a confusing note
      test: add test for partial tablet deltas
      Merge branch 'master' into tablet-support
      test: fix compiler warning about tablet test
      test: add test for udev ID_INPUT_TABLET tagging
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      tablet: add get_time_usec() for tablets, switch to usec
      test: add test for the tablet usec API
      Merge branch 'master' into tablet-support
      Merge branch 'master' into tablet-support
      evdev: whitespace fix
      evdev: log a bug for missing pointer accel on relative events
      evdev: don't handle motion events if the device isn't a pointer device
      evdev: init pointer acceleration for any device with pointer cap and rel x/y
      Fix libinput_device_group_find_group() to return NULL on failure
      tablet: widen the serial type to uint64_t
      tablet: use require_event_type instead of direct type check
      tablet: restrict tablet_axis_has_changed to axis/proximity events
      tablet: allow tablet_get_x/y_transformed for proximity events as well
      tools: add tablet support to event-gui
      tablet: rename all tool types to LIBINPUT_TOOL_TYPE_*
      tablet: widen the tool id to 64 bits
      tools: print the tool ID in event-debug
      test: add a device to check MOUSE_WHEEL_CLICK_ANGLE handling
      tools: take the start time before initializing the context
      test: add printing of tablet events to litest
      tablet: clarify tablet axis behavior in regards to proximity
      tablet: rename STYLUS_IN_CONTACT to TOOL_IN_CONTACT
      test: ensure proximity out coordinates are the ones from the last axis event
      tablet: split out tip handling into a separate event
      doc: add a link to the dwt config call to the doc
      configure.ac: libinput 1.1.1
      tablet: hook up tip events
      touchpad: reduced the 2fg scroll threshold to 1mm
      test: use the li variable where we have it
      tablet: add missing event type checks for tablet events
      tablet: allow checking for proximity state on all tablet events
      tablet: allow fetching the tip state from any tablet event
      tablet: rename libinput_tool to libinput_tablet_tool
      tablet: rename libinput_tablet_axis to libinput_tablet_tool_axis
      tablet: rename the tablet axes to "LIBINPUT_TABLET_TOOL_AXIS_..."
      tablet: rename libinput_tool_type to libinput_tablet_tool_type
      tablet: rename TOOL_TYPE to TABLET_TOOL_TYPE
      tablet: rename tool_proximity_state to tablet_tool_proximity state
      tablet: rename tool_tip_state to tablet_tool_tip_state
      tablet: rename TOOL_TIP to TABLET_TOOL_TIP
      tablet: rename the tablet capability to a tablet_tool capability
      tablet: rename libinput_event_tablet to libinput_event_tablet_tool
      tablet: rename the libinput_tool calls to libinput_tablet_tool
      doc: tablet documentation updates
      Merge branch 'master' into tablet-support
      Add a missing closing ) in a comment
      Whitespace fix
      tablet: add two missing curly braces
      tablet: break up a condition to improve readability
      doc: fix double full stop
      test: use the double comparison macros
      tablet: drop the tool type 'finger' from the tablet interface
      test: add tablet pressure/distance test cases
      Ignore BTN_TOOL_* events when posting button events
      test: abort if we have a test that doesn't run for any devices
      test: if we're hovering, don't send BTN_TOUCH
      touchpad: don't try to position fake touches when no fingers are down
      tablet: drop pressure when either pressure or distance changed
      tablet: force the pressure/distance to 0 depending on contact state
      tools: print which scroll axis we have in event-debug
      test: always call libinput_dispatch after moving touches
      touchpad: don't set the axis for a 0.0 value in a scroll event
      evdev: make evdev_transform_absolute available within libinput
      tablet: enable the calibration matrix for internal tablets
      configure.ac: libinput 1.1.2
      Merge branch 'master' into tablet-support
      test: use the double comparison macros
      test: change extra axes to take a percentage as well
      test: add the HUION PenTablet device
      test: change extra axes to take a percentage as well
      test: extend sendfile from 4kB to 40kB
      util: drop trailing semicolon from CASE_RETURN_STRING macro
      touchpad: add a special quirk for the Lenovo x220 with updated firmware
      test: set default axis values for all tablet devices
      tablet: add missing tip event to libinput_event_tablet_tool_get_base_event()
      test: fix copy/paste error in motion_delta_partial
      tools: print the wheel axis delta, not the axis value
      test: fix test for tablet rel wheel discrete deltas
      test: change tablet matrix test to use absolute x/y values
      Merge branch 'master' into tablet-support
      doc: add missing tablet-axes.svg
      tablet: drop unused condition
      test: add pressure axes to proximity in for the bamboo and the cintiq
      tablet: support tool-specific pressure offsets
      doc: a couple of tablet documentation fixes
      configure.ac: libinput 1.1.3
      Merge branch 'master' into tablet-support
      doc: minor comment clarification
      test: use proper proximity events in tablet serial test
      test: modernise the tablet tool serial tests a bit
      evdev: drain any pending evdev events on a device
      tablet: rename axis_has_changed into an axis-specific API set
      tablet: rename axis_get_value into an axis-specific API set
      tablet: rename libinput_tablet_tool_has_axis into an axis-specific API set
      tablet: reduce event deltas to only apply to the wheel
      tablet: remove the libinput_tablet_tool_axis enum from the public API
      tablet: add tilt tests
      test: move litest_assert_ macros and helpers up to the rest of the defines
      doc: add missing @config tag to libinput_config_send_event_modes
      configure.ac: libinput 1.1.4
      test: add litest_axis_set_value helper function
      tablet: dump deltas_discrete, replace with a single wheel_discrete variable
      tablet: dump deltas, replace it with a single wheel_delta variable
      tablet: unroll the tablet axis processing loop
      tablet: simplify check for testing if an axis update is needed
      tablet: simplify check for testing if an axis update is needed
      tablet: store the wheel delta in the normal axes
      tablet: split out axis handling into helper functions
      tablet: don't mark all axes changed on init
      tablet: simplify marking axes as changed
      tablet: add libinput_tablet_tool_is_unique()
      tablet: invert tilt axes when left-handed is enabled
      tablet: drop unused argument from tablet_mark_all_axes_changed
      tablet: handle custom proximity handling
      test: add two more tests for correct button sequence on proximity
      test: use the litest_axis_set_value helper
      Add event debugging to libinput_post_event
      tablet: split sanitize_tablet_axes up into two helpers
      test: fix a bunch of tablet tests to assume, rather than wait for events
      tablet: explicitly set the tip state on the proximity event
      doc: improve absolute axis documentation a bit
      doc: fix and improve the tablet documentation
      doc: add missing tip event to the allowed set of events
      tablet: insert "STATE" into proximity/tip states
      tools: print the button name too, not just the code
      doc: fix two grammar issues "of tablet tool" -> "of the tablet tool"
      tablet: whitespace fix
      tablet: always set the pressure offset
      test: fix a bunch of tablet tests for pressure threshold introduction
      tablet: add pressure threshold handling
      tablet: a tip event can replace an axis event
      tablet: don't set a pressure offset of 0
      evdev: only reject devices with missing MT x/y if they're MT devices
      touchpad: drop outdated comment
      touchpad: whitespace fix
      doc: add section names to motion normalization subheaders
      touchpad: disable MT for elantech semi-mt touchpads
      tablet: allow the various get_<axis> on tablet button events
      tools: get pressure/distance/tilt from a tip event too
      tools: share the axis and tip code where appropriate
      tablet: use a struct rather than a double array for axis values
      tablet: drop delta array, provided by the tablet_axis struct now
      touchpad: drop the model detection - write-only value
      Merge branch 'master' into tablet-support
      test: fix compiler warning
      gestures: split direction check out into a helper function
      gestures: drop 2fg naming from the various states
      touchpad: constify a couple of helper functions
      gestures: pass the finger count into pinch events
      test: remove leftover debug_trace statement
      test: remove a wait loop from the usec gesture test
      test: run pinch gesture tests for 2-slot touchpads
      touchpad: check fake finger count for validity
      test: rearrange fingers for gesture tests
      test: change semi-mt 2fg scroll test to use two-finger movement
      gestures: add support for three-finger pinch gestures
      test: add more gesture tests
      gestures: if a finger is 20mm below the other one, assume a pinch gesture
      doc: explain the gesture ambiguity for 2-slot touchpads
      Merge branch 'wip/3-finger-pinch-gesture'
      touchpad: don't try to unhover touches if nothing changed
      test: when moving 2 fingers, move them in the same frame
      touchpad: disable MT for all semi-mt devices
      touchpad: disable gestures for single-finger touchpads
      tablet: add support for relative x/y motion deltas
      tablet: hook up relative motion events
      tools: add support for tablet relative events to the event-gui
      test: rename the tap tests suite name to "tap:..."
      test: shut up coverity warnings
      test: fix uninitialized variable
      tablet: fix potential null-pointer dereference
      touchpad: remove unused field multitap_last_time
      Merge branch 'wip/disable-semi-mt-gestures'
      touchpad: remove unused variable
      gestures: jump straight to swipe for 3+ finger gestures on ST touchpads
      gestures: jump straight to swipe for 3+ finger gestures on ST touchpads
      gestures: average motion by active touches, not moved touches
      Merge branch 'master' into tablet-support
      gestures: average motion by active touches, not moved touches
      touchpad: add a config option to disable tap-and-drag
      Merge branch 'master' into tablet-support
      Prepare tablet-support branch for merging
      Merge branch 'tablet-support'
      configure.ac: libinput 1.2rc1
      tools: draw the pointer sprite last
      tools: split drawing commands into helper functions
      evdev: disable the mode button on the Cyborg RAT 5
      test: add two gesture tests for scrolling with a thumb in the btnarea
      test: fix call to test_2fg_scroll
      doc: add the tablet support page to the related pages hierarchy
      doc: be more specific about tablet vs tablet tool
      tablet: change error message to TABLET_TOOL from TABLET
      test: fix printfs to say "TABLET TOOL" instead of "TABLET"
      test: check for BTN_TOOL_QUADTAP in the 4fg btntool tests
      test: exclude semi-mt devices from the normal 2fg scroll test
      touchpad: drop motion hysteresis by default
      test: fix the udev rule for the synaptics hover device
      test: fix leaking libevdev fd
      touchpad: while a key is held down, don't disable dwt
      touchpad: if we have a serio keyboard, override any previous dwt pairing
      tools: fix output to say TABLET_TOOL instead of just tablet
      Indentation fixes
      touchpad: fix dwt disabling while a key is still down
      tablet: change tilt axes to use degrees
      udev: fix ALPS firmware detection
      touchpad: init a default hysteresis for ALPS rushmore touchpads
      tablet: delay initial proximity in event until we have a serial
      tablet: move clearing the tilt bits up to where we reset the axes
      test: add test for left-handed mouse rotation on tablets
      tablet: fix artpen rotation on left-handed tablets
      Indentation fix
      tablet: move left-handed initialization into tablet_init
      test: add a simple test to guard against wrong library version changes
      doc: update tablet svg to show tilt as angle
      test: add Wacom Cintiq 24HD Pen
      test: add tablet test for out-of-bounds motion coordinates
      configure.ac: libinput 1.2rc2
      touchpad: add synaptics semi-mt devices to those needing hysteresis
      touchpad: move the tapping exclusion zone to the top edge of the button
      tablet: use the tilt resolution if we have it
      configure.ac: libinput 1.2.0

Stephen Chandler Paul (49):
      Add bitfield helper functions from libdevdev-util.h and some tests
      evdev: Add basic support for tablet devices
      tools: handle TABLET_EVENT_AXIS in event-debug
      Add the libinput_tool object
      Emit LIBINPUT_TABLET_EVENT_TOOL_UPDATE events on tool changes
      tools: handle LIBINPUT_TABLET_EVENT_TOOL_UPDATE in event-debug
      Emit LIBINPUT_EVENT_TABLET_PROXIMITY_OUT when tool leaves proximity
      tools: Handle LIBINPUT_EVENT_TABLET_PROXIMITY_OUT in event-debug
      tablet: Handle button-events
      tools: handle tablet button events in event-debug
      tablet: Report and normalize distance, pressure, and tilt axes
      Sanitize distance and pressure axes before reporting their values
      tools: Handle pressure, tilt, and distance in event-debug
      test: Add litest_assert_double_*() macros
      test: Add proximity tests
      test: Add motion event test for tablets
      test: Add test for bad distance events
      test: Add tests for normalization
      tablet: remove parentheses around tablet_(un)set_status
      tablet: Clear pressure axis when tool loses contact with the tablet
      evdev: Continue updating axes internally when tool leaves proximity
      evdev: Add tablet_mark_all_axes_changed()
      evdev: Update all axes when the tool comes back into proximity
      test: Add tests for serial numbers on tools
      tablet: Fix warnings in test/tablet.c
      tablet: Stop redundant proximity-out events from being reported
      tablet: Remove tablet_notify_tool() and add tablet_get_tool()
      tablet: Replace tool-update with proximity-in
      tablet: Include tool with all events
      tablet: Include axes with all events
      tablet: Rename TILT_VERTICAL and TILT_HORIZONTAL to TILT_X and TILT_Y
      tablet: Don't swap X and Y in evcode_to_axis()
      tablet: fix get_x_transformed() and get_y_transformed()
      tablet: Add libinput_tool_get/set_user_data()
      tablet: Use separate tool objects for tools without serials
      tablet: Add libinput_tool_has_axis() and tests
      evdev.c: Return from evdev_configure_device() after configuring a device as a tablet
      tablet: Remove leftover-comment
      tablet: Set the tool as out of proximity by default when we initialize a tablet
      tablet: Add a left handed mode and tests
      tablet: Make note of filtering out events while the tool is out of proximity
      tablet: Merge PROXIMITY_IN and PROXIMITY_OUT into a single event
      event-debug: Increase spacing after the event-type
      tablet: Include starting values of axes in proximity events
      tablet: Update motion_event_state test to use litest_tablet_motion()
      tablet: Add tests for axes on proximity events
      tablet: mark all axes as unchanged before the proximity out event
      tablet: Add tests for axes on proximity events
      test: Add litest_assert_double_*() macros

Tomi Leppänen (1):
      Documentation fixes to arrows in svg files

git tag: 1.2.0

MD5:  2f6376a44be87fe691b2bf11e51d247a  libinput-1.2.0.tar.xz
SHA1: ff5f43367cc3e672865484a9d0a196df068733cc  libinput-1.2.0.tar.xz
SHA256: 1754b917fe675507ea80445b4f2e91d76cb6a6935508fe37234807affb316e2c  libinput-1.2.0.tar.xz
PGP:  http://www.freedesktop.org/software/libinput/libinput-1.2.0.tar.xz.sig

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160223/f7a359de/attachment-0001.sig>

More information about the wayland-devel mailing list