Sonntag, 2. Dezember 2012

Debian Tastatur-Layout ändern


Zum Programmieren nutze ich gerne das us-Layout, da dort die häufig genutzten Tasten (bspw. [], {}, ;) einfach besser liegen. Da ich aber auch viel auf deutsch schreibe und ich nicht jedesmal "ae" statt "ä", "ue" statt "ü" usw. schreiben kann, benötige ich auch das deutsche Layout. 
Vor kurzem habe ich von einem Kollegen erfahren, dass es eine internationale Variante des us-Layouts gibt. Diese beinhaltet unter anderem auch die Umlaute. Deswegen möchte ich an dieser Stelle einen Methode zeigen mit der die beiden Layouts us-international und de verfügbar sind und man zwischen ihnen wechseln kann.

Um mehrere Tastatur-Layouts unter Debian verwenden zu können gibt es verschiedene Möglichkeiten. Ich möchte hier drei vorstellen. Für die erste werden super user Rechte benötigt. Die zweite Variante ist temporär und muss nach einem Neustart wieder aktiviert werden. Die letzte Variante ist abhängig vom Nutzer der gerade angemeldet ist. Zum Schluss wird noch das Problem mit den deadkeys im us-international Layout beseitigt.

Erste Variante (su)

Eine Möglichkeit besteht darin die Datei /etc/default/keyboard zu verändern.
Dazu einfach mit sudo rechten in einem Editor öffnen. Die Datei sieht ungefähr so aus:

# Check /usr/share/doc/keyboard-configuration/README.Debian for # documentation on what to do after having modified this file. # The following variables describe your keyboard and can have the same # values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options # in /etc/X11/xorg.conf. XKBMODEL="pc105" XKBLAYOUT="us,de" XKBVARIANT="intl," XKBOPTIONS="grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll" # If you don't want to use the XKB layout on the console, you can # specify an alternative keymap. Make sure it will be accessible # before /usr is mounted. # KMAP=/etc/console-setup/defkeymap.kmap.gz

XKBMODEL Das Tastaturmodell. Mit sudo dpkg-reconfigure keyboard-configuration kann man das Modell auswählen. Meine Tastatur ist leider nicht dabei weshalb ich wohl bei mir pc105 zu stehen hab.
XKBLAYOUT Einstellen des Layouts. Dabei sind mehrere Einstellungen möglich. Diese müssen lediglich durch ein Komma getrennt werden. Bei sind sind die us und die de Layouts.
XKBVARIANT hier sind verschiedene Varianten möglich. das intl steht für das internationale Layout. Dem deutschen Layout hätte ich auch noch eine spezielle Variante geben können. Dadurch dass das intl an erster Stelle steht ist es aber für die us Version gedacht.

XKBOPTIONS extra Optionen. In dem Fall kann man mittels Caps-Lock zwischen den beiden Layouts hin und her wechseln. Sobald ein Layout ausgewählt ist leuchtet die Scroll led auf der Tastatur (bei mir ist es das deutsche Layout). terminate beendet alles und loggt einen aus. Es ist daher mit Vorsicht zu genießen, da nicht gespeichert wird.

Um die Einstellungen so zu übernehmen, einfach folgendes in der Konsole eingeben: 
udevadm trigger --subsystem-match=input --action=change


Die zweite Variante (temporär)

Die zweite ist temporär. In der Konsole einfach folgenden Befehl eingeben:
setxkbmap -layout us,de -variant intl, -option grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll
Nach einem Neustart muss man diese Zeile wieder in der Konsole eingeben.

Die dritte Variante (Nutzer)

Diese Variante ist vom Nutzer abhängig. Ich habe momentan crunchbang drauf deshalb werde ich es nur an der Openbox zeigen können. 
~/.config/openbox/autostart
dort einfach am ende folgende Zeile eingeben.
setxkbmap -layout us,de -variant intl, -option grp:caps_toggle,terminate:ctrl_alt_bksp,grp_led:scroll

(sleep 1s && fbxkb) & in der selben Datei emgölicht das automatische starten des layout-switchers im systray rechts oben.


Probleme

Ein Problem beim internationalen Layout ist, dass einige Zeichen nur als deadkeys erreichbar sind oder durch drücken von [alt-gr]. So ist es, gegenüber des us Layouts, nicht mehr möglich " durch [shift]+' zu erreichen. Es muss zusätzlich noch [alt-gr] gedrückt werden. Was mir beim programmieren wieder zu umständlich ist.
Eine Liste der deadkeys und das generelle Layout ist unter us international keyboard explained zu finden.
Eine  des Problems habe ich hier gefunden. Mikel schreibt dort, dass die Unterschiede zwischen us und us-international unter /usr/share/X11/xkb/symbols/us zu finden sind. 
Die Tasten die mich stören sind schnell gefunden:
key { [dead_grave, dead_tilde,         grave,       asciitilde ] };
key { [    6, dead_circumflex,    onequarter,      asciicircum ] };
key { [dead_acute, dead_diaeresis, apostrophe,        quotedbl ] };

Es sind jeweil 4 Tastenkombinationen belegt: Einfach, [shift], [alt-gr], [alt-gr]+[shift]
Man kann erkennen das sie in der ersten Belegung nur deadkeys sind. bzw. bei der 6 der deadkey durch [shift] erreicht wird. Es ist das ^.
Also vorher ein Backup erstellen:
sudo cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/us.bpk
und zum Beispiel mit sudo vim /usr/share/X11/xkb/symbols/us editieren.

key { [grave, asciitilde,         dead_grave,       dead_asciitilde ] };
key { [    6, circumflex,    onequarter,      asciicircum ] };
key { [apostrophe,        quotedbl, dead_acute, dead_diaeresis ] };


Somit sind die deadkeys nach hinten gerutscht und die Tasten sind dort wo sie beim normalen us-Layout zu finden auch sind.

Hier ein paar Referenzen die mir geholfen haben es so einzustellen wie ich es brauche:
crunchbang forum zum Thema

Keine Kommentare:

Kommentar veröffentlichen