Compare commits

...

12 commits
main ... 1.3.1

Author SHA1 Message Date
Peter Hutterer
568be0867f configure.ac: libinput 1.3.1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-30 08:52:57 +10:00
Peter Hutterer
0d5d367a82 doc: add the missing svg files to the Makefile.am
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 8d80aae784)
2016-05-30 08:52:57 +10:00
Peter Hutterer
0694e46ccf doc: sort the svg files alphabetically
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 7f9c1f1c6c)
2016-05-30 08:52:57 +10:00
Peter Hutterer
97ff0002e9 pad: ignore EV_MSC events
The Wacom Express Key Remote sends the serial number via EV_MSC. At some later
point we'll need the serial to match the LEDs correctly but for now we can
ignore them.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0933650f66)
2016-05-30 08:31:59 +10:00
Peter Hutterer
23bacd16c3 doc: update ref/unref behavior for the tablet tool
Brings it in line with the rest of libinput.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 40e3fe2384)
2016-05-30 08:31:53 +10:00
Peter Hutterer
5acd9a373b doc: update doc to explicitly state that the seat isn't referenced
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit c2dfe504ed)
2016-05-30 08:31:52 +10:00
Peter Hutterer
e2c54e1db2 udev: mark ALPS touchpads fw version 300 as wobbly touchpads
Includes the Dell Lattitude E5420 but since all alps touchpads with the same
fw version are the same (as far as we know) hooking this off the firmware
version should cover this generation.

https://bugzilla.redhat.com/show_bug.cgi?id=1336084

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit cebbe0c2da)
2016-05-30 08:31:43 +10:00
Peter Hutterer
dca3360866 udev: add the Yoga 2 to the wobbly touchpads
https://bugs.freedesktop.org/show_bug.cgi?id=95290

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 595b5f6ae7)
2016-05-30 08:31:42 +10:00
Peter Hutterer
c69a5bb785 doc: fix a few typos
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 5f4f211d6d)
2016-05-30 08:31:37 +10:00
Peter Hutterer
58f6eed9db touchpad: only use negative pressure change check on Lenovo *50 and *60 series
This was introduced for bug 94379 - an X1 Carbon 3rd. Other touchpads have
different pressure change ranges, causing this condition to trigger
randomly and resulting in a jerky pointer motion.

For now, reduce the check to the *50 and *60 series touchpads until we have
data for more touchpads that we can add one-by-one.

https://bugs.freedesktop.org/show_bug.cgi?id=95393

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 2f5231cc88)
2016-05-30 08:31:24 +10:00
Peter Hutterer
544d4b6b74 evdev: the range between dpad and trigger-happy are keys, not buttons
Affected keys:
	KEY_ALS_TOGGLE
	KEY_BUTTONCONFIG
	KEY_TASKMANAGER
	KEY_JOURNAL
	KEY_CONTROLPANEL
	KEY_APPSELECT
	KEY_SCREENSAVER
	KEY_VOICECOMMAND
	KEY_BRIGHTNESS_MIN
	KEY_BRIGHTNESS_MAX
	KEY_KBDINPUTASSIST_PREV
	KEY_KBDINPUTASSIST_NEXT
	KEY_KBDINPUTASSIST_PREVGROUP
	KEY_KBDINPUTASSIST_NEXTGROUP
	KEY_KBDINPUTASSIST_ACCEPT
	KEY_KBDINPUTASSIST_CANCEL

https://bugs.freedesktop.org/show_bug.cgi?id=95295

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 8527242ed9)
2016-05-30 08:31:16 +10:00
Peter Hutterer
31ffda96fa gestures: don't send swipe gestures when gestures are disabled
Introduced in 6ad303b as part of an code flow optimization, causing any 3+
finger gesture to be posted as swipe gesture, even when gestures are disabled.
However, the event is filtered in the higher levels with a bug message printed
to the log.

Don't post swipe gestures for devices where gestures are disabled.

https://bugs.freedesktop.org/show_bug.cgi?id=95314

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 98ee1791ca)
2016-05-30 08:31:06 +10:00
9 changed files with 86 additions and 13 deletions

View file

