[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#245065: xbase-clients: add an option to let setxkbmap ignore current server settings



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 to: