Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libinput for openSUSE:Factory 
checked in at 2025-12-09 12:45:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libinput (Old)
 and      /work/SRC/openSUSE:Factory/.libinput.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libinput"

Tue Dec  9 12:45:43 2025 rev:128 rq:1321537 version:1.30.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/libinput/libinput.changes        2025-11-27 
15:18:54.054248927 +0100
+++ /work/SRC/openSUSE:Factory/.libinput.new.1939/libinput.changes      
2025-12-09 12:46:20.941787735 +0100
@@ -1,0 +2,9 @@
+Mon Dec  8 10:09:17 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Update to release 1.30.1
+ * Fixed a regression in the tablet handling code for some tablets
+   that send input events while being logically out of proximity.
+ * Support for the INPUT_PROP_PRESSUREPAD property available in
+   Linux kernel 6.18.
+
+-------------------------------------------------------------------

Old:
----
  libinput-1.30.0.tar.gz

New:
----
  libinput-1.30.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libinput.spec ++++++
--- /var/tmp/diff_new_pack.c84Aax/_old  2025-12-09 12:46:30.750202275 +0100
+++ /var/tmp/diff_new_pack.c84Aax/_new  2025-12-09 12:46:30.754202444 +0100
@@ -37,7 +37,7 @@
 %define lname  libinput10
 %define pname  libinput
 Name:           libinput%{?xsuffix}
-Version:        1.30.0
+Version:        1.30.1
 Release:        0
 Summary:        Input device and event processing library
 License:        MIT

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.c84Aax/_old  2025-12-09 12:46:30.810204811 +0100
+++ /var/tmp/diff_new_pack.c84Aax/_new  2025-12-09 12:46:30.814204980 +0100
@@ -1,5 +1,5 @@
-mtime: 1764049279
-commit: dd742e196bb44b6ee8e2ed47df56225668022d4f6855ef83d966b75aa2bfff35
+mtime: 1765188604
+commit: 27d121ec3f84ef42920eb355221d5c233f58ddd1b4cc28ca68e7ad361cba1fd1
 url: https://src.opensuse.org/jengelh/libinput
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2025-12-08 11:10:44.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ libinput-1.30.0.tar.gz -> libinput-1.30.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libinput-1.30.0/include/linux/freebsd/input-event-codes.h 
new/libinput-1.30.1/include/linux/freebsd/input-event-codes.h
--- old/libinput-1.30.0/include/linux/freebsd/input-event-codes.h       
2025-11-25 04:40:43.000000000 +0100
+++ new/libinput-1.30.1/include/linux/freebsd/input-event-codes.h       
2025-12-08 03:40:00.000000000 +0100
@@ -27,6 +27,7 @@
 #define INPUT_PROP_TOPBUTTONPAD                0x04    /* softbuttons at top 
of pad */
 #define INPUT_PROP_POINTING_STICK      0x05    /* is a pointing stick */
 #define INPUT_PROP_ACCELEROMETER       0x06    /* has accelerometer */
+#define INPUT_PROP_PRESSUREPAD         0x07    /* pressure triggers clicks */
 
 #define INPUT_PROP_MAX                 0x1f
 #define INPUT_PROP_CNT                 (INPUT_PROP_MAX + 1)
@@ -278,7 +279,8 @@
 #define KEY_PAUSECD            201
 #define KEY_PROG3              202
 #define KEY_PROG4              203
-#define KEY_DASHBOARD          204     /* AL Dashboard */
+#define KEY_ALL_APPLICATIONS   204     /* AC Desktop Show All Applications */
+#define KEY_DASHBOARD          KEY_ALL_APPLICATIONS
 #define KEY_SUSPEND            205
 #define KEY_CLOSE              206     /* AC Close */
 #define KEY_PLAY               207