@ -2,7 +2,7 @@ AC_PREREQ([2.64])
m4_define([libinput_major_version], [1])
m4_define([libinput_minor_version], [3])
m4_define([libinput_micro_version], [0])
m4_define([libinput_micro_version], [1])
m4_define([libinput_version],
[libinput_major_version.libinput_minor_version.libinput_micro_version])
@ -35,7 +35,7 @@ AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
# b) If interfaces have been changed or added, but binary compatibility has
# been preserved, change to C+1:0:A+1
# c) If the interface is the same as the previous version, change to C:R+1:A
LIBINPUT_LT_VERSION=18:3:8
LIBINPUT_LT_VERSION=18:4:8
AC_SUBST(LIBINPUT_LT_VERSION)
AM_SILENT_RULES([yes])

View file

@ -37,17 +37,25 @@ diagram_files = \
$(srcdir)/dot/libinput-stack-xorg.gv \
$(srcdir)/dot/libinput-stack-gnome.gv \
$(srcdir)/dot/evemu.gv \
$(srcdir)/svg/software-buttons.svg \
$(srcdir)/svg/clickfinger.svg \
$(srcdir)/svg/button-scrolling.svg \
$(srcdir)/svg/clickfinger.svg \
$(srcdir)/svg/clickfinger-distance.svg \
$(srcdir)/svg/edge-scrolling.svg \
$(srcdir)/svg/gesture-2fg-ambiguity.svg \
$(srcdir)/svg/palm-detection.svg \
$(srcdir)/svg/pinch-gestures.svg \
$(srcdir)/svg/pinch-gestures-softbuttons.svg \
$(srcdir)/svg/ptraccel-linear.svg \
$(srcdir)/svg/ptraccel-low-dpi.svg \
$(srcdir)/svg/ptraccel-touchpad.svg \
$(srcdir)/svg/ptraccel-trackpoint.svg \
$(srcdir)/svg/software-buttons.svg \
$(srcdir)/svg/swipe-gestures.svg \
$(srcdir)/svg/tablet-axes.svg \
$(srcdir)/svg/tablet-interfaces.svg \
$(srcdir)/svg/tablet-left-handed.svg \
$(srcdir)/svg/tablet-out-of-bounds.svg \
$(srcdir)/svg/tablet.svg \
$(srcdir)/svg/tap-n-drag.svg \
$(srcdir)/svg/thumb-detection.svg \
$(srcdir)/svg/top-software-buttons.svg \

View file

@ -248,7 +248,7 @@ tp_gesture_handle_state_none(struct tp_dispatch *tp, uint64_t time)
if (ntouches == 2)
return GESTURE_STATE_SCROLL;
else
return GESTURE_STATE_SWIPE;
return GESTURE_STATE_NONE;
}
first = touches[0];

View file

@ -928,6 +928,7 @@ tp_detect_jumps(const struct tp_dispatch *tp, struct tp_touch *t)
static void
tp_process_state(struct tp_dispatch *tp, uint64_t time)
{
struct evdev_device *device = tp->device;
struct tp_touch *t;
unsigned int i;
bool restart_filter = false;
@ -953,7 +954,8 @@ tp_process_state(struct tp_dispatch *tp, uint64_t time)
if (!t->dirty)
continue;
if (t->pressure_delta < -7)
if ((device->model_flags & EVDEV_MODEL_LENOVO_T450_TOUCHPAD) &&
t->pressure_delta < -7)
tp_motion_history_reset(t);
if (tp_detect_jumps(tp, t)) {

View file

@ -403,6 +403,10 @@ pad_process(struct evdev_dispatch *dispatch,
case EV_SYN:
pad_flush(pad, device, time);
break;
case EV_MSC:
/* The EKR sends the serial as MSC_SERIAL, ignore this for
* now */
break;
default:
log_error(device->base.seat->libinput,
"Unexpected event type %s (%#x)\n",

View file

@ -568,7 +568,11 @@ get_key_type(uint16_t code)
return EVDEV_KEY_TYPE_BUTTON;
if (code >= KEY_OK && code <= KEY_LIGHTS_TOGGLE)
return EVDEV_KEY_TYPE_KEY;
if (code >= BTN_DPAD_UP && code <= BTN_TRIGGER_HAPPY40)
if (code >= BTN_DPAD_UP && code <= BTN_DPAD_RIGHT)
return EVDEV_KEY_TYPE_BUTTON;
if (code >= KEY_ALS_TOGGLE && code <= KEY_KBDINPUTASSIST_CANCEL)
return EVDEV_KEY_TYPE_KEY;
if (code >= BTN_TRIGGER_HAPPY && code <= BTN_TRIGGER_HAPPY40)
return EVDEV_KEY_TYPE_BUTTON;
return EVDEV_KEY_TYPE_NONE;
}

View file

@ -1889,10 +1889,13 @@ libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool *
*
* Returns the tool that was in use during this event.
*
* If the caller holds at least one reference (see
* libinput_tablet_tool_ref()), this struct is used whenever the
* tools enters proximity. Otherwise, if no references remain when the tool
* leaves proximity, the tool may be destroyed.
* The returned tablet tool is not refcounted and may become invalid after
* the next call to libinput. Use libinput_tablet_tool_ref() and
* libinput_tablet_tool_unref() to continue using the handle outside of the
* immediate scope.
*
* If the caller holds at least one reference, this struct is used
* whenever the tools enters proximity again.
*
* @note Physical tool tracking requires hardware support. If unavailable,
* libinput creates one tool per type per tablet. See @ref
@ -1999,7 +2002,7 @@ libinput_event_tablet_tool_get_time_usec(struct libinput_event_tablet_tool *even
/**
* @ingroup event_tablet
*
* Return the type of tool type for a tool object, see @ref
* Return the tool type for a tool object, see @ref
* tablet-tool-types for details.
*
* @param tool The libinput tool
@ -2047,7 +2050,8 @@ libinput_tablet_tool_ref(struct libinput_tablet_tool *tool);
* @ingroup event_tablet
*
* Decrement the reference count of the tool by one. When the reference
* count of tool reaches 0, the memory allocated for tool will be freed.
* count of the tool reaches 0, the memory allocated for the tool will be
* freed.
*
* @param tool The tool to decrement the ref count of
* @return NULL if the tool was destroyed otherwise the passed tool
@ -3065,6 +3069,11 @@ libinput_device_get_output_name(struct libinput_device *device);
* seat name pair at any given time, but if no external reference is kept, it
* may be destroyed if no device belonging to it is left.
*
* The returned seat is not refcounted and may become invalid after
* the next call to libinput. Use libinput_seat_ref() and
* libinput_seat_unref() to continue using the handle outside of the
* immediate scope.
*
* @param device A previously obtained device
* @return The seat this input device belongs to
*/

View file

@ -342,6 +342,42 @@ START_TEST(keyboard_time_usec)
}
END_TEST
START_TEST(keyboard_no_buttons)
{
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
struct libinput_event *event;
int code;
const char *name;
litest_drain_events(dev->libinput);
for (code = 0; code < KEY_MAX; code++) {
if (!libevdev_has_event_code(dev->evdev, EV_KEY, code))
continue;
name = libevdev_event_code_get_name(EV_KEY, code);
if (!name || !strneq(name, "KEY_", 4))
continue;
litest_keyboard_key(dev, code, true);
litest_keyboard_key(dev, code, false);
libinput_dispatch(li);
event = libinput_get_event(li);
litest_is_keyboard_event(event,
code,
LIBINPUT_KEY_STATE_PRESSED);
libinput_event_destroy(event);
event = libinput_get_event(li);
litest_is_keyboard_event(event,
code,
LIBINPUT_KEY_STATE_RELEASED);
libinput_event_destroy(event);
}
}
END_TEST
void
litest_setup_tests(void)
{
@ -351,4 +387,6 @@ litest_setup_tests(void)
litest_add("keyboard:keys", keyboard_has_key, LITEST_KEYS, LITEST_ANY);
litest_add("keyboard:keys", keyboard_keys_bad_device, LITEST_ANY, LITEST_ANY);
litest_add("keyboard:time", keyboard_time_usec, LITEST_KEYS, LITEST_ANY);
litest_add("keyboard:events", keyboard_no_buttons, LITEST_KEYS, LITEST_ANY);
}

View file

@ -26,6 +26,10 @@ libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:800
libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:800
LIBINPUT_ATTR_SIZE_HINT=100x55
libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:300
libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:300
LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1
libinput:name:*AlpsPS/2 ALPS DualPoint TouchPad:fwversion:310
libinput:name:*AlpsPS/2 ALPS GlidePoint:fwversion:310
LIBINPUT_MODEL_ALPS_RUSHMORE=1
@ -115,6 +119,10 @@ libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPad??60*:
libinput:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO:*:pvrThinkPadX1Carbon3rd:*
LIBINPUT_MODEL_LENOVO_T450_TOUCHPAD=1
# Lenovo Yoga 2013
libinput:name:*SynPS/2 Synaptics TouchPad*:dmi:*svnLENOVO*pvrLenovoYoga213:*
LIBINPUT_MODEL_WOBBLY_TOUCHPAD=1
##########################################
# Synaptics
##########################################