Bug#188050: Option XkbSymbols override XkbGeometry
Package: xserver-xfree86
Version: 4.2.1-6
Hello,
I am using czech internacionalized keyboard ucw,
<a href="ftp://atrey.karlin.mff.cuni.cz/pub/local/0rfelyus/ucw-cs-X"/>
and it stopped working since I upgraded to newest version of
xserver-xfree86.
When starting Xserver I get message from xkbcompile:
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Error: Can't find file "ucw" for geometry include
> Exiting
> Abandoning geometry file "default"
Errors from xkbcomp are not fatal to the X server
Couldn't load XKB keymap, falling back to pre-XKB keymap
My keyboard section of /XF86Config-4 is:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "Protocol" "Standard"
Option "Xkbkeycodes" "xfree86"
Option "XkbTypes" "ucw"
Option "XkbCompat" "ucw"
Option "XkbSymbols" "ucw(pc104-qwerty-caps)"
Option "XkbGeometry" "pc(pc104)"
EndSection
Although XkbGeometry is set to pc(pc104) xbkcompat reads such a config
from stdin when beeing executed:
xkb_keymap "default" {
xkb_keycodes { include "xfree86" };
xkb_types { include "ucw" };
xkb_compatibility { include "ucw" };
xkb_symbols { include "ucw(pc104-qwerty-caps)" };
xkb_geometry { include "ucw(pc104-qwerty-caps)" };
};
But there is no file ucw in directory /etc/X11/xkb/geometry(and never
was).
When I have changed keyboard config to:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "Protocol" "Standard"
Option "Xkbkeycodes" "xfree86"
Option "XkbTypes" "ucw"
Option "XkbCompat" "ucw"
# Option "XkbSymbols" "ucw(pc104-qwerty-caps)"
Option "XkbGeometry" "pc(pc104)"
EndSection
String which is beeing piped to xkbconfig changed to:
xkb_keymap "default" {
xkb_keycodes { include "xfree86" };
xkb_types { include "ucw" };
xkb_compatibility { include "ucw" };
xkb_symbols { include "us(pc101)" };
xkb_geometry { include "pc(pc104)" };
};
It seems to me, that XkbSymbols overrides value of XkbGeometry.
I have created simple script to be used insted of xkbcomp:
ivan@brezina1:~$ cat /usr/X11R6/lib/X11/xkb/xkbcomp
#!/bin/sh
cat >/tmp/pipe
echo "$@" >>/tmp/pipe
exec /usr/X11R6/lib/X11/xkb/xkbcomp.orig "$@" </tmp/pipeok
File /tmp/pipe contains bugy version of string for xkbcomp.
File /tmp/pipeok contains correct arguments for xkbcomp.
Unfortunetly I am unable to store them directly into
/etc/X11/XF86Config-4.
ivan@brezina1:~$ cat /tmp/pipeok
xkb_keymap "default" {
xkb_keycodes { include "xfree86" };
xkb_types { include "ucw" };
xkb_compatibility { include "ucw" };
xkb_symbols { include "ucw(pc104-qwerty-caps)" };
xkb_geometry { include "pc(pc104)" };
};
With this configuration Czech keyboard works again for me.
Ivan Brezina
Reply to: