Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xdotool for openSUSE:Factory checked 
in at 2026-09-17 15:23:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xdotool (Old)
 and      /work/SRC/openSUSE:Factory/.xdotool.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xdotool"

Thu Sep 17 15:23:59 2026 rev:14 rq:1378449 version:4.20260303.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/xdotool/xdotool.changes  2025-12-17 
18:40:53.889942827 +0100
+++ /work/SRC/openSUSE:Factory/.xdotool.new.383539/xdotool.changes      
2026-09-17 15:24:02.799623226 +0200
@@ -1,0 +2,11 @@
+Wed Sep 16 20:25:09 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 4.20260303.1:
+  * XSendEvent now correctly sets the modifier mask when sending
+    key combinations (regression in 4.20251130.1, #495, #505)
+  * Keystroke delays less than 50ms now work correctly for type
+    and key commands (regression in 4.20251130.1, #496, #498, #506)
+- Use GitHub tag archive as Source (no release tarball)
+- Spec cleanup
+
+-------------------------------------------------------------------

Old:
----
  xdotool-4.20251130.1.tar.gz

New:
----
  xdotool-4.20260303.1.tar.gz

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

Other differences:
------------------
++++++ xdotool.spec ++++++
--- /var/tmp/diff_new_pack.b06k9M/_old  2026-09-17 15:24:04.199681994 +0200
+++ /var/tmp/diff_new_pack.b06k9M/_new  2026-09-17 15:24:04.201682078 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package xdotool
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,13 @@
 
 
 Name:           xdotool
-Version:        4.20251130.1
+Version:        4.20260303.1
 Release:        0
 Summary:        Fake keyboard/mouse input
 License:        BSD-3-Clause
-Group:          System/X11/Utilities
 URL:            https://www.semicomplete.com/projects/xdotool/
-Source:         
https://github.com/jordansissel/xdotool/releases/download/v%{version}/%{name}-%{version}.tar.gz
-BuildRequires:  gcc-c++
+Source:         
https://github.com/jordansissel/xdotool/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
+BuildRequires:  gcc
 BuildRequires:  make
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(x11)
@@ -39,7 +38,6 @@
 
 %package devel
 Summary:        Development and Library files
-Group:          Development/Libraries/X11
 Requires:       %{name} = %{version}
 Requires:       pkgconfig(x11)
 
@@ -57,7 +55,7 @@
 # Fix file permissions
 chmod 0644 examples/ffsp.sh
 export WARNFLAGS="%{optflags}"
-make %{?_smp_mflags}
+%make_build
 
 %install
 %make_install \
@@ -74,9 +72,10 @@
 
 %files
 %{_bindir}/%{name}
-%doc CHANGELIST COPYRIGHT README.md
+%license COPYRIGHT
+%doc CHANGELIST README.md
 %doc examples
-%{_mandir}/man1/%{name}.1%{ext_man}
+%{_mandir}/man1/%{name}.1%{?ext_man}
 %{_libdir}/libxdo.so.*
 
 %files devel

++++++ xdotool-4.20251130.1.tar.gz -> xdotool-4.20260303.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdotool-4.20251130.1/CHANGELIST 
new/xdotool-4.20260303.1/CHANGELIST
--- old/xdotool-4.20251130.1/CHANGELIST 2025-11-30 20:45:42.000000000 +0100
+++ new/xdotool-4.20260303.1/CHANGELIST 2026-03-03 18:03:35.000000000 +0100
@@ -9,6 +9,14 @@
     Unfortunately, there seem to be no common and stable way to do what
     xdotool does *on* Wayland, so xdotool does not work correctly under 
Wayland.
 
+4.20260303.1
+  - XSendEvent now correctly sets the modifier mask when sending key
+    combinations. This was a regression introduced in the previous release
+    (#495, #505)
+  - Keystroke delays less than 50ms should work now correctly; type and key
+    commands were affected. This was a regression introduced in the previous
+    release. (#496, #498, #506)
+
 4.20251130.1
   - Fix bug in typing/keyboard causing xdotool to send extra modifier
     keys in certain cases. When xkeyboard-config 2.46 is installed,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdotool-4.20251130.1/VERSION 
new/xdotool-4.20260303.1/VERSION
--- old/xdotool-4.20251130.1/VERSION    2025-11-30 20:45:42.000000000 +0100
+++ new/xdotool-4.20260303.1/VERSION    2026-03-03 18:03:35.000000000 +0100
@@ -1,3 +1,3 @@
 MAJOR="4"
-RELEASE="20251130"
+RELEASE="20260303"
 REVISION="1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdotool-4.20251130.1/t/test_typing.rb 
new/xdotool-4.20260303.1/t/test_typing.rb
--- old/xdotool-4.20251130.1/t/test_typing.rb   2025-11-30 20:45:42.000000000 
+0100
+++ new/xdotool-4.20260303.1/t/test_typing.rb   2026-03-03 18:03:35.000000000 
+0100
@@ -45,8 +45,8 @@
   def type(input)
     #status, lines = xdotool "type --window #{@wid} --clearmodifiers 
'#{input}'"
     #_xdotool "key ctrl+s ctrl+q"
-    status, lines = xdotool("type","--clearmodifiers", "--delay", "0", input)
-    xdotool "key --delay 0 ctrl+d ctrl+d"
+    status, lines = xdotool("type","--clearmodifiers", "--delay", "20", input)
+    xdotool "key --delay 20 ctrl+d ctrl+d"
     Process.wait(@launchpid) rescue nil
     return readfile
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdotool-4.20251130.1/xdo.c 
new/xdotool-4.20260303.1/xdo.c
--- old/xdotool-4.20251130.1/xdo.c      2025-11-30 20:45:42.000000000 +0100
+++ new/xdotool-4.20260303.1/xdo.c      2026-03-03 18:03:35.000000000 +0100
@@ -66,6 +66,7 @@
                           int modstate, int is_press, useconds_t delay);
 static void _xdo_send_modifier(const xdo_t *xdo, int modmask, int is_press);
 
+static int _xdo_query_keycode_to_modifier(XModifierKeymap *modmap, KeyCode 
keycode);
 static int _xdo_mousebutton(const xdo_t *xdo, Window window, int button, int 
is_press);
 
 static int _is_success(const char *funcname, int code, const xdo_t *xdo);
@@ -983,8 +984,13 @@
 
 /* XXX: Return proper code if errors found */
 int xdo_enter_text_window(const xdo_t *xdo, Window window, const char *string, 
useconds_t delay) {
-  /* Keep the original delay for key up events, but use 50000 microseconds 
(50ms) for key down */
-  useconds_t down_delay = 50000; 
+  /* Split delay into keyup and keydown, not letting keydown exceed 50000 
(50ms) */
+  useconds_t down_delay, up_delay;
+  down_delay = up_delay = delay / 2;
+  if (down_delay > 50000) {
+    down_delay = 50000;
+    up_delay = delay - down_delay;
+  }
 
   charcodemap_t key;
   setlocale(LC_CTYPE,"");
@@ -1002,11 +1008,11 @@
       continue;
     }
 
-    /* Send the key press event with the fixed 50ms delay */
+    /* Send the key press event */
     xdo_send_keysequence_window_list_do(xdo, window, &key, 1, True, NULL, 
down_delay);
     key.needs_binding = 0;
-    /* Send the key release event with the user-specified delay */
-    xdo_send_keysequence_window_list_do(xdo, window, &key, 1, False, NULL, 
delay);
+    /* Send the key release event */
+    xdo_send_keysequence_window_list_do(xdo, window, &key, 1, False, NULL, 
up_delay);
   }
 
   return XDO_SUCCESS;
@@ -1320,6 +1326,7 @@
 static void _xdo_populate_charcode_map(xdo_t *xdo) {
   size_t idx = 0;
   XkbDescPtr desc = XkbGetMap(xdo->xdpy, XkbAllClientInfoMask, XkbUseCoreKbd);
+  XModifierKeymap *modmap = XGetModifierMapping(xdo->xdpy);
 
   xdo->keycode_low = desc->min_key_code;
   xdo->keycode_high = desc->max_key_code;
@@ -1444,7 +1451,8 @@
           // shall be valid.
           (!map.active && li == 0) ? " [IMPLICIT] " : "");
 
-        AddCharcodeEntry(idx, xdo, keysym, keycode, group, map.mods.mask);
+        unsigned char mask = map.mods.mask | 
_xdo_query_keycode_to_modifier(modmap, keycode);
+        AddCharcodeEntry(idx, xdo, keysym, keycode, group, mask);
       }
     }
   }
@@ -1671,6 +1679,31 @@
     usleep(delay);
   }
 }
+int _xdo_query_keycode_to_modifier(XModifierKeymap *modmap, KeyCode keycode) {
+  int i = 0, j = 0;
+  int max = modmap->max_keypermod;
+
+  for (i = 0; i < 8; i++) { /* 8 modifier types, per XGetModifierMapping(3X) */
+    for (j = 0; j < max && modmap->modifiermap[(i * max) + j]; j++) {
+      if (keycode == modmap->modifiermap[(i * max) + j]) {
+        switch (i) {
+          case ShiftMapIndex: return ShiftMask; break;
+          case LockMapIndex: return LockMask; break;
+          case ControlMapIndex: return ControlMask; break;
+          case Mod1MapIndex: return Mod1Mask; break;
+          case Mod2MapIndex: return Mod2Mask; break;
+          case Mod3MapIndex: return Mod3Mask; break;
+          case Mod4MapIndex: return Mod4Mask; break;
+          case Mod5MapIndex: return Mod5Mask; break;
+        }
+      } /* end if */
+    } /* end loop j */
+  } /* end loop i */
+
+  /* No modifier found for this keycode, return no mask */
+  return 0;
+}
+
 
 void _xdo_send_modifier(const xdo_t *xdo, int modmask, int is_press) {
   XModifierKeymap *modifiers = XGetModifierMapping(xdo->xdpy);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdotool-4.20251130.1/xdo_version.h 
new/xdotool-4.20260303.1/xdo_version.h
--- old/xdotool-4.20251130.1/xdo_version.h      2025-11-30 20:45:42.000000000 
+0100
+++ new/xdotool-4.20260303.1/xdo_version.h      2026-03-03 18:03:35.000000000 
+0100
@@ -1,4 +1,4 @@
 #ifndef _VERSION_H_
 #define _VERSION_H_
-static const char *XDO_VERSION = "4.20251130.1";
+static const char *XDO_VERSION = "4.20260303.1";
 #endif /* ifndef _VERSION_H */

Reply via email to