Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
---
 src/evdev-mt-touchpad.c            | 18 ++++++++++++------
 src/evdev.c                        |  8 ++++++++
 src/evdev.h                        |  1 +
 udev/90-libinput-model-quirks.hwdb |  4 ++++
 4 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index 73600ee5..5e4a6c0f 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -2701,6 +2701,12 @@ tp_is_tpkb_combo_below(struct evdev_device *device)
                layout == TPKBCOMBO_LAYOUT_BELOW;
 }
 
+static inline bool
+tp_is_tablet(struct evdev_device *device)
+{
+       return device->tags & EVDEV_TAG_TABLET_TOUCHPAD;
+}
+
 static void
 tp_init_dwt(struct tp_dispatch *tp,
            struct evdev_device *device)
@@ -2798,9 +2804,6 @@ tp_init_palmdetect_size(struct tp_dispatch *tp,
        const char *prop;
        int threshold;
 
-       if (!tp->touch_size.use_touch_size)
-               return;
-
        prop = udev_device_get_property_value(device->udev_device,
                                              
"LIBINPUT_ATTR_PALM_SIZE_THRESHOLD");
        if (!prop)
@@ -2847,17 +2850,20 @@ tp_init_palmdetect(struct tp_dispatch *tp,
        tp_init_palmdetect_arbitration(tp, device);
 
        if (device->tags & EVDEV_TAG_EXTERNAL_TOUCHPAD &&
-           !tp_is_tpkb_combo_below(device))
+           !tp_is_tpkb_combo_below(device) &&
+           !tp_is_tablet(device))
                return;
 
-       tp->palm.monitor_trackpoint = true;
+       if (!tp_is_tablet(device))
+               tp->palm.monitor_trackpoint = true;
 
        if (libevdev_has_event_code(device->evdev,
                                    EV_ABS,
                                    ABS_MT_TOOL_TYPE))
                tp->palm.use_mt_tool = true;
 
-       tp_init_palmdetect_edge(tp, device);
+       if (!tp_is_tablet(device))
+               tp_init_palmdetect_edge(tp, device);
        tp_init_palmdetect_pressure(tp, device);
        tp_init_palmdetect_size(tp, device);
 }
diff --git a/src/evdev.c b/src/evdev.c
index 257824aa..5c979ed1 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -441,6 +441,12 @@ evdev_tag_keyboard(struct evdev_device *device,
        device->tags |= EVDEV_TAG_KEYBOARD;
 }
 
+static void
+evdev_tag_tablet_touchpad(struct evdev_device *device)
+{
+       device->tags |= EVDEV_TAG_TABLET_TOUCHPAD;
+}
+
 static int
 evdev_calibration_has_matrix(struct libinput_device *libinput_device)
 {
@@ -1638,6 +1644,8 @@ evdev_configure_device(struct evdev_device *device)
        }
 
        if (udev_tags & EVDEV_UDEV_TAG_TOUCHPAD) {
+               if (udev_tags & EVDEV_UDEV_TAG_TABLET)
+                       evdev_tag_tablet_touchpad(device);
                dispatch = evdev_mt_touchpad_create(device);
                evdev_log_info(device, "device is a touchpad\n");
                return dispatch;
diff --git a/src/evdev.h b/src/evdev.h
index 162adecb..1e213296 100644
--- a/src/evdev.h
+++ b/src/evdev.h
@@ -72,6 +72,7 @@ enum evdev_device_tags {
        EVDEV_TAG_INTERNAL_KEYBOARD = (1 << 6),
        EVDEV_TAG_EXTERNAL_KEYBOARD = (1 << 7),
        EVDEV_TAG_TABLET_MODE_SWITCH = (1 << 8),
+       EVDEV_TAG_TABLET_TOUCHPAD = (1 << 9),
 };
 
 enum evdev_middlebutton_state {
diff --git a/udev/90-libinput-model-quirks.hwdb 
b/udev/90-libinput-model-quirks.hwdb
index e8e3f43c..b6d2361d 100644
--- a/udev/90-libinput-model-quirks.hwdb
+++ b/udev/90-libinput-model-quirks.hwdb
@@ -280,6 +280,10 @@ libinput:name:SynPS/2 Synaptics 
TouchPad:dmi:*svnSystem76*pvrkudp1*
 libinput:touchpad:input:b0003v056Ap*
  LIBINPUT_MODEL_WACOM_TOUCHPAD=1
 
+# Wacom Intuos Pro PTH-660
+libinput:touchpad:input:b0003v056Ap0357*
+ LIBINPUT_ATTR_PALM_SIZE_THRESHOLD=5
+
 ##########################################
 # Anything that has trackball in the name
 ##########################################
-- 
2.14.3

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to