@@ -515,6 +517,10 @@
 #define KEY_10CHANNELSUP       0x1b8   /* 10 channels up (10+) */
 #define KEY_10CHANNELSDOWN     0x1b9   /* 10 channels down (10-) */
 #define KEY_IMAGES             0x1ba   /* AL Image Browser */
+#define KEY_NOTIFICATION_CENTER        0x1bc   /* Show/hide the notification 
center */
+#define KEY_PICKUP_PHONE       0x1bd   /* Answer incoming call */
+#define KEY_HANGUP_PHONE       0x1be   /* Decline incoming call */
+#define KEY_LINK_PHONE         0x1bf   /* AL Phone Syncing */
 
 #define KEY_DEL_EOL            0x1c0
 #define KEY_DEL_EOS            0x1c1
@@ -542,6 +548,7 @@
 #define KEY_FN_F               0x1e2
 #define KEY_FN_S               0x1e3
 #define KEY_FN_B               0x1e4
+#define KEY_FN_RIGHT_SHIFT     0x1e5
 
 #define KEY_BRL_DOT1           0x1f1
 #define KEY_BRL_DOT2           0x1f2
@@ -595,8 +602,14 @@
 #define BTN_DPAD_LEFT          0x222
 #define BTN_DPAD_RIGHT         0x223
 
+#define BTN_GRIPL              0x224
+#define BTN_GRIPR              0x225
+#define BTN_GRIPL2             0x226
+#define BTN_GRIPR2             0x227
+
 #define KEY_ALS_TOGGLE         0x230   /* Ambient light sensor */
 #define KEY_ROTATE_LOCK_TOGGLE 0x231   /* Display rotation lock */
+#define KEY_REFRESH_RATE_TOGGLE        0x232   /* Display refresh rate toggle 
*/
 
 #define KEY_BUTTONCONFIG               0x240   /* AL Button Configuration */
 #define KEY_TASKMANAGER                0x241   /* AL Task/Project Manager */
@@ -607,10 +620,29 @@
 #define KEY_VOICECOMMAND               0x246   /* Listening Voice Command */
 #define KEY_ASSISTANT          0x247   /* AL Context-aware desktop assistant */
 #define KEY_KBD_LAYOUT_NEXT    0x248   /* AC Next Keyboard Layout Select */
+#define KEY_EMOJI_PICKER       0x249   /* Show/hide emoji picker (HUTRR101) */
+#define KEY_DICTATE            0x24a   /* Start or Stop Voice Dictation 
Session (HUTRR99) */
+#define KEY_CAMERA_ACCESS_ENABLE       0x24b   /* Enables programmatic access 
to camera devices. (HUTRR72) */
+#define KEY_CAMERA_ACCESS_DISABLE      0x24c   /* Disables programmatic access 
to camera devices. (HUTRR72) */
+#define KEY_CAMERA_ACCESS_TOGGLE       0x24d   /* Toggles the current state of 
the camera access control. (HUTRR72) */
+#define KEY_ACCESSIBILITY              0x24e   /* Toggles the system bound 
accessibility UI/command (HUTRR116) */
+#define KEY_DO_NOT_DISTURB             0x24f   /* Toggles the system-wide "Do 
Not Disturb" control (HUTRR94)*/
 
 #define KEY_BRIGHTNESS_MIN             0x250   /* Set Brightness to Minimum */
 #define KEY_BRIGHTNESS_MAX             0x251   /* Set Brightness to Maximum */
 
+/*
+ * Keycodes for hotkeys toggling the electronic privacy screen found on some
+ * laptops on/off. Note when the embedded-controller turns on/off the eprivacy
+ * screen itself then the state should be reported through drm connecter props:
+ * 
https://www.kernel.org/doc/html/latest/gpu/drm-kms.html#standard-connector-properties
+ * Except when implementing the drm connecter properties API is not possible
+ * because e.g. the firmware does not allow querying the presence and/or status
+ * of the eprivacy screen at boot.
+ */
+#define KEY_EPRIVACY_SCREEN_ON         0x252
+#define KEY_EPRIVACY_SCREEN_OFF                0x253
+
 #define KEY_KBDINPUTASSIST_PREV                0x260
 #define KEY_KBDINPUTASSIST_NEXT                0x261
 #define KEY_KBDINPUTASSIST_PREVGROUP           0x262
