Fonts and XKB problems

Benjamin Herrenschmidt benh at kernel.crashing.org
Sat Sep 18 00:27:29 PDT 2004


(Resent without attachment as it seems it didn't make it to the list,
I appologize in advance if it was just waiting for moderator approval...)

Hi !

I decided to give X.org a try on my PowerBook so I can start hacking on
the ATI driver (the radeon one, it has some PPC issues that I need to
fix) but encountered a few problems in the meantime. Unfortunately,
those are areas that for which I don't have the beginning of a clue of
what's going on...

1) Fonts. Apparently, this is related to having the x.org libs
overriding the XFree ones (I have x.org/lib before xfree in ld.so.conf).
Whatever server I use, if I have xorg libs in front, my gnome
environment lose most of my fonts, that is the fontconfig ones it seems,
gnome uses app-local rendering of fonts if my memory is correct, not the
X server). There must be some lib incompatibility in there but I don't
know where precisely

2) Keyboard. For ages, I've been carrying an old hacked keymap that
works for French "mac" keyboards. They have a few weird things, like the
pipe "|" is obtained with shift-alt-L or the tilde "~" (which is a dead
key) with alt-N. Part of the "fix" to get that working was to define alt
as Mode_switch.. that and more hacks that I don't really understand
since I'm almost clueless about XKB (sorry guys, out of the kernel I'm
lost :) The problem is that while this keymap still works for | or ~,
when it's loaded, I can no longer switch virtual consoles with
meta-alt-Fn. While this works fine with my old XFree it doesn't with
X.org. Any clue in fixing that keymap properly once for all is
appreciated so we can maybe commit it to the X.org CVS... I enclosed my
old hacked one from symbols/macintosh/fr

Thanks for any help fixing those !

Regards,
Ben.

Keymap file:
// $XConsortium: macintosh /main/10 1996/01/29 19:54:54 kaleb $
// $XFree86: xc/programs/xkbcomp/symbols/macintosh/fr,v 1.2 2000/09/26 15:57:25 tsi Exp $
//

xkb_symbols "extended" {

    name[Group1]= "FR-1";

    // Alphanumeric section
    key <LSGT> {	[        less,	  greater   	]	};
    key <TLDE> {        [        at,    numbersign      ],
                        [   periodcentered              ]	};
    key <AE01> {	[   ampersand,	  1    		],
	 					[   dead_acute,   dead_acute] };
    key <AE02> {	[      eacute,	  2 		]	};
    key <AE03> {	[    quotedbl,	  3         	]	};
    key <AE04> {	[  quoteright,	  4    		],
                        [   quoteleft                   ]	};
    key <AE05> {	[   parenleft,	  5    		],
              	        [   braceleft,    bracketleft 	]	};
    key <AE06> {	[     section,	  6          	],
                        [   paragraph                   ]	};
    key <AE07> {	[      egrave,	  7        	],
                        [ guillemotleft, guillemotright ]	};
    key <AE08> {	[      exclam,	  8       	],
                        [  exclamdown,    Ucircumflex   ]	};
    key <AE09> {	[    ccedilla,    9        	],
                        [    Ccedilla,    Aacute        ]	};
    key <AE10> {	[      agrave,	  0         	],
                        [      oslash,    Ooblique      ]	};
    key <AE11> {	[  parenright,	  degree       	],
                	[  braceright,	  bracketright  ] 	};
    key <AE12> {	[       minus, 	  underscore	]	};

    key <AD01> {	[	    a,	A 		],
                	[          ae,	AE              ] 	};
    key <AD02> {	[	    z,	Z		],
                	[ Acircumflex,	Aring           ] 	};
    key <AD03> {	[	    e,	E		],
                	[ ecircumflex,	Ecircumflex     ] 	};
    key <AD04> {	[	    r,	R		],
                	[  registered,	currency        ] 	};
    key <AD05> {	[	    t,	T		]	};
    key <AD06> {	[	    y,	Y		],
                	[      Uacute,	ydiaeresis      ] 	};
    key <AD07> {	[	    u,	U		]	};
    key <AD08> {	[	    i,	I		],
                	[ icircumflex,	idiaeresis      ] 	};
    key <AD09> {	[	    o,	O		]	};
    key <AD10> {	[	    p,	P		]	};
    key <AD11> {	[ dead_circumflex,  dead_diaeresis  ],
                	[ ocircumflex,	Ocircumflex     ] 	};
    key <AD12> {	[      dollar,	asterisk        ],
                	[       comma,	yen             ] 	};
    key <BKSL> {	[   	dead_grave,  sterling        ],
			[          at,  numbersign      ]	};

    key <AC01> {	[	  q,	Q 		]	,
                	[ acircumflex,	Acircumflex     ] 	};
    key <AC02> {	[	  s,	S		],
			[    Ograve,    S               ]	};
    key <AC03> {	[	  d,	D		]	};
    key <AC04> {	[	  f,	F		],
			[         f,    periodcentered  ]	};
    key <AC05> {	[	  g,	G		]	};
    key <AC06> {	[	  h,	H		],
			[    Igrave,    Icircumflex     ]	};
    key <AC07> {	[	  j,	J		],
			[ Idiaeresis,   Iacute          ]	};
    key <AC08> {	[	  k,	K		],
			[    Egrave,    Ediaeresis      ]	};
    key <AC09> {	[	  l,	L		],
			[    ssharp,    bar		]	};
    key <AC10> {	[         m,	M    		],
			[        mu,    Oacute		]	};
    key <AC11> {	[    ugrave,	percent 	],
			[    Ugrave,    ucircumflex	]	};
    key <RTRN> {	[    Return,	Return		],
			[    hyphen,    hyphen		]	};

    key <AB01> {	[	  w,	W 		]	};
    key <AB02> {	[	  x,	X		]	};
    key <AB03> {	[	  c,	C		],
			[ copyright,    copyright	]	};
    key <AB04> {	[	  v,	V		]	};
    key <AB05> {	[	  b,	B		]	};
    key <AB06> {	[	  n,	N		],
                        [ dead_tilde                    ]       };
    key <AB07> {	[     comma,	question	],
			[        at,    questiondown	]	};
    key <AB08> {	[ semicolon,	period          ]	};
    key <AB09> {	[     colon,	slash  		],
			[  division,    backslash	]	};
    key <AB10> {	[     equal,	plus    	],
			[    macron,    plusminus	]	};

    // End alphanumeric section
    key <KPDL> {        [ KP_Separator , KP_Delete      ]       };

    // Begin modifier mappings
        key <LWIN> {	[  Meta_L				]	};
	key <LFSH> {	[  Shift_L				]	};
	key <LCTL> {	[  Control_L			]	};
	key <LALT> {	[  Mode_switch	]	};
	key <RWIN> {	[  Eject				]	};
	key <RTSH> {	[  Shift_R				]	};
	key <RCTL> {	[  Control_R			]	};
	key <RALT> {	[  Alt_R				]	};
    // End modifier mappings

    // begin modifier mappings
    modifier_map Shift	{ Shift_L,   Shift_R   };
    modifier_map Lock	{ Caps_Lock	           };
    modifier_map Control{ Control_L, Control_R };
    modifier_map Mod1	{ Meta_L, Meta_R       };
    modifier_map Mod2   { Alt_L, Alt_R         };
    modifier_map Mod3	{ Mode_switch	       };
    // end modifier mappings

};






More information about the xorg mailing list