Schlagwort-Archive: mod4

Neo

Da mir immer mal die Sehnen der linken Hand vom vielen PC-Tippen Beschwerden machen habe ich mich ein bisschen mit ergonomischen Tastaturen und dem Tastaturlayout NEO befasst.

Nun versuche ich, unter Ubuntu 12.04 eine TypeMatrix-Tastatur mit dem Neo2-Layout zu „verheiraten“, das mit Ubuntu mitgeliefert wird und leicht zu aktivieren ist. Nur leider funktioniert doch einiges nicht so wie es soll, z.B. tut die angebliche MOD4-Taste nicht das was sie soll.

Daher habe ich mich in den FAQs und Anleitungen des Neo-Wiki umgeschaut und herausgefunden, dass man die Tastaturbelegung von XKB (xkbmap) ersetzen kann und sollte, wenn sie fehlerhaft ist, so wie bei mir. Wie das geht ist prinzipiell gut beschrieben, aber um ganz sicher zu gehen habe ich erstmal geschaut, ob denn meine Version der xkbmap überhaupt abweicht.

Mein Vorgehen:

  • Herunterladen der korrekten Dateien, wie beschrieben:
    wget http://neo-layout.org/xkb.tgz
  • Entpacken in einem separaten Verzeichnis (z.B. im eigenen Home, einfach ein neues Verzeichnis anlegen und dort entpacken)
    cd
    mkdir neo
    mv xkb.tgz neo/
    cd neo
    tar xfz xkb.tgz
    cd xkb
    find . -type f
    ./symbols/shift
    ./symbols/de
    ./symbols/level3
    ./symbols/level5
    ./types/level5
    ./compat/caps
    ./compat/misc
    ./compat/level5
    ./rules/base.xml
    ./rules/evdev.xml
    ./rules/evdev
    ./rules/base
  • Dann habe ich mir angeschaut, wie die Dateien heißen müssen, die darin enthalten sind, und habe z.B. die Datei level5 gefunden.
  • Mit locate habe ich gesucht, ob und wo auf meinem Rechner diese Datei liegt, um überhaupt herauszufinden, wo die Dateien für xkb liegen (das kann man auch anders machen, aber das hier ist eine Möglichkeit):
    locate level5
    /usr/share/X11/xkb/compat/level5
    /usr/share/X11/xkb/symbols/level5
    /usr/share/X11/xkb/types/level5
  • Aha!! „Wurzelverzeichnis“ für die xkbmap ist /usr/share/X11/xkb.
    Ein…
    cd /usr/share/X11/xkb
    …und:
    find . -type f
    …zeigt mir, dass es noch viel mehr Dateien gibt, die xkb dort liegen hat.
  • Nun kann ich also die Dateien vergleichen, und herausfinden, ob die denn überhaupt abweichen!
    cd -
    for f in $files
    do
    usrf=`echo $f | sed 's/\./\/usr\/share\/X11\/xkb/'`;
    diff $usrf $f
    done | more

    Das Ergebnis sieht ungefähr so aus:
    253c253
    < key.type[Group1] = "EIGHT_LEVEL"; --- > key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
    281c281
    < key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; --- > key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
    296c296
    < key.type[Group1] = "EIGHT_LEVEL"; --- > key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
    301c301
    < key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; --- > key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
    322c322
    < key { [ z, Z, grave, Greek_zeta, Undo, Undo,
    U2124, NoSymbol ] };
    ---
    > key { [ z, Z, grave, Greek_zeta, Undo, Redo,
    U2124, NoSymbol ] };
    326c326
    < key.type[Group1] = "EIGHT_LEVEL"; --- > key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";
    329c329
    < key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; --- > key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK";
    331c331
    < key.type[Group1] = "EIGHT_LEVEL"; --- > key.type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK";

    usw. Damit habe ich also sicher feststellen können, dass meine Dateien nicht aktuell sind!
  • Nun kann ich voller Vertrauen ;-) der Anleitung weiter folgen bzw. einen Zwischenschritt einfügen, nämlich die alten xkbmap-Dateien sichern (Schritt 1 der Anleitung im Wiki sichert mehr Dateien als in meiner heruntergeladenen Version xkb.tgz enthalten sind – wir nehmen’s hier also wieder mal ganz genau!).

    Dateien umbenennen und sichern:
    for f in $files
    do
    usrf=`echo $f | sed 's/\./\/usr\/share\/X11\/xkb/'`
    sudo cp $usrf ${usrf}.orig
    done
    tar cvfz xkb-orig.tgz /usr/share/X11/xkb/*/*.orig

  • Jetzt können wir die heruntergeladenen Dateien drüber kopieren:
    for f in `find . -type f`; do newf=`echo $f | sed 's/\./\/usr\/share\/X11\/xkb/'`; sudo cp $f $newf; done
  • Nun prüfen wir nochmal das Ergebnis – gibt’s noch Differenzen?
    for f in $files
    do
    usrf=`echo $f | sed 's/\./\/usr\/share\/X11\/xkb/'`;
    diff $usrf $f
    done | more

    Es sollte nun nichts mehr ausgegeben werden – und damit sind wir fertig.

Nach einem Neustart des Rechners funktioniert nun auch neo2 korrekt und die MOD4-Taste tut was sie soll!