[PATCH:app/setxkbmap] Add -query option to print current RLMVO settings

Peter Hutterer peter.hutterer at who-t.net
Thu Oct 8 17:06:46 PDT 2009


On Thu, Oct 08, 2009 at 04:55:18PM -0700, Alan Coopersmith wrote:
> Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
> ---
> 
> When a user asked on #xorg today how to see their current settings, I 
> couldn't find a better answer than "xprop -root _XKB_RULES_NAMES", so I 
> made one that was a little less user hostile.
> 
>  setxkbmap.c   |   12 +++++++++++-
>  setxkbmap.man |    4 ++++
>  2 files changed, 15 insertions(+), 1 deletions(-)
> 
> diff --git a/setxkbmap.c b/setxkbmap.c
> index 721e2ee..32e55b2 100644
> --- a/setxkbmap.c
> +++ b/setxkbmap.c
> @@ -85,6 +85,7 @@
>  
>  /***====================================================================***/
>  static Bool print = False;
> +static Bool query = False;
>  static Bool synch = False;
>  static int verbose = 5;
>  
> @@ -240,6 +241,7 @@ usage(int argc, char **argv)
>      MSG("-model <name>       Specifies model used to choose component names\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("-query              Print the current layout settings and exit\n");
>      MSG("-rules <name>       Name of rules file to use\n");
>      MSG("-symbols <name>     Specifies symbols component name\n");
>      MSG("-synch              Synchronize request w/X server\n");
> @@ -254,6 +256,8 @@ dumpNames(Bool wantRules, Bool wantCNames)
>  {
>      if (wantRules)
>      {
> +        if (svValue[RULES_NDX])
> +            MSG1("rules:      %s\n", svValue[RULES_NDX]);
>          if (svValue[MODEL_NDX])
>              MSG1("model:      %s\n", svValue[MODEL_NDX]);
>          if (svValue[LAYOUT_NDX])
> @@ -430,6 +434,8 @@ parseArgs(int argc, char **argv)
>          }
>          else if (streq(argv[i], "-print"))
>              print = True;
> +        else if (streq(argv[i], "-query"))
> +            query = True;
>          else if (streq(argv[i], "-rules"))
>              ok = setOptString(&i, argc, argv, RULES_NDX, FROM_CMD_LINE);
>          else if (streq(argv[i], "-symbols"))
> @@ -977,7 +983,7 @@ applyComponentNames(void)
>          dumpNames(False, True);
>      }
>      /* Upload the new description to the server. */
> -    if (dpy && !print)
> +    if (dpy && !print && !query)
>      {
>          XkbComponentNamesRec cmdNames;
>          cmdNames.types = svValue[TYPES_NDX];
> @@ -1008,6 +1014,10 @@ applyComponentNames(void)
>      {
>          printKeymap();
>      }
> +    if (query)
> +    {
> +	dumpNames(True, False);

    ^^ the rest of the context seems to use spaces.

> +    }
>      return True;
>  }
>  
> diff --git a/setxkbmap.man b/setxkbmap.man
> index f3f44b4..4c1a8f4 100644
> --- a/setxkbmap.man
> +++ b/setxkbmap.man
> @@ -85,6 +85,10 @@ acceptable by \fBxkbcomp\fP (an XKB keymap compiler) and exits. The option
>  can be used for tests instead of a verbose option and in cases when one needs
>  to run both the \fBsetxkbmap\fP and the \fBxkbcomp\fP in chain (see below).
>  .TP 8
> +.B \-query
> +With this option the \fBsetxkbmap\fP just prints the current rules, model,

"the setxkbmap" sounds a bit awkward, just setxkbmap should be fine here.

> +layout, variant, and options.
> +.TP 8
>  .B \-rules \fIfile\fP
>  Specifies the name of the rules file used to resolve the requested layout
>  and model to a set of component names.
> -- 
> 1.5.6.5

other than that, I like it. The bonus side-effect of this is that once we
retire the property (one property for multiple devices doesn't work out in
the long term), we can switch setxkbmap's backend to whatever comes next and
make the change transparent to the user. tested, and

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

Cheers,
  Peter


More information about the xorg-devel mailing list