OpenSolaris

Printable Version Enter a New Search
Bug ID 6227475
Synopsis Some Asian & European keyboards don't work in Xorg
State 11-Closed:Verified (Closed)
Category:Subcategory xserver:xorg-server
Keywords
Responsible Engineer Alan Coopersmith
Reported Against s10_74l2 , s10u1_01
Duplicate Of
Introduced In solaris_10
Commit to Fix snv_10
Fixed In snv_10
Release Fixed solaris_nevada(snv_10) , solaris_10u1(s10u1_04) (Bug ID:2123629)
Related Bugs 6370138 , 6227843
Submit Date 9-February-2005
Last Update Date 14-April-2006
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
Work Around
N/A
Comments
N/A