Wiki:Neo unter Linux einrichten/xkbmap

Neo 2 systemweit verfügbar machen (für alle Benutzer)

Neo ist schon dabei

Seit ca. zwei Jahren ist Neo bei jeder Linux-Distribution dabei. Allerdings bisher nur die ganz alte Version 1 oder „2.0rc1“. Um diese zu aktivieren, schaut man sich am Besten die Beispiele zur Aktivierung an.

Aktuelle Version von Neo 2 (root-Rechte erforderlich)

Wenn man schon ein Linux-System mit Neo Version 1 bzw. 2.0rc1 hat, dann kann man die entsprechende Dateien einfach durch die aktuellen aus dem SVN ersetzen. Anleitung:

  1. Es ist vielleicht ganz ratsam, vorher noch eine Sicherheitskopie zu erstellen – allerdings bekommt man die Originaldateien auch wieder irgendwo im Internet oder durch De- und Reinstallation des Pakets (heißt meist xkeyboard-config oder ähnlich), das die Dateien enthält:
    tar -C /usr/share/X11/ -czf xkb-sicherung.tgz xkb/symbols/{de,level3,level5,shift} xkb/rules/{base,base.xml,evdev,evdev.xml} xkb/types/level5
    
  2. Die Datei http://neo-layout.org/xkb.tgz herunter laden, zum Beispiel so:
    wget http://neo-layout.org/xkb.tgz
    
  3. Die heruntergeladene Datei an der Stelle /usr/share/X11/ entpacken (dabei werden vier alte Dateien, die in Schritt 1 gesichert wurden, überschrieben). Dies geht zum Beispiel in der Konsole/Terminal so:
    # Möglichkeit 1 (funktioniert überall):
    su -c 'tar -C /usr/share/X11/ -xzf xkb.tgz'     # root-Passwort benötigt
    
    # Möglichkeit 2 (funktioniert bei Ubuntu und ein paar wenigen anderen Systemen):
    sudo tar -C /usr/share/X11/ -xzf xkb.tgz
    

