Hallöchen alle zusammen 🙂
Ich habe mitunter ein Problem, welches scheinbar viele zum Verzweifeln bringt. Da jedoch die große Suche im Internet als auch hier im Forum nur mehr oder weniger zu Ergebnissen führt will/muss ich dieses Thema noch einmal aufrollen (vorweg, evdev ist mir bereits bekannt, allerdings funktioniert auch diese Lösung derzeit noch nicht zufrieden stellend)
Ich versuche mal meinen Leidensweg zu schildern und die Probleme, die damit verbunden sind. Ich hoffe, daß dieser Thread sich in der Art und Weise endet, daß für alle eine Lösung dabei ist und wir ggf. den Eintrag im Wiki etwas überarbeiten können. Falls ihr hier Fehler drin entdeckt, bitte korrigiert mich, okay?
Mein ursprüngliches Problem:
ich habe in meinem ibook ein Keyboard welches dem de-Layout ziemlich ähnlich ist, mit Ausnahme von ein paar Kleinigkeiten. Zum Beispiel gibt es das Pipe Symbol "|" nicht auf der Tastatur. Und die Taste, auf der dieses normaler Weise liegen sollte gibt es nicht. Dafür liegt eine Taste etwas falsch beschriftet gleich links neben der 1 (wo normaler Weise das Grad Symbol als auch das Hochdach zu finden ist). Da ich also mit einem de (oder auch einem de_latin1 oder letztendlich einem de_latin1_nodeadkeys) nicht zu einem befriedigendem Ergebnis gekommen bin musste ich mir etwas einfallen lassen. Das Thema lautet "keymaps" welche man sich selbst schreiben kann.
man keymaps
bringt einem eine hübsche Seite für dieses Thema und man kann sich gut einlesen und ggf. selbst etwas an seinem Tastatur Layout herum fummeln.
(0.) der Weg in die Konsole
Im Init 3 (also auf der normalen Konsole) bekomme ich dann mein gewünschtes Layout (de-ibook) mittels der rc.conf ziemlich am Anfang folgenden Wert eintrage:
LOCALE = "de_DE.UTF8"
KEYMAP = "de-ibook"
dies beschert mir meine funktionierende Tastatur mit meinem gewünschtem Layout zumindest erst einmal in der Konsole. Nun wird es ernst und ich muss mich, wie viele andere auch, auf die grafische Oberfläche stürzen. Hier sind mir nun folgende Möglichkeiten über den Weg gelaufen
(1.) der ursprüngliche (alte) Weg
über die xorg.conf. Dies bin ich noch gewohnt bzw. so habe ich damals noch Linux kennen gelernt. Alles was man über X einstellen wollte lief über die bekannte xorg.conf
Section "ServerLayout"
InputDevice "iBook Keyboard"
EndSection
Section "InputDevice"
Identifier "iBook Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "de-ibook"
Option "XkbOptions" "altwin:ctrl_win"
EndSection
Dies war die ürsprüngliche Methode allerdings muss ich gestehen, daß nicht einmal diese bei meinem Problem geholfen hatte. Sollte aber im ursprünglichen den meisten geholfen haben (mit dem Unterschied, daß sie hierbei nicht "de_ibook" sondern "de_latin1_nodeadkeys" oder dergleichen eingetragen haben.
hier kam nun noch der Hinweis, daß **kbd** nicht mehr der richtige Treiber sei, sondern nun durch **keyboard** zu ersetzen währe
(2.) xorg - wir bescheissen mal nachträglich
Hinzu kam weiterhin noch die Möglichkeit über den Destop-Manager eine spezielles Tastatur Layout einzustellen. Woher dieser allerdings die in seiner Liste befindlichen Einträge bezieht ist mir bis heute ein Rätsel. So ist es zum Beispiel möglich unter KDE in den Systemeinstellungen bei der Tastatur einfach das Layout zu ändern (z.B.: auf de_DE) und somit wurde der ursprüngliche Eintrag in der xorg.conf überrumpelt und (scheinbar) schlichtweg ignoriert.
Nun kam durch die Menge an updates bei einigen das Problem hinzu, welches nun dazu führte, daß die erste Möglichkeit (teilweise sogar die zweite) nicht mehr funktionierte. Dieses ist bei den meisten (und vermutlich auch bei mir) das derzeitige Problem.
(3.) evdev
Dies ist der derzeitige Stand der Dinge. Als Tastaturtreiber wird entweder in der xorg.conf statt des alten "kbd" nun "evdev" eingetragen oder aber, wie es mittlerweile der Fall zu sein scheint, trifft dies standardmäßig zu. Um seinen Tastaturlayout mittels evdev einstellen zu können benötigt man als erstes das Paket xf86-input-evdev, welches wiederum von hal abhängig ist. Also sollten beide installiert sein (wie ist mittlweile wunderschön im
wiki unter evdev nachzulesen.
Wenn also sowhl hal läuft als auch xf86-input-evdev installiert ist (ggf. muss man hal neu starten, nachdem man xf86-input-evdev installiert hat) macht man sich auf die Suche nach einer Konfigurationsdatei für evdev. Hier gibt es bereits eine vorgefertigte, welche man sich nur an geeignete Stelle kopieren muss:
cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy/10-keymap.fdi
und dann muss man diese editieren (ich nutze vi ... bitte keine Schläge)
vi /etc/hal/fdi/policy/10-keymap.fdi
um dann folgende Stellen für sich selbst zu ändern
<merge key="input.xkb.layout" type="string">de</merge>
<merge key="input.xkb.variant" type="string">nodeadkeys</merge>
dies sollte den meisten heute bereits helfen. Der Vorteil von evdev wurde in etwa folgender maßen beschrieben. Hal registriert jedes Gerät welches an den Rechner angestöpselt wird und vergibt eine UUID (kennen bestimmt die meisten bereits aus der fstab). Mit dieser UUID ist jedes Gerät eindeutig identifizierbar (innerhalb des Rechners).
Bei den Platten hatte das den Vorteil, daß falls ich mal die Reihenfolge verdreht haben sollte und plötzlich aus sda1, sda2 und sda3 ein sdb1, sdb2 und sdb3 wurde, dann hatte das schwerwiegende Folgen, sofern mit diesen Bezeichnungen in der fstab gehandelt wurde. Stand nun allerdings die UUID dort konnten sich die Bezeichnungen ändern wie sie wollten, es wurde immer wieder dort hin gemountet, wo sie auch eingetragen waren (Hinweis: die UUID ändert sich, sobald man an der Partitionstabelle herumfuhrwerkt).
Das gleiche ist nun mit den Keyboards der Fall. Es kann ja sein, daß ich unterschiedliche Keyboards nutze (z.B.: mein Notebook an der Dockingstation) und das diese ggf. auch noch unterschiedliche layouts benötigen. Evdev soll in der Lage sein zu ermitteln, welche Tastatur angehängt ist und kann dann entscheiden, welches Layout genutzt werden soll.
Jedwede Änderung an der /etc/hal/fdi/policy/10-keymap.fdi wirken sich erst auf das System aus, wenn hal neu gestartet wurde (bisher ist wohl hal noch nicht in der Lage, diese on-the-fly zu erkennen und auch zu nutzen)
(4.) evdev - wir bescheissen mal nachträglich
Alternativ wurde nun noch an vielen Stellen vorgeschlagen, daß man dieses Vorgehen durch evdev abschalten kann indem man in der xorg.conf folgendes hinzufügt:
Section "ServerFlags"
Option "AutoAddDevices" "False"
Option "AutoEnableDevices" "False"
EndSection
Nun sollte wieder alles beim alten sein. Allerdings wird meist darauf hingewiesen, daß dies nur in Ausnahmefällen genutzt werden sollte und man sich doch lieber die neuen Techniken anvertraut, denn wer weiß, obs die xorg.conf nicht irgendwann einmal nicht mehr gibt 😉
(5.) setxkbmap
So wie es in der Konsole keymaps gibt (Bsp.: de_latin1.map.gz) gibt es diese auch unter der grafischen Oberfläche, allerdings scheinen sich diese zumindest im Schreibstil geändert zu haben. Ein simples
setxkbmap de
unter der grafischen Oberfläche bringt uns zumindest erst einmal temporär eine deutsche Tastatur. Allerdings ist man auch hier wieder einmal an die vorgegebenen Layouts gebunden und hilft mir nun leider auch nicht weiter.
(6.) xfree86
Durch meine Suche nach ibook g3 keymaps habe ich einen interessanten Beitrag von Yellow Dog Linux über die
AltGr Taste unter X gefunden. Laut denen nutzt man die bereits bestehenden keymaps (z.B. de-latin1-nodeadkeys) und editiert die Datei /usr/share/X11/xkb/keycodes/xfree86 (im Tutorial von YDL lag sie woanders). Man ändert in dieser die bestehende Nummer hinter <RALT> von 113 in 115 und kommentiert die Belegung der 115 einfach durch zwei Slashes aus.
<RALT> = 115
//(LWIN) = 115
dies führt dazu, daß die Apfel-Taste nun als AltGr fungiert.
Folgende Phänomäne sind mir nun weiterhin aufgefallen (obgleich die oben genannten Lösungswege theoretisch funktionieren sollten.
- ich nutzte bis vor kurzem Variante 4, leider jedoch mit dem Ergebnis, daß Meta-Key Redefinitionen nicht unter X anerkannt wurden (wird unten nochmal beschrieben)
- heute (nach einem update) habe ich unter fvwm, meinem minimalistischstem Desktop-Manager, indem NICHTS weiter läuft immer noch meine rekonfigurierte Tastatur (ohne die Meta-Taste), unter Xfce4 hingegen irgend etwas abstruses (drücke ich die Leertaste will sich das derzeit laufende Programm beenden)
mein grundsätzliches Problem
Da ich mit evdev auf keinen grünen Zweig gekommen bin habe ich mich wieder auf den alten Weg (quasi Punkt 4). Dies brachte mir den Vorteil, daß unter X zwar meine Tastaturbelegung nun so aussah, wie ich sie haben wollte, allerdings genau 1 Taste keine Änderung erfahren hat, die ALT-Gr Taste. Ich habe auf meinem Keyboard eine Taste rechts neben Space welche bei mir im ursprünglichem Sinne die Funktion des Enters hat (oh wie wunderte ich mich, daß Enter und Return zwei unterschiedliche Signale liefern). Diese hab ich mangels einer ALT-Gr durch meine Keymap einfach umfunktioniert zu einer Alt-Gr taste um so wichtige Tasten wie [,],|,@ und dergleichen zu erreichen. Diese Meta-Taste scheint allerdings von X komplett ignoriert zu werden. Des weiteren habe ich unter X das Problem, daß seither die Kombination Strg+Alt+F1 mich nicht auf meine Konsole bringt.
Nun nutze ich leider xfce (auf meinem 300 MHz Rechner ist mir gnome und KDE doch etwas zu groß). Leider scheint es hier unter xface jedoch nicht die Möglichkeit zu geben, das Tastaturlayout vom Desktop-Manager selbst festlegen zu lassen. Warum auch immer. Und selbst wenn das ginge habe ich noch nie alle keyboard-Layouts gefunden sondern meist nur 2 oder 3 ... woher beziehen die Desktopmanager ihre Tastaturlayouts?
und nun, da ich so viel gefaselt habe endlich meine Frage zum Schluss:
Kann mir nun jemand mal erklären, wie genau das mit der Tastatur nun unter X und unter Linux funktioniert?
Zusammengefasst:
- global unter der Konsole wirds in der rc.conf eingestellt
- in der Konsole kann ich die keymap ändern indem ich meine eigene foo.map.gz erstelle (nach "man keymaps")
- unter X sollte es mit evdev laufen (siehe wiki und meiner kurzen Erläuterung)
- wie kann ich unter X meine keymap ändern? speziell die Meta-Tasten?
mfg Maddin
P.S.: Entschuldigt bitte diesen elendig langen Post