@@ -655,6 +687,27 @@
 /* Select an area of screen to be copied */
 #define KEY_SELECTIVE_SCREENSHOT       0x27a
 
+/* Move the focus to the next or previous user controllable element within a 
UI container */
+#define KEY_NEXT_ELEMENT               0x27b
+#define KEY_PREVIOUS_ELEMENT           0x27c
+
+/* Toggle Autopilot engagement */
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE    0x27d
+
+/* Shortcut Keys */
+#define KEY_MARK_WAYPOINT              0x27e
+#define KEY_SOS                                0x27f
+#define KEY_NAV_CHART                  0x280
+#define KEY_FISHING_CHART              0x281
+#define KEY_SINGLE_RANGE_RADAR         0x282
+#define KEY_DUAL_RANGE_RADAR           0x283
+#define KEY_RADAR_OVERLAY              0x284
+#define KEY_TRADITIONAL_SONAR          0x285
+#define KEY_CLEARVU_SONAR              0x286
+#define KEY_SIDEVU_SONAR               0x287
+#define KEY_NAV_INFO                   0x288
+#define KEY_BRIGHTNESS_MENU            0x289
+
 /*
  * Some keyboards have keys which do not have a defined meaning, these keys
  * are intended to be programmed / bound to macros by the user. For most
@@ -730,6 +783,9 @@
 #define KEY_KBD_LCD_MENU4              0x2bb
 #define KEY_KBD_LCD_MENU5              0x2bc
 
+/* Performance Boost key (Alienware)/G-Mode key (Dell) */
+#define KEY_PERFORMANCE                        0x2bd
+
 #define BTN_TRIGGER_HAPPY              0x2c0
 #define BTN_TRIGGER_HAPPY1             0x2c0
 #define BTN_TRIGGER_HAPPY2             0x2c1
@@ -834,6 +890,7 @@
 #define ABS_TOOL_WIDTH         0x1c
 
 #define ABS_VOLUME             0x20
+#define ABS_PROFILE            0x21
 
 #define ABS_MISC               0x28
 
@@ -889,7 +946,8 @@
 #define SW_MUTE_DEVICE         0x0e  /* set = device disabled */
 #define SW_PEN_INSERTED                0x0f  /* set = pen inserted */
 #define SW_MACHINE_COVER       0x10  /* set = cover closed */
-#define SW_MAX                 0x10
+#define SW_USB_INSERT          0x11  /* set = USB audio device connected */
+#define SW_MAX                 0x11
 #define SW_CNT                 (SW_MAX+1)
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libinput-1.30.0/include/linux/linux/input-event-codes.h 
new/libinput-1.30.1/include/linux/linux/input-event-codes.h
--- old/libinput-1.30.0/include/linux/linux/input-event-codes.h 2025-11-25 
04:40:43.000000000 +0100
+++ new/libinput-1.30.1/include/linux/linux/input-event-codes.h 2025-12-08 
03:40:00.000000000 +0100
@@ -27,6 +27,7 @@
 #define INPUT_PROP_TOPBUTTONPAD                0x04    /* softbuttons at top 
of pad */
 #define INPUT_PROP_POINTING_STICK      0x05    /* is a pointing stick */
 #define INPUT_PROP_ACCELEROMETER       0x06    /* has accelerometer */
+#define INPUT_PROP_PRESSUREPAD         0x07    /* pressure triggers clicks */
 
 #define INPUT_PROP_MAX                 0x1f
 #define INPUT_PROP_CNT                 (INPUT_PROP_MAX + 1)
@@ -278,7 +279,8 @@
 #define KEY_PAUSECD            201
 #define KEY_PROG3              202
 #define KEY_PROG4              203
-#define KEY_DASHBOARD          204     /* AL Dashboard */
+#define KEY_ALL_APPLICATIONS   204     /* AC Desktop Show All Applications */
+#define KEY_DASHBOARD          KEY_ALL_APPLICATIONS
 #define KEY_SUSPEND            205
 #define KEY_CLOSE              206     /* AC Close */
 #define KEY_PLAY               207
@@ -515,6 +517,10 @@
 #define KEY_10CHANNELSUP       0x1b8   /* 10 channels up (10+) */
 #define KEY_10CHANNELSDOWN     0x1b9   /* 10 channels down (10-) */
 #define KEY_IMAGES             0x1ba   /* AL Image Browser */
+#define KEY_NOTIFICATION_CENTER        0x1bc   /* Show/hide the notification 
center */
+#define KEY_PICKUP_PHONE       0x1bd   /* Answer incoming call */
+#define KEY_HANGUP_PHONE       0x1be   /* Decline incoming call */
+#define KEY_LINK_PHONE         0x1bf   /* AL Phone Syncing */
 
 #define KEY_DEL_EOL            0x1c0
 #define KEY_DEL_EOS            0x1c1
@@ -542,6 +548,7 @@
 #define KEY_FN_F               0x1e2
 #define KEY_FN_S               0x1e3
 #define KEY_FN_B               0x1e4
+#define KEY_FN_RIGHT_SHIFT     0x1e5
 
 #define KEY_BRL_DOT1           0x1f1
 #define KEY_BRL_DOT2           0x1f2
@@ -595,8 +602,14 @@
 #define BTN_DPAD_LEFT          0x222
 #define BTN_DPAD_RIGHT         0x223
 
+#define BTN_GRIPL              0x224
+#define BTN_GRIPR              0x225
+#define BTN_GRIPL2             0x226
+#define BTN_GRIPR2             0x227
+
 #define KEY_ALS_TOGGLE         0x230   /* Ambient light sensor */
 #define KEY_ROTATE_LOCK_TOGGLE 0x231   /* Display rotation lock */
+#define KEY_REFRESH_RATE_TOGGLE        0x232   /* Display refresh rate toggle 
*/
 
 #define KEY_BUTTONCONFIG               0x240   /* AL Button Configuration */
 #define KEY_TASKMANAGER                0x241   /* AL Task/Project Manager */
@@ -607,10 +620,29 @@
 #define KEY_VOICECOMMAND               0x246   /* Listening Voice Command */
 #define KEY_ASSISTANT          0x247   /* AL Context-aware desktop assistant */
 #define KEY_KBD_LAYOUT_NEXT    0x248   /* AC Next Keyboard Layout Select */
+#define KEY_EMOJI_PICKER       0x249   /* Show/hide emoji picker (HUTRR101) */
+#define KEY_DICTATE            0x24a   /* Start or Stop Voice Dictation 
Session (HUTRR99) */
+#define KEY_CAMERA_ACCESS_ENABLE       0x24b   /* Enables programmatic access 
to camera devices. (HUTRR72) */
+#define KEY_CAMERA_ACCESS_DISABLE      0x24c   /* Disables programmatic access 
to camera devices. (HUTRR72) */
+#define KEY_CAMERA_ACCESS_TOGGLE       0x24d   /* Toggles the current state of 
the camera access control. (HUTRR72) */
+#define KEY_ACCESSIBILITY              0x24e   /* Toggles the system bound 
accessibility UI/command (HUTRR116) */
+#define KEY_DO_NOT_DISTURB             0x24f   /* Toggles the system-wide "Do 
Not Disturb" control (HUTRR94)*/
 
 #define KEY_BRIGHTNESS_MIN             0x250   /* Set Brightness to Minimum */
 #define KEY_BRIGHTNESS_MAX             0x251   /* Set Brightness to Maximum */
 
