When libinput detects a cursor jump it prints a bug warning to the log with
the text **"Touch jump detected and discarded."** and a link to this page.
+.. note:: This warning is ratelimited and will stop appearing after a few
+ times, even if the touchpad jumps continue.
+
In most cases, this is a bug in the kernel driver and to libinput it appears
that the touch point moves from its previous position. The pointer jump can
usually be seen in the :ref:`libinput record <libinput-record>` output for the device:
if (tp_detect_jumps(tp, t, time)) {
if (!tp->semi_mt)
- evdev_log_bug_kernel(tp->device,
- "Touch jump detected and discarded.\n"
- "See %stouchpad-jumping-cursors.html for details\n",
- HTTP_DOC_LINK);
+ evdev_log_bug_kernel_ratelimit(tp->device,
+ &tp->jump.warning,
+ "Touch jump detected and discarded.\n"
+ "See %stouchpad-jumping-cursors.html for details\n",
+ HTTP_DOC_LINK);
tp_motion_history_reset(t);
}
if (!use_touch_size)
tp_init_pressure(tp, device);
+ /* 5 warnings per 2 hours should be enough */
+ ratelimit_init(&tp->jump.warning, s2us(2 * 60 * 60), 5);
+
/* Set the dpi to that of the x axis, because that's what we normalize
to when needed*/
device->dpi = device->abs.absinfo_x->resolution * 25.4;
*/
unsigned int fake_touches;
+ struct {
+ struct ratelimit warning;
+ } jump;
+
/* if pressure goes above high -> touch down,
if pressure then goes below low -> touch up */
struct {