MatchName=Synaptics TM3288-011
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkPadX1Carbon6th:*
AttrEventCodeDisable=ABS_MT_TOOL_TYPE
+ModelLenovoX1Gen6Touchpad=1
[Lenovo X41 Tablet]
MatchName=AT Translated Set 2 keyboard
* were measured from */
unsigned int reference_interval = ms2us(12);
+ /* On some touchpads the firmware does funky stuff and we cannot
+ * have our own jump detection, e.g. Lenovo Carbon X1 Gen 6 (see
+ * issue #506)
+ */
+ if (tp->jump.detection_disabled)
+ return false;
+
/* We haven't seen pointer jumps on Wacom tablets yet, so exclude
* those.
*/
tp_init_gesture(tp);
tp_init_thumb(tp);
+ /* Lenovo X1 Gen6 buffers the events in a weird way, making jump
+ * detection impossible. See
+ * https://gitlab.freedesktop.org/libinput/libinput/-/issues/506
+ */
+ if (evdev_device_has_model_quirk(device,
+ QUIRK_MODEL_LENOVO_X1GEN6_TOUCHPAD))
+ tp->jump.detection_disabled = true;
+
device->seat_caps |= EVDEV_DEVICE_POINTER;
if (tp->gesture.enabled)
device->seat_caps |= EVDEV_DEVICE_GESTURE;
unsigned int fake_touches;
struct {
+ bool detection_disabled;
struct ratelimit warning;
} jump;
case QUIRK_MODEL_LENOVO_T450_TOUCHPAD: return "ModelLenovoT450Touchpad";
case QUIRK_MODEL_LENOVO_T480S_TOUCHPAD: return "ModelLenovoT480sTouchpad";
case QUIRK_MODEL_LENOVO_T490S_TOUCHPAD: return "ModelLenovoT490sTouchpad";
+ case QUIRK_MODEL_LENOVO_X1GEN6_TOUCHPAD: return "ModelLenovoX1Gen6Touchpad";
case QUIRK_MODEL_LENOVO_X230: return "ModelLenovoX230";
case QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD: return "ModelSynapticsSerialTouchpad";
case QUIRK_MODEL_SYSTEM76_BONOBO: return "ModelSystem76Bonobo";
QUIRK_MODEL_LENOVO_T450_TOUCHPAD,
QUIRK_MODEL_LENOVO_T480S_TOUCHPAD,
QUIRK_MODEL_LENOVO_T490S_TOUCHPAD,
+ QUIRK_MODEL_LENOVO_X1GEN6_TOUCHPAD,
QUIRK_MODEL_LENOVO_X230,
QUIRK_MODEL_SYNAPTICS_SERIAL_TOUCHPAD,
QUIRK_MODEL_SYSTEM76_BONOBO,