"empty" model/layout for xkb

Peter Hutterer peter.hutterer at who-t.net
Tue Feb 2 03:18:36 PST 2010


On Tue, Jan 26, 2010 at 12:36:55PM -0800, Jeremy Huddleston wrote:
> I'm trying to modify xkeyboard-config to create an "empty" xbk rules set.
> This way, we can set "empty" as the default in XQuartz and have a clean
> slate.
> 
> I'm having a bit of trouble getting this to work.  Firstly, I can't seem
> to figure out how to NOT set the +aliases(qwerty) variant on the keycodes.
> Secondly, it doesn't seem to recognize my empty symbols file.
> 
> Can someone fill me in on what I'm missing?

the evdev rules file is combined from the base* as well (look at the
Makefile.am). So for the +aliases to disappear you need to add it to
base.l_k.part.

that's the only thing I can spot immediately. I take it the rules file is
composed correctly and the resulting files in /usr/share/X11/xkb (or
whatever prefix) look alright?

Cheers,
  Peter
> 
> diff --git a/keycodes/Makefile.am b/keycodes/Makefile.am
> index c289e14..68c9a54 100644
> --- a/keycodes/Makefile.am
> +++ b/keycodes/Makefile.am
> @@ -6,6 +6,7 @@ dist_keycodes_DATA = \
>  aliases \
>  amiga \
>  ataritt \
> +empty \
>  evdev \
>  fujitsu \
>  hp \
> diff --git a/keycodes/empty b/keycodes/empty
> new file mode 100644
> index 0000000..eedc943
> --- /dev/null
> +++ b/keycodes/empty
> @@ -0,0 +1,4 @@
> +default xkb_keycodes "empty" {
> +    minimum= 8;
> +    maximum= 255;
> +};
> diff --git a/rules/base.m_k.part b/rules/base.m_k.part
> index dd0c391..6d5eda0 100644
> --- a/rules/base.m_k.part
> +++ b/rules/base.m_k.part
> @@ -1,5 +1,6 @@
>    amiga		=	amiga(de)
>    ataritt	=	ataritt(de)
> +  empty         =       empty
>    sun4		=	sun(type4_euro)
>    sun5		=	sun(type5_euro)
>    sun6		=	sun(type6_usb)
> diff --git a/rules/base.ml_s.part b/rules/base.ml_s.part
> index 1c16b6b..31e5d33 100644
> --- a/rules/base.ml_s.part
> +++ b/rules/base.ml_s.part
> @@ -3,6 +3,8 @@
>    amiga		$nonlatin		=	xfree68_vndr/amiga(usa1)+%l%(v):2
>    amiga		*			=	xfree68_vndr/amiga(usa1)+%l%(v)
>    classmate	us			=	pc+%l(classmate)
> +  empty         *                       =       empty
> +  *             empty                   =       empty
>    sun4		$nonlatin		=	latin+sun_vndr/us(type4)+%l%(v):2
>    sun4		*			=	latin+sun_vndr/us(type4)+%l%(v)
>    sun5		$nonlatin		=	latin+sun_vndr/us(type5)+%l%(v):2
> diff --git a/symbols/Makefile.am b/symbols/Makefile.am
> index d22d6c3..7724984 100644
> --- a/symbols/Makefile.am
> +++ b/symbols/Makefile.am
> @@ -30,7 +30,7 @@ terminate \
>  tj tm tr \
>  ua us uz vn \
>  za \
> -altwin capslock compose ctrl eurosign group inet \
> +altwin capslock compose ctrl empty eurosign group inet \
>  keypad kpdl level3 level5 nbsp olpc shift srvr_ctrl typo
>  
>  dir_data = $(dist_symbols_DATA)
> diff --git a/symbols/empty b/symbols/empty
> new file mode 100644
> index 0000000..72eb127
> --- /dev/null
> +++ b/symbols/empty
> @@ -0,0 +1,6 @@
> +// $XKeyboardConfig$
> +
> +default
> +xkb_symbols "basic" {
> +    name[Group1]= "Empty";
> +};
> 
> 
> In my DDX, I'm doing this to set the rules:
> 
> +    XkbRMLVOSet rmlvo = { .rules = "base", .model = "empty", .layout = "empty",
> +                          .variant = NULL, .options = NULL };
> +    /* We need to really have rules... or something... */
> +    XkbSetRulesDflts(&rmlvo);
> 
> These changes result in:
> 
> xkb_keymap {
> xkb_keycodes "empty+aliases(qwerty)" {
>     minimum = 8;
>     maximum = 255;
>     virtual indicator 1 = "Caps Lock";
>     virtual indicator 2 = "Num Lock";
>     virtual indicator 3 = "Shift Lock";
>     virtual indicator 4 = "Group 2";
>     virtual indicator 5 = "Mouse Keys";
>     virtual indicator 6 = "Scroll Lock";
> };
> 
> xkb_types "complete" {
> ...
> };
> 
> xkb_compatibility "complete" {
> ...
> }
> 
> xkb_symbols "unknown" {
> 
>     key     <> {
>         symbols[Group1]= [               a,               A ],
>         symbols[Group2]= [           aring,           Aring ]
>     };
>     modifier_map Mod2 { <> };
>     modifier_map Shift { <> };
>     modifier_map Lock { <> };
>     modifier_map Mod1 { <> };
>     modifier_map Control { <> };
>     modifier_map Shift { <> };
>     modifier_map Mod1 { <> };
>     modifier_map Control { <> };
>     modifier_map Mod2 { <> };
> };
> 
> };
> 



More information about the xorg-devel mailing list