Login
Newsletter
Werbung

Do, 14. November 2019, 15:00

X.org, CapsLock und die Hyper-Taste in Emacs

Einspeisung der Änderung

Die Datei ~/.Xmodmap ist nunmehr mithilfe von xmodmap(1) in die Konfiguration des laufenden X-Servers einzuspeisen:

$ xmodmap ~/.Xmodmap

Im Erfolgsfalle gibt es keine Ausgabe. Durch erneutes Ausführen von xmodmap(1) lässt sich das Ergebnis prüfen, welches so aussehen sollte:

$ xmodmap
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_L (0x42),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Hyper_L löst damit ausschließlich den Modifikator mod3 aus und es gibt kein Keysym mehr, welches die bisherige Feststelltastenfunktion bewirkt. Hyper_L wird zweimal für mod3 aufgeführt, weil es zwei unterschiedliche Keycodes sind, die zu Hyper_L führen können: die umgeänderte Feststelltaste (0x42) und die auf modernen Tastaturen nicht vorhandene »echte« Hyper-Taste.

Die von xmodmap(1) durchgeführten Änderungen sind nicht dauerhaft, d.h. die Datei ~/.Xmodmap muss bei jedem Start des X-Servers erneut eingespeist werden. Wie das geschieht, hängt von der genutzten Desktop-Umgebung ab. Wer auf eine Desktop-Umgebung verzichtet und X.org manuell per startx(1) startet, fügt den Befehl in die Datei ~/.xinitrc ein. Hat man diese Datei aus der mit X.org mitgelieferten Beispieldatei erzeugt, so findet man darin die folgenden für diese Zwecke ausreichenden Befehle:

usermodmap=$HOME/.Xmodmap
# ...
if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

Es gibt allerdings noch ein bisher unterschlagenes Problem. Das Programm setxkbmap(1) überschreibt bei seiner Ausführung jegliche Änderungen am Tastatur-Layout vollständig mit den Standardwerten aus dem gewählten Tastatur-Layout. Das ist deshalb relevant, weil es in europäischen Ländern nötig ist, ein anderes als das von X.org standardmäßig genutzte U.S.-amerikanische Tastatur-Layout einzustellen. Dies erreicht man aber mithilfe von setxkbmap(1):

$ setxkbmap -layout de

oder durch einen Eintrag in /etc/X11/xorg.conf.d/10-evdev.conf:

Section "InputClass"
	Identifier "keyboard-all"
	Driver "evdev"
	Option "XkbLayout" "de"
	MatchIsKeyboard "On"
EndSection

Letztere Methode steht in unbehebbaren Konflikt mit der hier vorgeschlagenen Verwendung von xmodmap(1) in der ~/.xinitrc, weil die Optionen aus dem Verzeichnis /etc/X11/xorg.conf.d nach Ausführung der ~/.xinitrc ausgewertet werden und deshalb die in der ~/.xinitrc vorgenommenen Änderungen am Tastatur-Layout überschreiben. Das Ergebnis ist ein Reset aller mit xmodmap(1) vorgenommenen Änderungen und vermeintliche Wirkungslosigkeit des Befehls in der ~/.xinitrc (Xfce-Nutzer sollten beachten, dass es einen Bug im xfce4-xkb-plugin gibt, der bei Verwendung dieses Plugins zur Überschreibung des Tastatur-Layouts führt). Daher muss bei Anwendung der hier vorgeschlagenen Konfiguration zwingend das deutsche Tastatur-Layout mit setxkbmap(1) nach der ersten Methode eingestellt werden. Es ist außerdem darauf zu achten, dass setxkbmap(1) vor xmodmap(1) ausgeführt wird, indem man in der ~/.xinitrc die Befehle in folgender Reihenfolge unterbringt:

setxkbmap -layout de
xmodmap ~/.Xmodmap

Setzt man die Beispielkonfiguration von X.org ein, ist setxkbmap(1) entsprechend vor dem oben gezeigten if-Ausdruck einzufügen.

Kommentare (Insgesamt: 16 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung