Package: xbase-clients
Version: 4.3.0-7
Severity: wishlist
Tags: patch

Hi Branden,

I wrote:
 One problem with latest XKB bugreports (changes in X 4.3) is that we
 do not know if xlibs has to be blamed, or if other apps are modifying
 XKB settings.  In order to reproduce the reported bugs, I slightly
 hacked setxkbmap.c to ignore current server settings.  If a -noserver
 command-line flag is added (patch attached), we could ask submitters
 to run a setxkbmap command and determine if this bug belongs to xlibs.
and you requested a bugreport in
     http://lists.debian.org/debian-x-0404/msg00796.html
I would like to read your comments before patching documentation ;)

Denis
Index: setxkbmap.c
===================================================================
RCS file: /cvs/xc/programs/setxkbmap/setxkbmap.c,v
retrieving revision 3.8
diff -u -r3.8 setxkbmap.c
--- setxkbmap.c 17 Nov 2003 22:20:50 -0000      3.8
+++ setxkbmap.c 18 Apr 2004 19:59:22 -0000
@@ -83,6 +83,7 @@
 /***====================================================================***/
 Bool                   print= False;
 Bool                   synch= False;
+Bool                   noserver= False;
 int                    verbose= 5;
 
 Display *              dpy;
@@ -210,6 +211,7 @@
     MSG("-keymap <name>      Specifies name of keymap to load\n");
     MSG("-layout <name>      Specifies layout used to choose component 
names\n");
     MSG("-model <name>       Specifies model used to choose component 
names\n");
+    MSG("-noserver           Ignores current server settings\n");
     MSG("-option <name>      Adds an option used to choose component names\n");
     MSG("-print              Print a complete xkb_keymap description and 
exit\n");
     MSG("-rules <name>       Name of rules file to use\n");
@@ -370,6 +372,8 @@
            ok= setOptString(&i,argc,argv,SYMBOLS_NDX,FROM_CMD_LINE);
        else if (streq(argv[i],"-synch"))
            synch= True;
+       else if (streq(argv[i],"-noserver"))
+           noserver= True;
        else if (streq(argv[i],"-types"))
            ok= setOptString(&i,argc,argv,TYPES_NDX,FROM_CMD_LINE);
        else if (streq(argv[i],"-verbose")||(streq(argv[i],"-v"))) {
@@ -835,9 +839,9 @@
     if ((!parseArgs(argc,argv))||(!getDisplay(argc,argv)))
        exit(-1);
     svValue[LOCALE_NDX]= setlocale(LC_ALL,svValue[LOCALE_NDX]);
-    svSrc[LOCALE_NDX]= FROM_SERVER;
+    svSrc[LOCALE_NDX]= (noserver?FROM_CMD_LINE:FROM_SERVER);
     VMSG1(7,"locale is %s\n",svValue[LOCALE_NDX]);
-    if (dpy)
+    if (dpy && !noserver)
         getServerValues();
     if (svValue[CONFIG_NDX] && (!applyConfig(svValue[CONFIG_NDX])))
        exit(-3);

Reply via email to