+/*
+ * Keycodes for hotkeys toggling the electronic privacy screen found on some
+ * laptops on/off. Note when the embedded-controller turns on/off the eprivacy
+ * screen itself then the state should be reported through drm connecter props:
+ * 
https://www.kernel.org/doc/html/latest/gpu/drm-kms.html#standard-connector-properties
+ * Except when implementing the drm connecter properties API is not possible
+ * because e.g. the firmware does not allow querying the presence and/or status
+ * of the eprivacy screen at boot.
+ */
+#define KEY_EPRIVACY_SCREEN_ON         0x252
+#define KEY_EPRIVACY_SCREEN_OFF                0x253
+
 #define KEY_KBDINPUTASSIST_PREV                0x260
 #define KEY_KBDINPUTASSIST_NEXT                0x261
 #define KEY_KBDINPUTASSIST_PREVGROUP           0x262
@@ -655,6 +687,27 @@
 /* Select an area of screen to be copied */
 #define KEY_SELECTIVE_SCREENSHOT       0x27a
 
+/* Move the focus to the next or previous user controllable element within a 
UI container */
+#define KEY_NEXT_ELEMENT               0x27b
+#define KEY_PREVIOUS_ELEMENT           0x27c
+
+/* Toggle Autopilot engagement */
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE    0x27d
+
+/* Shortcut Keys */
+#define KEY_MARK_WAYPOINT              0x27e
+#define KEY_SOS                                0x27f
+#define KEY_NAV_CHART                  0x280
+#define KEY_FISHING_CHART              0x281
+#define KEY_SINGLE_RANGE_RADAR         0x282
+#define KEY_DUAL_RANGE_RADAR           0x283
+#define KEY_RADAR_OVERLAY              0x284
+#define KEY_TRADITIONAL_SONAR          0x285
+#define KEY_CLEARVU_SONAR              0x286
+#define KEY_SIDEVU_SONAR               0x287
+#define KEY_NAV_INFO                   0x288
+#define KEY_BRIGHTNESS_MENU            0x289
+
 /*
  * Some keyboards have keys which do not have a defined meaning, these keys
  * are intended to be programmed / bound to macros by the user. For most
@@ -730,6 +783,9 @@
 #define KEY_KBD_LCD_MENU4              0x2bb
 #define KEY_KBD_LCD_MENU5              0x2bc
 
+/* Performance Boost key (Alienware)/G-Mode key (Dell) */
+#define KEY_PERFORMANCE                        0x2bd
+
 #define BTN_TRIGGER_HAPPY              0x2c0
 #define BTN_TRIGGER_HAPPY1             0x2c0
 #define BTN_TRIGGER_HAPPY2             0x2c1
@@ -834,6 +890,7 @@
 #define ABS_TOOL_WIDTH         0x1c
 
 #define ABS_VOLUME             0x20
+#define ABS_PROFILE            0x21
 
 #define ABS_MISC               0x28
 
@@ -889,7 +946,8 @@
 #define SW_MUTE_DEVICE         0x0e  /* set = device disabled */
 #define SW_PEN_INSERTED                0x0f  /* set = pen inserted */
 #define SW_MACHINE_COVER       0x10  /* set = cover closed */
-#define SW_MAX                 0x10
+#define SW_USB_INSERT          0x11  /* set = USB audio device connected */
+#define SW_MAX                 0x11
 #define SW_CNT                 (SW_MAX+1)
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/meson.build 
new/libinput-1.30.1/meson.build
--- old/libinput-1.30.0/meson.build     2025-11-25 04:40:43.000000000 +0100
+++ new/libinput-1.30.1/meson.build     2025-12-08 03:40:00.000000000 +0100
@@ -1,5 +1,5 @@
 project('libinput', 'c',
-       version : '1.30.0',
+       version : '1.30.1',
        license : 'MIT/Expat',
        default_options : [ 'c_std=gnu99', 'warning_level=2' ],
        meson_version : '>= 0.64.0')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/src/evdev-mt-touchpad.c 
