|
Description
|
Several european keyboard layouts fail to load in Xorg, resulting in unusable
keyboards for users with those keyboards.
===================
1) German (de) layout:
# kbd -l
type=6
layout=9 (0x09)
delay(ms)=500
rate(ms)=40
Xorg autodetects the XkbModel "sun_type6_euro_usb" and XkbLayout
"de" (from Xorg.log.0):
________________________________________________________________________
(--) Keyboard type: USB (6)
(--) Keyboard layout: 9
(--) XKB: model: "sun_type6_euro_usb"
(--) XKB: layout: "de"
(II) Server_Terminate keybinding not found
________________________________________________________________________
But on stderr Xorg reports (/var/dt/Xerrors) ...
________________________________________________________________________
The XKEYBOARD keymap compiler (xkbcomp) reports:
>> Error: No Symbols named "sundeadkeys" in the include file
"de"
>> Exiting
>> Abandoning symbols file "default"
Errors from xkbcomp are not fatal to the X server
________________________________________________________________________
Although there's the hint that xkbcomp errors are not fatal, this
does not seem to be true in this case.
Root cause is a missing xkb_symbols "sundeadkeys" section in the
file /usr/X11/lib/X11/xkb/symbols/de . The symbols files for most
locales have such a section (e.g. gb, se, dk, be), but for some
locales the sections is missing (e.g. de, nl).
Fix: add a dummy "sundeadkeys" section to
/usr/X11/lib/X11/xkb/symbols/de.
de(sundeadkeys) seems to be required due to the following entry in
/usr/X11/lib/X11/xkb/rules/xorg:
! model layout = symbols
...
$sun_type6 * = sun/us(type6)+%l(sundeadkeys)
# diff -u /tmp/de /usr/X11/lib/X11/xkb/symbols/de
--- /tmp/de So Feb 6 23:13:32 2005
+++ /usr/X11/lib/X11/xkb/symbols/de So Feb 6 23:12:38 2005
@@ -83,6 +83,16 @@
};
partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+ // modify the default German layout to use Sun dead keys
+ include "de(basic)"
+};
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+ include "de(Sundeadkeys)"
+};
+
+partial alphanumeric_keys
xkb_symbols "nodeadkeys" {
// modify the default German layout to not have any dead keys
include "de(basic)"
________________________________________________________________________
Alternate fix, for users that don't need dead accent keys: map the
"sun_type6_euro_usb" / "de" keyboard to use "de(nodeadkeys)"
keyboard symbols:
% diff -u /tmp/xorg /usr/X11/lib/X11/xkb/rules/xorg
--- /tmp/xorg So Feb 6 23:50:55 2005
+++ /usr/X11/lib/X11/xkb/rules/xorg So Feb 6 23:48:46 2005
@@ -105,6 +105,7 @@
$sun_type6 us = sun/us(type6)+sun/solaris(defaults)
$sun_type6 jp = sun/us(type6)+sun/jp(type6)
$sun_type6 $sun_t6_custom = sun/us(type6)+sun/%l(type6)
+ $sun_type6 de = sun/us(type6)+%l(nodeadkeys)
$sun_type6 * = sun/us(type6)+%l(sundeadkeys)
pc98 nec/jp = nec/jp(pc98)
abnt2 br = pc/pc(pc104)+pc/br
==================
2) Sweden (se) layout:
I can reproduce this with an USB keyboard. After
eeprom kbd-type=Swedish
/usr/lib/set_keyboard_layout
on the ascii console and restarting dtlogin the keyboard mapping is
messed up ("root" -> "eiir").
>> I'd say in this case the root cause is that the swedish keyboard
>> layout name "se" is misspelled as "sw" in the xkbtable.map file.
Yep, using the following patch, a Swedish layout USB keyboard seems
to work much better with Xorg. I only tested the Type6 USB part;
I guess the Type5 keyboard and the PC PS/2 keyboard needs the same
fix:
% diff -u /usr/X11/lib/X11/xkb/xkbtable.map{.orig,}
--- /usr/X11/lib/X11/xkb/xkbtable.map.orig Thu Dec 16 08:17:39 2004
+++ /usr/X11/lib/X11/xkb/xkbtable.map Wed Feb 9 13:33:55 2005
@@ -75,7 +75,7 @@
4 40 - sun_type5_euro no # Norway5
4 41 - sun_type5_euro pt # Portugal5
4 42 - sun_type5_euro es # Spain5
-4 43 - sun_type5_euro sw # Sweden5
+4 43 - sun_type5_euro se # Sweden5
4 44 - sun_type5_euro fr_CH # Switzer_Fr5
4 45 - sun_type5_euro de_CH # Switzer_Ge5
4 46 - sun_type5_euro gb # UK5
@@ -108,7 +108,7 @@
4 87 - sun_type5_euro_hobo no # Norway5_Hobo
4 88 - sun_type5_euro_hobo pt # Portugal5_Hobo
4 89 - sun_type5_euro_hobo es # Spain5_Hobo
-4 90 - sun_type5_euro_hobo sw # Sweden5_Hobo
+4 90 - sun_type5_euro_hobo se # Sweden5_Hobo
4 91 - sun_type5_euro_hobo fr_CH # Switzer_Fr5_Hobo
4 92 - sun_type5_euro_hobo de_CH # Switzer_Ge5_Hobo
4 93 - sun_type5_euro_hobo gb # UK5_Hobo
@@ -130,7 +130,7 @@
101 40 - pc105 no # Norway_x86
101 41 - pc105 pt # Portugal_x86
101 42 - pc105 es # Spain_x86
-101 43 - pc105 sw # Sweden_x86
+101 43 - pc105 se # Sweden_x86
101 44 - pc105 fr_CH # Switzer_Fr_x86
101 45 - pc105 de_CH # Switzer_Ge_x86
101 46 - pc105 gb # UK_x86
@@ -163,7 +163,7 @@
6 22 - sun_type6_euro_usb pt # Portugal6_usb
6 23 - sun_type6_euro_usb ru # Russia6_usb
6 25 - sun_type6_euro_usb es # Spain6_usb
-6 26 - sun_type6_euro_usb sw # Sweden6_usb
+6 26 - sun_type6_euro_usb se # Sweden6_usb
6 27 - sun_type6_euro_usb fr_CH # Switzer_Fr6_usb
6 28 - sun_type6_euro_usb de_CH # Switzer_Ge6_usb
6 30 - sun_type6_usb tw # Taiwan6_usb
xxxxx@xxxxx.com 2005-2-09 22:05:46 GMT
|