Liebe XKB-Neotiker,

wie euch wohlbekannt ist gibt es mit mit den Steuertasten (im geringerem
Maße auch mit dem Zahlenblock) auf Ebene 4 mit diversen Programmen
(z.B. xterm) Schwierigkeiten.  Ich habe in meinem monolithischen
XKB-Treiber¹ einen Weg ausprobiert, der viele Probleme umgeht:

In xkb_compatibility gibt es Regeln der Form:

    interpret 0x110AB04 {
        action= Redirect(key=<RTRN>, clearMods=Mod2+Mod4);
    };

und dazu passend in xkb_symbols

    key <AB04> {
        type= "NEO_A",
        symbols[Group1]= [               p,               P,      asciitilde,   
    0x110AB04,        Greek_pi,        Greek_PI,       0x110AB04 ],

und so weiter.  0x110AB04 ist ein willkürlicher Wert aus einem privaten
Unicode-Bereich.  Anwendungen bekommen diesen Wert nie zu Gesicht.  Wird
Ebene 4 von p gedrückt wird das Event Server-seitig umgebogen, so dass
es Anwendungen vorkommt, als wäre die echte Returntaste (ohne Mod4 und
ohne Mod4-Lock) gedrückt worden.

Analoge Änderungen habe ich für alle Steuerzeichen und KP_-codes auf
Ebene 4 gemacht.  Bis auf drei Fälle kann man immer auf eine reale Taste
umleiten; die Ausnahmen sind die Symbole KP_Decimal, Tab und Undo.  Für
die drei habe ich Pseudo-Tasten eingeführt (also Tasten mit keycodes die
vom Hardwareteiber nie generiert werden) die dann genauso wie die realen
behandelt werden.

Ich glaube, man könnte dieses Schema auch im offiziellen XKB-Treiber
benutzen, natürlich mit einigen Anpassungen (Mod4 wird LevelFive, Mod2
wird NumLock, die Ebenen sind den Levels anders zugeordnet).

Andreas

¹ http://wettstae.home.solnet.ch/neo_ch_de_us.xkb.gz

Antwort per Email an