new/libinput-1.30.1/src/evdev-mt-touchpad.c
--- old/libinput-1.30.0/src/evdev-mt-touchpad.c 2025-11-25 04:40:43.000000000 
+0100
+++ new/libinput-1.30.1/src/evdev-mt-touchpad.c 2025-12-08 03:40:00.000000000 
+0100
@@ -3622,7 +3622,8 @@
         *
         * See also #562
         */
-       if (libevdev_get_abs_resolution(device->evdev, ABS_MT_PRESSURE) != 0 ||
+       if (libevdev_has_property(device->evdev, INPUT_PROP_PRESSUREPAD) ||
+           libevdev_get_abs_resolution(device->evdev, ABS_MT_PRESSURE) != 0 ||
            evdev_device_has_model_quirk(device, QUIRK_MODEL_PRESSURE_PAD)) {
                libevdev_disable_event_code(device->evdev, EV_ABS, 
ABS_MT_PRESSURE);
                libevdev_disable_event_code(device->evdev, EV_ABS, 
ABS_PRESSURE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/src/evdev-tablet.c 
new/libinput-1.30.1/src/evdev-tablet.c
--- old/libinput-1.30.0/src/evdev-tablet.c      2025-11-25 04:40:43.000000000 
+0100
+++ new/libinput-1.30.1/src/evdev-tablet.c      2025-12-08 03:40:00.000000000 
+0100
@@ -1272,10 +1272,13 @@
 eraser_button_toggle(struct libinput_tablet_tool *tool)
 {
        struct libinput_device *libinput_device = tool->last_device;
-       struct evdev_device *device = evdev_device(libinput_device);
-       struct tablet_dispatch *tablet = tablet_dispatch(device->dispatch);
 
-       tablet_tool_apply_eraser_button(tablet, tool);
+       if (libinput_device) {
+               struct evdev_device *device = evdev_device(libinput_device);
+               struct tablet_dispatch *tablet = 
tablet_dispatch(device->dispatch);
+
+               tablet_tool_apply_eraser_button(tablet, tool);
+       }
 }
 
 static enum libinput_config_status
@@ -1296,7 +1299,7 @@
 static enum libinput_config_eraser_button_mode
 eraser_button_get_mode(struct libinput_tablet_tool *tool)
 {
-       return tool->eraser_button.mode;
+       return tool->eraser_button.want_mode;
 }
 
 static enum libinput_config_eraser_button_mode
@@ -1330,7 +1333,7 @@
 static unsigned int
 eraser_button_get_button(struct libinput_tablet_tool *tool)
 {
-       return tool->eraser_button.button;
+       return tool->eraser_button.want_button;
 }
 
 static unsigned int
@@ -2448,6 +2451,8 @@
        struct libinput *li = tablet_libinput_context(tablet);
 
        list_for_each_safe(tool, &tablet->tool_list, link) {
+               list_remove(&tool->link);
+               list_init(&tool->link); /* unref may list_remove() too */
                libinput_tablet_tool_unref(tool);
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libinput-1.30.0/src/libinput-plugin-tablet-forced-tool.c 
new/libinput-1.30.1/src/libinput-plugin-tablet-forced-tool.c
--- old/libinput-1.30.0/src/libinput-plugin-tablet-forced-tool.c        
2025-11-25 04:40:43.000000000 +0100
+++ new/libinput-1.30.1/src/libinput-plugin-tablet-forced-tool.c        
2025-12-08 03:40:00.000000000 +0100
@@ -54,6 +54,7 @@
        struct libinput_device *device;
        bitmask_t tool_state;
        bool pen_forced_into_proximity;
+       size_t pen_prox_out_events;
 };
 
 struct plugin_data {
@@ -121,6 +122,23 @@
                        } else {
                                bitmask_clear_bit(&device->tool_state, 
BTN_TOOL_PEN);
                                device->pen_forced_into_proximity = false;
+
+                               /* If we get three valid pen proximity out 
events, let's
+                                * assume this device works fine and disable 
our plugin
+                                */
+                               if (++device->pen_prox_out_events > 2) {
+                                       plugin_log_debug(
+                                               libinput_plugin,
+                                               "%s: forced tool handling 
unloaded\n",
+                                               libinput_device_get_name(
+                                                       device->device));
+                                       
libinput_plugin_enable_device_event_frame(
+                                               libinput_plugin,
+                                               device->device,
+                                               false);
+                                       plugin_device_destroy(device);
+                                       return;
+                               }
                        }
                        return; /* Nothing to do */
                case EVDEV_BTN_TOOL_RUBBER:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/src/libinput.h 
new/libinput-1.30.1/src/libinput.h
--- old/libinput-1.30.0/src/libinput.h  2025-11-25 04:40:43.000000000 +0100
+++ new/libinput-1.30.1/src/libinput.h  2025-12-08 03:40:00.000000000 +0100
@@ -6700,7 +6700,7 @@
 /**
  * @ingroup config
  *
- * Check if the disable-while typing feature is currently enabled on this
+ * Check if the disable-while-typing feature is currently enabled on this
  * device. If the device does not support disable-while-typing, this
  * function returns @ref LIBINPUT_CONFIG_DWT_DISABLED.
  *
@@ -6718,7 +6718,7 @@
 /**
  * @ingroup config
  *
- * Check if the disable-while typing feature is enabled on this device by
+ * Check if the disable-while-typing feature is enabled on this device by
  * default. If the device does not support disable-while-typing, this
  * function returns @ref LIBINPUT_CONFIG_DWT_DISABLED.
  *
@@ -6796,7 +6796,7 @@
 /**
  * @ingroup config
  *
- * Check if the disable-while trackpointing feature is currently enabled on
+ * Check if the disable-while-trackpointing feature is currently enabled on
  * this device. If the device does not support disable-while-trackpointing,
  * this function returns @ref LIBINPUT_CONFIG_DWTP_DISABLED.
  *
@@ -6816,7 +6816,7 @@
 /**
  * @ingroup config
  *
- * Check if the disable-while trackpointing feature is enabled on this device
+ * Check if the disable-while-trackpointing feature is enabled on this device
  * by default. If the device does not support disable-while-trackpointing, this
  * function returns @ref LIBINPUT_CONFIG_DWTP_DISABLED.
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/test/litest-runner.c 
new/libinput-1.30.1/test/litest-runner.c
--- old/libinput-1.30.0/test/litest-runner.c    2025-11-25 04:40:43.000000000 
+0100
+++ new/libinput-1.30.1/test/litest-runner.c    2025-12-08 03:40:00.000000000 
+0100
@@ -123,7 +123,8 @@
 close_pipes(int fds[_FD_LAST])
 {
        for (int i = 0; i < _FD_LAST; i++) {
-               fsync(fds[i]);
+               if (fds[i] != -1)
+                       fsync(fds[i]);
                xclose(&fds[i]);
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/test/test-tablet.c 
new/libinput-1.30.1/test/test-tablet.c
--- old/libinput-1.30.0/test/test-tablet.c      2025-11-25 04:40:43.000000000 
+0100
+++ new/libinput-1.30.1/test/test-tablet.c      2025-12-08 03:40:00.000000000 
+0100
@@ -7722,6 +7722,51 @@
 }
 END_TEST
 
+START_TEST(tablet_eraser_button_config_after_device_removal)
+{
+       _litest_context_destroy_ struct libinput *li = litest_create_context();
+       struct litest_device *tablet = litest_add_device(li, 
LITEST_ELAN_TABLET);
+       struct axis_replacement axes[] = {
+               { ABS_DISTANCE, 10 },
+               { ABS_PRESSURE, 0 },
+               { -1, -1 },
+       };
+
+       litest_drain_events(li);
+
+       litest_tablet_set_tool_type(tablet, BTN_TOOL_RUBBER);
+       litest_tablet_proximity_in(tablet, 10, 10, axes);
+
+       litest_dispatch(li);
+       auto event = libinput_get_event(li);
+       auto tev = litest_is_tablet_event(event, 
LIBINPUT_EVENT_TABLET_TOOL_PROXIMITY);
+       auto tool = libinput_event_tablet_tool_get_tool(tev);
+       libinput_tablet_tool_ref(tool);
+       libinput_event_destroy(event);
+
+       litest_device_destroy(tablet);
+       litest_drain_events(li);
+
+       /* Tool isn't associated with a device but config should take effect 
anyway */
+       auto status = libinput_tablet_tool_config_eraser_button_set_mode(
+               tool,
+               LIBINPUT_CONFIG_ERASER_BUTTON_BUTTON);
+       litest_assert_enum_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
+       status =
+               libinput_tablet_tool_config_eraser_button_set_button(tool, 
BTN_STYLUS2);
+       litest_assert_enum_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
+
+       
litest_assert_enum_eq(libinput_tablet_tool_config_eraser_button_get_mode(tool),
+                             LIBINPUT_CONFIG_ERASER_BUTTON_BUTTON);
+       
litest_assert_int_eq(libinput_tablet_tool_config_eraser_button_get_button(tool),
+                            (unsigned)BTN_STYLUS2);
+
+       litest_drain_events(li);
+
+       libinput_tablet_tool_unref(tool);
+}
+END_TEST
+
 TEST_COLLECTION(tablet)
 {
        /* clang-format off */
@@ -7886,6 +7931,8 @@
                               "with-motion-events", 'b') {
                litest_add_parametrized(tablet_eraser_button_disabled, 
LITEST_TABLET, LITEST_TOTEM|LITEST_FORCED_PROXOUT, params);
        }
+
+       litest_add_no_device(tablet_eraser_button_config_after_device_removal);
        /* clang-format on */
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libinput-1.30.0/test/test-touchpad.c 
new/libinput-1.30.1/test/test-touchpad.c
--- old/libinput-1.30.0/test/test-touchpad.c    2025-11-25 04:40:43.000000000 
+0100
+++ new/libinput-1.30.1/test/test-touchpad.c    2025-12-08 03:40:00.000000000 
+0100
@@ -3651,7 +3651,7 @@
 }
 END_TEST
 
-START_TEST(touchpad_dwt)
+START_TEST(touchpad_dwt_single_key)
 {
        struct litest_device *touchpad = litest_current_device();
        struct litest_device *keyboard;
@@ -3674,7 +3674,7 @@
 
        litest_assert_only_typed_events(li, LIBINPUT_EVENT_KEYBOARD_KEY);
 
-       litest_timeout_dwt_short(li);
+       litest_timeout_dwt_long(li);
 
        /* after timeout  - motion events*/
        litest_touch_down(touchpad, 0, 50, 50);
@@ -7160,7 +7160,8 @@
 TEST_COLLECTION(touchpad_dwt)
 {
        /* clang-format off */
-       litest_add(touchpad_dwt, LITEST_TOUCHPAD, LITEST_ANY);
+       litest_add(touchpad_dwt_single_key, LITEST_TOUCHPAD, LITEST_ANY);
+
        litest_add_for_device(touchpad_dwt_ext_and_int_keyboard, 
LITEST_SYNAPTICS_I2C);
        litest_add(touchpad_dwt_enable_touch, LITEST_TOUCHPAD, LITEST_ANY);
        litest_add(touchpad_dwt_touch_hold, LITEST_TOUCHPAD, LITEST_ANY);

Reply via email to