• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[GELÖST] Eigenbau-XKB-Map funzt nach Upgrade nicht mehr

Moinsen,

ich verfüge über eine Cherry Cymotion Master Linux (deutsches Layout) und habe kürzlich von openSuSE 11.3 auf 12.1 upgegradet. Bisher benützte ich ein selbst gestricktes Layout (mit polnischen Sonderzeichen; Name «dep») auf Basis des de-Layouts. Nachdem es schon beim letzten Upgrade (11.2 → 11.3) Ärger gab, weil das Layout-File im rules-Verzeichnis einfach gelöscht wurde, gibt es mit 12.1 abermals Probleme:

Im Systemabschnitt taucht die deutsche Flagge für das de-Layout auf. Nach Rechtsklick offeriert man mit auch das dep-Layout. Klicke ich drauf, bleibt de eingestellt. Also in den Systemeinstellungen die Layout-Alternative dep rausgeschmissen und neu hinzugefügt. Kein Erfolg.

setxkbmap auf der Konsole ausprobiert. Fehlermeldung, aus der ich aber nicht schlauer werde:

Code:
jacek@veteran:~> setxkbmap -model cymotionlinux -layout dep -verbose 10
Setting verbose level to 10
locale is C
Warning! Multiple definitions of keyboard model
         Using command line, ignoring X server
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Applied rules from evdev:
rules:      evdev
model:      cymotionlinux
layout:     dep
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+dep+inet(evdev)+terminate(ctrl_alt_bksp)
geometry:   pc(pc104)
Error loading new keyboard description

Die verschiedenen Config-Files im xkb-Verzeichnis inspiziert. In der base.lst und base.xml (Welche dieser Files benützt XKB als Liste der Tastatur-Layouts eigentlich?) fehlte natürlich der Eintrag für dep, also habe ich ihn (auf Basis des Eintrags für de) hinzugefügt:

Code:
    <layout>
      <configItem>
        <name>dep</name>
        <shortDescription>dep</shortDescription>
        <description>German (with Polish characters)</description>
        <languageList>
          <iso639Id>ger</iso639Id>
          <iso639Id>pol</iso639Id>
        </languageList>
      </configItem>
      <variantList>
        <variant>
          <configItem>
            <name>nodeadkeys</name>
            <description>German (with Polish characters, eliminate dead keys)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>sundeadkeys</name>
            <description>German (with Polish characters, Sun dead keys)</description>
          </configItem>
        </variant>
      </variantList>
    </layout>

base.lst:

Code:
  dep             German (with Polish characters)

Nochmal setxkbmap gestartet (auch als root). Immer noch kein Erfolg. In den Systemeinstellungen wird mir dep jedoch angeboten, sogar mitsamt allen Optionen, wie in der base.xml beschrieben.

Was habe ich jetzt vergessen? :-?
 
In der xfree86-Keymap-Datei fehlte noch der Eintrag für das neue Layout:

Code:
xkb_keymap "dep"        {
    xkb_keycodes        { include "xfree86"             };
    xkb_types           { include "default"             };
    xkb_compatibility   { include "default"             };
    xkb_symbols         { inlcude "pc(pc105)+dep"       };
    xkb_geometry        { include "pc(pc102)"           };
};
 
Hat nichts geholfen: Wenn ich dep auswähle, bleibt alles bei de, auch das Tastaturlayout. Ein Reboot hat übrigens auch nicht geholfen. :(
 
Wieso mehr als ein Modell und Layout? In den Systemeinstellungen wird durch Anklicken eine Modell/Layout-Combo ausgewählt und in meinem setxkbmap-Aufruf auch. Ich habe auch versucht, den model- und den variant-Zweig komplett auszulassen, doch der Fehler bleibt. Nehme ich aber das alte de-Layout, funzt alles problemlos.
 
Nach einigen Versuchen steht fest: Es ist die Layout-Datei selbst (und nicht eine base.xml oder sonstige Datei), die Probleme macht. Und die habe ich das letzte Mal lange vor dem Update verändert.

Hier die Fragen: Hat sich in openSuSE 12.1 die Syntak für XKB-Layout-Dateien geändert? Und: Gibt es für XKB-Files einen Debugger, der Syntaxfehler aufdeckt?

Code:
default
xkb_symbols "basic" {

    include "latin(type4)"

    name[Group1]="Germany (with Polish characters)";

    key <AE02>	{ [         2,   quotedbl,  twosuperior,    oneeighth ]	};
    key <AE03>	{ [         3,    section, threesuperior,    sterling ]	};
    key <AE04>	{ [         4,     dollar,   onequarter,     currency ]	};

    key <AE11> {type[Group1]="FOUR_LEVEL_PLUS_LOCK",  symbols[Group1]=
                  [ssharp, question, backslash, questiondown, 0x1001E9E ]};
// The unicode capital letter sharp s U+1E9E is transformed to "SS"
// to match the rules for capitalizing sharp s in german.
// If the capital sharp s is needed, delete the line
// starting with <U1E9C> from /usr/share/X11/locale/iso8859-15/Compose.
// If both doubled S and capital sharp s are needed, use  0x1001E9E
// for capital sharp s and some free unicode codepoint like 0x1001E9C
// for doubled S. Don`t forget to change this in the Compose file, too.

    key <AE12>	{ [dead_acute, dead_grave, dead_cedilla,  dead_ogonek ]	};

    key <AD02>	{ [         w,          W,      aring,      Aring ]	};
    key <AD03>	{ [         e,          E,      eogonek,      Eogonek ]	};
    key <AD06>	{ [         z,          Z,    zabovedot,    Zabovedot ]	};
    key <AD07>	{ [         u,          U,    zacute,    Zacute ]	};
    key <AD09>	{ [         o,          O, oacute, Oacute ] };
    key <AD11>	{ [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
    key <AD12>	{ [      plus,   asterisk,   dead_tilde,  dead_macron ]	};

    key <AC01>  { [         a,          A,                aogonek,     Agonek    ] };
    key <AC02>  { [         s,          S,                sacute,     Sacute    ] };
    key <AC07>  { [         j,          J,        dead_belowdot, dead_abovedot   ] };
    key <AC09>  { [         l,          L,        lstroke, Lstroke   ] };
    key <AC10>	{ [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };̣
    key <AC11>	{ [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
    key <TLDE>	{ [dead_circumflex,    degree,      notsign,     EuroSign ]	};

    key <BKSL>	{ [numbersign, apostrophe, rightsinglequotemark,   dead_breve ]	};
    key <AB01>	{ [         y,          Y,       guillemotleft,    U203A 	] };
    key <AB02>	{ [         x,          X,        guillemotright,    U2039 	] };
    key <AB03>	{ [         c,          C,        cacute,    Cacute 	] };
    key <AB04>	{ [         v,          V,   leftdoublequotemark, leftsinglequotemark ]	};
    key <AB05>	{ [         b,          B,  rightdoublequotemark, rightsinglequotemark ] };
    key <AB06>	{ [         n,          N, nacute, Nacute ]	};    
    key <AB08>  { [     comma,  semicolon,       periodcentered,     multiply	] };
    key <AB09>	{ [    period,      colon,                U2026,     division 	] };
    key <AB10>	{ [     minus, underscore,               endash,     emdash	] };

    include "kpdl(comma)"
    include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "nodeadkeys" {

    // modify the basic German layout to not have any dead keys

    include "dep(basic)"
    name[Group1]="Germany (with Polish characters) - Eliminate dead keys";

    key <TLDE>	{ [asciicircum,    degree,      notsign,     EuroSign ]	};
    key <AE12>	{ [     acute,      grave,      cedilla,      cedilla ]	};
    key <AD11>	{ [udiaeresis, Udiaeresis,    diaeresis,    diaeresis ]	};
    key <AD12>	{ [      plus,   asterisk,   asciitilde,       macron ]	};
    key <AC10>	{ [odiaeresis, Odiaeresis,  doubleacute,     belowdot ]	};
    key <AC11>	{ [adiaeresis, Adiaeresis,  asciicircum,  asciicircum ]	};
    key <BKSL>	{ [numbersign, apostrophe,        grave,        grave ]	};
    key <AB10>	{ [     minus, underscore, dead_belowdot,    abovedot ]	};
};
 
xkbcomp ist ein Tool für die Zusammenstellung von Definitionen für XKB. Einen Debugger gibt es meines Wissens her nicht.
 
Danke für den Tipp!! In der Tat lässt sich xkbcomp als Debugger «missbrauchen». In meinem Fall liefert er prompt einen Fehler:

Code:
veteran:/usr/share/X11/xkb/symbols # xkbcomp -w 10 dep                                                                                                       
syntax error: line 42 of dep
last scanned symbol is: dead_belowdot
Errors encountered in dep; not compiled.

In Zeile 42 war mit gedit kein Syntaxfehler feststellbar. Ich öffne das Glumpert mit pico (!) auf einem VT420-Terminal (!!) — und siehe da: ein Steuerzeichen am Ende der Codezeile, das der gedit nicht angezeigt hat. Steuerzeichen raus, xkbcomp neu gestartet — und schon funzt alles! :) Danke Euch! :D
 
Oben