Eine fehlerfreie Version (siehe #141), die weniger aktuell ist, kann so heruntergeladen und installiert werden (beides in einem Schritt):

# Möglichkeit 1 (funktioniert überall):
su -c 'wget http://wiki.neo-layout.org/export/1802/linux/X/de -O /usr/share/X11/xkb/symbols/de'

# Möglichkeit 2 (funktioniert bei Ubuntu und ein paar wenigen anderen Systemen):
sudo wget http://wiki.neo-layout.org/export/1802/linux/X/de -O /usr/share/X11/xkb/symbols/de

Für ältere Systeme (z.B Ubuntu 8.04) kann man dieVersion von Frank Stähr verwenden.

Für alle Benutzer (bereits bei der Anmeldung) Neo einstellen

Wer nicht einem der vielen einfachen Beispiele für eine systemweite (schon bei der Anmeldung und Passworteingabe) Aktivierung von Neo folgen will oder kann (weil das benutzte System zu alt ist), kann Neo auch manuell aktivieren:

vor X.org 7.3 (Sept. 2007): xorg.conf ändern

Am schönsten ist es, wenn man zwischen Neo und QWERTZ mittels Drücken der Rollentaste (Scroll-Lock) wechseln kann. Dazu trägt man folgendes in seine /etc/X11/xorg.conf ein:

Section "InputDevice"
        Identifier  "Keyboard0"                  # heißt manchmal anders, hier nur ein Beispiel
        Driver      "kbd"
        Option      "XkbModel" "pc105"           # es gibt manchmal auch Tastaturen mit nur 104 Tasten
        Option      "XkbLayout" "de,de"          # zwei verschiedene Belegungen, aber beide sind Varianten der de-Belegung
        Option      "XkbVariant" "basic,neo"     # QWERTZ als Standard, Neo als zweite Belegung
        Option      "XkbOptions" "grp:sclk_toggle,grp_led:scroll" 
                        # Drücken von Scroll-Lock wechselt zwischen neo und qwertz, Scroll-LED zeigt Wechsel an
EndSection

Man sollte, falls man den betreffenden Rechner nicht alleine nutzt, die XkbVariant in der Reihenfolge basic,neo (also QWERTZ als Standard, Neo als Zweitbelegung) schreiben, um unbedarften Mitnutzern des Rechners nicht vor den Kopf zu stoßen: „Hä, ich kann mein Passwort nicht eingeben“. Wenn man also Neo schreiben will, drückt man kurz die Rollentaste (Scroll-Lock) und los geht’s mit Neo. Nochmal Rollen und man ist wieder bei QWERTZ.

HAL (X.org 7.3 bis 7.5, X-Server 1.4 bis 1.7): 10-x11-input.fdi erstellen

Ab X.org 7.3 werden Tastatur und Maus nicht mehr nur von /etc/X11/xorg.conf bestimmt, sondern standardmäßig von HAL (Hardware Abstraction Layer). Um gleiche Einstellungen wie in obiger /etc/X11/xorg.conf vorzunehmen erstellt man in /etc/hal/fdi/policy/ (FIXME für andere Distributionen) eine Datei namens 10-x11-input.fdi mit folgendem Inhalt:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
  <match key="info.capabilities" contains="input.keys">
  	<merge key="input.x11_driver" type="string">evdev</merge>
  	<merge key="input.x11_options.XkbModel" type="string">evdev</merge>
  	<merge key="input.x11_options.XkbLayout" type="string">de,de</merge>
  	<merge key="input.x11_options.XkbVariant" type="string">basic,neo</merge>
  	<merge key="input.x11_options.XkbOptions" type="string">grp:sclk_toggle,grp_led:scroll</merge>
  </match>
  </device>
</deviceinfo>

Zum Teil findet man noch Hinweise und Beispiele mit den Keys: input.xkb.model, input.xkb.layout, input.xkb.options, …, diese sind jedoch in der Regel veraltet, siehe hierzu auch den folgenden Abschnitt.

10-x11-input.fdi-Vorlage kopieren

Ich weiß nicht, wie allgemeingültig dies ist, aber bei mir (Debian Lenny) führte Obiges zu qwerty, während dieses Tutorial den rechten Weg wies:

Zunächst eine Vorlage der 10-x11-input.fdi kopieren:

sudo cp /usr/share/doc/hal/examples/10-x11-input.fdi /etc/hal/fdi/policy/

In dieser dem keyboard-Abschnitt Folgendes hinzufügen (dies sollte in Bezug auf input.xkb.model, input.xkb.layout, input.xkb.options, input.x11_options, … den übrigen Zeilen ähneln):

<merge key="input.xkb.layout" type="string">de</merge>
<merge key="input.xkb.variant" type="string">neo</merge>

Das Wechseln mit Rollen sollte mit Folgendem o. Ä. klappen, ist aber ungetestet:

<merge key="input.xkb.layout" type="string">de, de</merge>
<merge key="input.xkb.variant" type="string">basic, neo</merge>
<merge key="input.xkb.options" type="string">grp:sclk_toggle,grp_led:scroll</merge>

Das Resultat sieht dann z. B. wiefolgt aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.mouse">
      <merge key="input.x11_driver" type="string">mouse</merge>
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
    </match>

    <match key="info.capabilities" contains="input.keys">
      <merge key="input.x11_driver" type="string">keyboard</merge>
      <merge key="input.xkb.layout" type="string">de</merge>
      <merge key="input.xkb.variant" type="string">neo</merge>
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
    </match>
  </device>
</deviceinfo>

udev (seit X-Server 1.8, 2010): xorg.conf.d

Da HAL nicht mehr weiterentwickelt wird, wechselt X.org in Zukunft wieder die Konfiguration. Im neuen X-Server, der in X.org 7.6 enthalten ist, wird udev für Device-Hotplugging benutzt. Die Konfiguration ist nicht mehr in xorg.conf, sondern in den Dateien des Verzeichnisses /etc/X11/xorg.conf.d/ enthalten. In einer dieser Dateien (bei openSuse 11.3 z.B. 90-keytable.conf) findet sich ein Eintrag „LocalKeyboard“, den man z.B. wie folgt editieren kann:

Section "InputClass"
	Identifier "LocalKeyboard"
	MatchIsKeyboard "on"
	Option	"XkbRules"	"base"
	Option	"XkbModel"	"evdev"
        Option  "XkbLayout"     "de"
        Option  "XkbVariant"    "neo"                     # Neo-Layout benutzen
        Option  "XkbOptions"    "terminate:ctrl_alt_bksp"
EndSection

Komplexere Layouts kann man auch einstellen, z.B. analog zum Beispiel im Abschnitt xorg.conf.

Für einzelnen Benutzer vorübergehend einstellen

Will man Neo nicht systemweit, sondern nur für einen Benutzer aktivieren, benutzt man folgenden Befehl:

setxkbmap de neo -option

Der Schalter -option dient dazu, schon aktivierte Optionen (z.B. in Gnome), die mit Neo nicht kompatibel sind, zu deaktivieren.

Diese Einstellung kann man für diesen Benutzer auch permanent machen, indem man die Zeile in ~/.profile einträgt.

Will man QWERTZ wieder reaktivieren, tippt man entsprechend

setxkbmap de

Zwischen zwei Layouts umschalten

Unter X kann man bis zu vier Layouts einrichten. Dies kann man mit den grafischen Oberflächen ebenso erreichen wie in der Kommandozeile:

Es können sich aber schnell Inkompatibilitäten ergeben, da X die Layouts nicht richtig voneinander isoliert; siehe die Tickets #174, #175.

QWERTZ als Erstlayout, Neo als Zweitlayout

Um die Funktionalität zu testen, kann folgender Einzeiler benutzt werden:

setxkbmap -layout de,de -variant basic,neo -option -option grp:sclk_toggle -option grp_led:scroll

Dies bewirkt, dass die Tastaturbelegung durch Drücken der Rollen-Taste (Scroll-Lock) zwischen QWERTZ und Neo wechselt. (Dies geht scheinbar nur, wenn Num-Lock nicht aktiviert ist)

Man beachte, dass bei dieser Verwendung unter älteren X-Servern die Ebenen 4 und 6 evtl. nicht verfügbar sind, siehe #174.

Neo als Erstlayout, QWERTZ als Zweitlayout

Prinzipiell läuft dieser Fall analog zum letzten, also per

setxkbmap -layout de,de -variant neo,basic -option -option grp:sclk_toggle -option grp_led:scroll

Hier verhalten sich aber einige Tasten bei QWERTZ wie unter Neo, so die #-Taste (aktiviert die dritte Ebene), die <-Taste (aktiviert die nichtvorhandene 5. Ebene) usw. siehe #175. Mit dem in diesem Ticket angegebenen, etwas komplizierteren Verfahren kann man dieses Problem aber umgehen, sofern es sich störend auswirkt.


Neo-Einrichtung unter Linux
Neo-Einrichtung auf anderen Systemen
Hauptseite

zuletzt geändert vor 7 Jahren Zuletzt geändert am 14.08.2010 11:29:59