Xmodmap: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) K →Komplette Xmodmap nach Zielsetzung: taste |
||
Zeile 146: | Zeile 146: | ||
Wie schon durch den Kommentar zu erkennen, sind nun – neben der Standard-Belegungen der Tasten gemäß der auf der Tastatur aufgedruckten Zeichen – folgende Zusatzfunktionen möglich: | Wie schon durch den Kommentar zu erkennen, sind nun – neben der Standard-Belegungen der Tasten gemäß der auf der Tastatur aufgedruckten Zeichen – folgende Zusatzfunktionen möglich: | ||
* AltGr+# → Richtiger Apostroph (’) | * {{taste|AltGr}} + {{taste|<nowiki>#</nowiki>}} → Richtiger Apostroph (’) | ||
* AltGr+Y → Linkes deutsches Anführungszeichen („) | * {{taste|AltGr}} + {{taste|Y}} → Linkes deutsches Anführungszeichen („) | ||
* AltGr+Shift+Y → Linkes einfaches deutsches Anführungszeichen (‚) | * {{taste|AltGr}} + {{taste|Shift}} + {{taste|Y}} → Linkes einfaches deutsches Anführungszeichen (‚) | ||
* AltGr+X → Rechtes deutsches Anführungszeichen (“) | * {{taste|AltGr}} + {{taste|X}} → Rechtes deutsches Anführungszeichen (“) | ||
* AltGr+Shift+X → Rechtes einfaches deutsches Anführungszeichen (‘) | * {{taste|AltGr}} + {{taste|Shift}} + {{taste|X}} → Rechtes einfaches deutsches Anführungszeichen (‘) | ||
* AltGr+. → Auslassungspunkte („Ellipse“: …) | * {{taste|AltGr}} + {{taste|.}} → Auslassungspunkte („Ellipse“: …) | ||
* AltGr+- → Gedankenstrich (–) | * {{taste|AltGr}} + {{taste|-}} → Gedankenstrich (–) | ||
* AltGr+ | * {{taste|AltGr}} + {{taste|space}} → Geschütztes Leerzeichen ( ) | ||
Damit ist es nun möglich, typographisch korrekte Schreibweisen zu verwenden: | Damit ist es nun möglich, typographisch korrekte Schreibweisen zu verwenden: |
Version vom 27. Mai 2013, 05:05 Uhr
Jeder Taste auf einer Tastatur ist Tastatur-Intern ein Code zugeordnet, dieser Code wird dem Betriebssystem beim Tastendruck übergeben, dass dann – je nach Einstellung – das entsprechende Zeichen ausgibt. Der Keycode wird unter Linux vom Kernel verarbeitet, und das entsprechende Zeichen ausgegeben. Es ist also nicht so, dass die Tastatur ein bestimmtes Zeichen erzeugt, sondern sie übergibt lediglich einen Code an das System, das daraus dann mittels einer Tabelle das dazugehörige Zeichen ermittelt.
Unter X funktioniert das ähnlich. Hier wird auf Grundlage der im Kernel verfügbaren Keycode-Tabelle eine eigene Tabelle generiert. In dieser Tabelle wird jedem Keycode ein Keysym zugeordnet, über den definiert wird, was ein Tastendruck auslösen soll. Das Programm, das für diese Zuordnung zuständig ist, heißt Xmodmap, die Ersetzungstabelle wird ebenfalls Xmodmap genannt, und wird üblicher Weise unter „.Xmodmap“ abgelegt.
Bei der Wahl des Tastaturtreibers über Evdev oder direkt in der „xorg.conf“ wird jedem Keycode ein Keysym zugeordnet und von X benutzt. Diese Zuordnung geschieht automatisch und im Normalfall auch zuverlässig. Falls nicht, oder falls man die Zuordnungen anpassen oder um weitere Zuordnungen ergänzen möchte, benutzt man ebenfalls Xmodmap, inklusive einer eigenen Xmodmap-Datei.
Voraussetzungen und Zielsetzung
Es wird in diesem Artikel davon ausgegangen, dass X konfiguriert ist, und funktioniert, und dass die Tastatur ein deutsches Layout hat, sowie ordnungsgemäß erkannt wird. Es ist nicht relevant, ob die Tastatur über Evdev oder „xorg.conf“ konfiguriert wurde. Es ist zu beachten, dass einige Desktop- oder Fenstermanager eventuell eigene Einstellungen mitbringen, die die Einstellungen von Xmodmap überschreiben könnten.
Nach erfolgreicher Konfiguration gemäß diesem Artikel werden mittels AltGR einige typographische „Sonderzeichen“ wie die Ellipse, ein Gedankenstrich, sowie deutsche einfache und doppelte Anführungszeichen zum einfachen Verwenden verfügbar sein. Zudem können die erzeugte Datei sowie das erworbene Wissen als Grundlage für weitere Anpassungen verwendet werden.
Aufbau der Xmodmap
Vom Konzept her können in der Xmodmap je Taste bis zu acht Keysyms definiert werden, wobei vom Kernel nur die ersten sechs Definitionen unsterstützt werden. In der Praxis gliedert sich die Xmodmap also in sieben Teile.
! Dies ist ein Kommentar. keycode NN = keysym1 keysym2 keysym3 keysym4 keysym5 keysym6
Der Teil vor dem Gleichheitszeichen bestimmt, welcher Keycode – hier durch „NN“ repräsentiert – konfiguriert werden soll. Nach dem Gleichzeitszeichen folgen dann die sechs (von acht, s.o) Keysyms. Die Reihenfolge besteht wie folgt.
- die Taste wird alleine gedrückt
- die Taste wird mit Shift gedrückt
- die Taste wird mit Mode_switch gedrückt
- die Taste wird mit Mode_switch und Shift gedrückt
- die Taste wird mit AltGr gedrückt
- die Taste wird mit AltGr und Shift gedrückt
Es müssen nicht immer alle Angaben gesetzt werden, es dürfen aber keine Lücken entstehen. Will man zum Beispiel nur den vierten Keysym setzen, müssen die ersten drei Keysyms ebenfalls gesetzt werden, man kann diese aber mittels „NoSymbol“ praktisch funktionslos machen, so dass ein Tastendruck, der diesem Keysym zugeordnet wird, keine Reaktion verursacht.
Kommentare werden durch ein Ausrufezeichen eingeleitet. Mehrzeilige Kommentare sind nicht möglich. Weitere Funktionen, auf die in diesem Artikel allerdings nicht eingegangen wird, sind zum Beispiel „clear“ für das Entfernen von Tastensignalen wie Shift, Lock, etc., oder das Anpassen und Hinzufügen von Modifikations-Tasten („add <mod>“).
Es müssen beim Erstellen einer eigenen Xmodmap nicht alle verfügbaren Keycodes definiert werden, da Xmodmap substituierend arbeitet, das heißt: Vorhandene Definitionen für Keycodes werden durch jene aus der eigenen Xmodmap ersetzt. Es ist sogar nicht ratsam, alle Definitionen zu ändern, da eventuell beim Anschluss einer neuen Tastatur einige Codes anders sind, und sprichwörtlich „alles im Eimer“ ist.
Keycodes ermitteln
Da die Keycodes der Tastatur üblicherweise nicht auf der Tastatur oder in dessen Handbuch stehen, dem System aber bekannt sind – bzw. abgefragt werden können – ist es nicht zielführend, zu versuchen, durch Recherche herauszufinden zu versuchen, welche Keycodes benutzt werden. Es gibt drei weitverbreitete Möglichkeiten, um an die Keycodes zu kommen.
xev
Das Tool „xev“ zweigt alle Events des X-Servers ab, und gibt die Informationen zu diesen Events in Rohform an der Shell aus, aus der es gestartet wurde. Das Tool gehört zum Standard-Umfang einer X-Installation. Nach dem Start erscheint ein Fenster. Wenn das Fenster den Fokus hat, und man eine Taste drückt, erscheint – hier am Beispiel der Taste „e“, ohne weitere Tasten gedrückt – folgende Ausgabe.
KeyPress event, serial 35, synthetic NO, window 0x1e00001, root 0x8b, subw 0x0, time 14288542, (264,404), root:(1279,503), state 0x10, keycode 26 (keysym 0x65, e), same_screen YES, XLookupString gives 1 bytes: (65) "e" XmbLookupString gives 1 bytes: (65) "e" XFilterEvent returns: False KeyRelease event, serial 35, synthetic NO, window 0x1e00001, root 0x8b, subw 0x0, time 14288614, (264,404), root:(1279,503), state 0x10, keycode 26 (keysym 0x65, e), same_screen YES, XLookupString gives 1 bytes: (65) "e" XFilterEvent returns: False
Es werden also zwei Events vom X-Server erkannt. Das erste Event „KeyPress“ bezieht sich dabei auf den Vorgang „Taste drücken“, das zweite Event „KeyRelease“ bezieht sich dabei auf den Vorgang „Taste loslassen“. Neben diverser, hier in diesem Artikel unwichtigen, Informationen werden – in der jeweils dritten Zeile – der Keycode, sowie der Keysym ausgegeben. Anhand dieser Informationen kann man also ermitteln, dass ein einfacher Druck auf die „E“-Taste der Tastatur dem Keysym „e“ zugeordnet ist, und dass die Taste den Keycode 26 hat.
So kann man nun mit allen Tasten verfahren, die man anpassen möchte.
xkeycaps
XKeyCaps ist ein grafisches Programm, das ein Onscreen-Keyboard darstellt. XKeyCaps ist im „community“-Repository verfügbar, und kann aus diesem ganz normal mittels Pacman installiert werden, danach ist es über „xkeycaps“ aufrufbar.
Beim Starten muss man zuerst die Tastatur auswählen, in der „Vendors“-Spalte, wählt man seinen Hardware-Typen aus, generell ist man mit „PC“ genau richtig. In der „Keyboards“-Spalte muss man seinen Tastaturtypen auswählen. Die deutsche Standard-Tastatur ist „105 key, wide Delete, tall Enter“. Bei „Layouts“ wählt man dann sein Tastaturlayout, im Falle einer deutschen Tastatur „XFree86; German“. Nach einem Klick auf „Ok“ bekommt man eine Tastaturansicht.
Wenn man nun auf seiner Tastatur eine Taste drückt, leuchtet die entsprechende Taste auf der Bildschirmtastatur auf. Zudem werden im oberen Bereich informationen wie der Keycode, die vergebenen Keysyms, sowie eventuell gedrückte Modifier-Keys und der ASCII-Code ausgegeben. Über das Menü links kann man das Programm verlassen, oder ein anderes Tastaturlayout wählen. Über „Type at window“ kann man den Tastaturfokus einem anderen Programm zuweisen.
Über Rechtsklick (Maustaste gedrückt halten) auf eine Taste bekommt man ein Menü, über das man die betreffende Taste manipulieren kann (siehe Todo). Wenn man alle Tasten nach seinen Wünschen konfiguriert hat, klickt man auf „Write Output“, hier hat man die Wahl, entweder alle Tasten, oder nur die geänderten zu speichern, es ist empfohlen, nurdie geänderten Tasten zu speichern.
Es wird nun eine Datei „.xmodmap-hostname“ angelegt. Um diese Xmodmap zu benutzen, ist der Aufruf bei X-Start (siehe Aktivieren der Xmodmap) entsprechend anzupassen.
xmodmap
Die Systemeigene Xmodmap kann ebenfalls ausgelesen, und als Grundlage für die eigene Xmodmap verwendet werden. Dazu bedient man sich des Programms Xmodmap.
xmodmap -pke > zieldatei
Es wird nun die komplette Xmodmap des Systems in „zieldatei“ geschrieben. Wie oben beschrieben heißt diese Datei traditionell „.Xmodmap“, es kann aber jeder beliebige Name verwendet werden. Es ist zu beachten, dass eventuell bereits vorhandene Änderungen an dieser Datei durch eine eigene Xmodmop ebenfalls so zurückgegeben werden.
In der Zieldatei befinden sich nun also alle Keycodes nebst definierter Keysyms. Die Datei ist daher manuell auf das gewünschte zurechtzukürzen.
keycode 26 = e E e E EuroSign EuroSign EuroSign
… zum Beispiel verweist ja wie bereits mit xev ermittelt auf die Taste „E“. Anhand der Keysyms (vor allem der ersten beiden) sollte es recht einfach sein, auf die jeweilige Taste schließen zu können.
Der Mode_switch
Wie bereits erwähnt, werden mit dem Mode_switch der dritte und vierte Keysyms angesprochen. Da der Mode_switch standardmäßig nirgends auf der Tastatur belegt ist, bzw. auf Tasten liegt, die es nicht gibt, müssen wir ihn erst definieren.
Wenn man den Mode_switch jetzt z.B. auf die linke Windows-Taste (Super_L) legen möchte muss man 2 Dinge beachten:
- Super_L ist schon als solches gekennzeichnet
- der keycode muss geändert werden
Das heißt, dass wir nun von „clear“ und „add“ gebrauch machen werden.
1. xmodmap -pke | grep Super 1.1 keycodes aufschreiben/merken, in meinem Fall ist das keycode 133 2. ~/.Xmodmap erstellen oder bearbeiten 2.1 Super_L den neuen keycode zuweisen 2.2 keycode 133 = Mode_switch NoSymbol Mode_switch NoSymbol Mode_switch 3. mod3 besetzen und mod5 anpassen 3.1 clear mod3 3.2 add mod3 = Mode_switch 4.1 clear mod5 4.2 add mod5 = ISO_Level3_Shift
Jetzt können wir - noch etwas anders als weiter unten beschrieben - die „Punkt“-Taste mit 6 verschiedenen Zeichen belegen; dazu einfach noch folgendes in die .Xmodmap
keycode 60 = period colon U2026 U2026 periodcentered division
Das heißt, dass wir jetzt Auf der „Punkt“-Taste „.“, „:“, „…“, „…“, „·“ und „÷“ liegen haben, die mit „normalem Tastendruck“, „shift“, „Super“, „Super+shift“, „AltGr“ und „AltGr+shift“ aufgerufen werden.
Anpassen der Keysyms
Wenn man nun auf die Tasten „Y“ und „X“ beim gleichzeitigen Drücken von AltGR das deutsche linke, bzw. rechte Anführungszeichen legen möchte, benötigt man erstmal deren Keycodes. Es wird davon ausgegangen, dass die beiden Tasten als Keycode 52 (Y) bzw. 53 (X) haben. Mit den Informationen aus diesem Artikel und den Keycodes kann man nun folgende Definition erstellen.
keycode 52 = y Y NoSymbol NoSymbol doublelowquotemark singlelowquotemark keycode 53 = x X NoSymbol NoSymbol leftdoublequotemark leftsinglequotemark
Zuerst wird das jeweilige Zeichen definiert. Also bei der „Y“-Taste zuerst das kleine Y („y“) und dann das große Y („Y“), nochmals gefolgt von dem kleinen Y („y“) und dem großen Y („Y“) - oder dem Zeichen, das beim drücken von Mode_switch erscheinen soll - dann kommt die Definition für das linke deutsche Anführungszeichen („), zusätzlich ist auf AltGr+Shift+Y auch noch das deutsche einfache linke Anführungszeichen (‚) verfügbar.
Auf der „X“-Taste ist das ebenfalls so: Dort sind zuerst die Buchstaben verfügbar, und über AltGr+X, bzw. AltGr+Shift+X das deutsche schließende Anführungszeichen (“) bzw. das deutsche einfache schließende Anführungszeichen (‘). Die Bezeichnungen „left…“ resultieren daher, dass alle Keysyms aus dem englischsrpachigen Raum stammen, und das englische linke Anführungszeichen eben dem deutschen rechten Anführungszeichen entspricht.
Aktivieren der Xmodmap
Die soeben erstellte Datei aktiviert man mittels des Xmodmap-Tools. Dazu ist folgender Aufruf zu verwenden.
xmodmap DATEI
DATEI ersetzt man natürlich durch den Namen der Xmodmap-Datei, die man dem System hinzufügen möchte. Zum automatischen Aktivieren der eigenen Xmodmap-Datei beim Einloggen, bzw. dem Start von X gibt es drei Möglichkeiten.
- Man führt den Befehl aus, bevor man die angepassten Tastenfunktionen nutzen möchte
- Man fügt den Xmodmap-Aufruf der Datei „.xinitrc“ oder der Autostart-Datei des verwendeten Fenstermanagers hinzu
- Man braucht gar nichts zu machen, da die Desktopumgebung die Datei „.Xmodmap“ automatisch erkennt und den Befehl selbständig ausführt.
Komplette Xmodmap nach Zielsetzung
Ziel des Artikels ist ja, dass am Ende eine funktionsfähige Xmodmap-Datei vorhanden ist, über die innerhalb von X typographisch „richtige“ Zeichen verwendet werden können. Mit nachfolgender Datei ist das möglich.
!! ------------------------------------------------------------------------------------------- !! !! normal shift M_s M_s+shift altgr Altgr+shift !! !! ------------------------------------------------------------------------------------------- !! keycode 51 = numbersign apostrophe NoSymbol NoSymbol rightsinglequotemark NoSymbol keycode 52 = y Y NoSymbol NoSymbol doublelowquotemark singlelowquotemark keycode 53 = x X NoSymbol NoSymbol leftdoublequotemark leftsinglequotemark keycode 60 = period colon NoSymbol NoSymbol ellipsis division keycode 61 = minus underscore NoSymbol NoSymbol endash abovedot keycode 65 = space NoSymbol NoSymbol NoSymbol nobreakspace NoSymbol !! M_s = Mode_Switch
Wie schon durch den Kommentar zu erkennen, sind nun – neben der Standard-Belegungen der Tasten gemäß der auf der Tastatur aufgedruckten Zeichen – folgende Zusatzfunktionen möglich:
- AltGr + # → Richtiger Apostroph (’)
- AltGr + Y → Linkes deutsches Anführungszeichen („)
- AltGr + ⇧ Shift + Y → Linkes einfaches deutsches Anführungszeichen (‚)
- AltGr + X → Rechtes deutsches Anführungszeichen (“)
- AltGr + ⇧ Shift + X → Rechtes einfaches deutsches Anführungszeichen (‘)
- AltGr + . → Auslassungspunkte („Ellipse“: …)
- AltGr + - → Gedankenstrich (–)
- AltGr + Leertaste → Geschütztes Leerzeichen ( )
Damit ist es nun möglich, typographisch korrekte Schreibweisen zu verwenden:
Er dachte: „Oh, die Sache mit der ‚Xmodmap‘ ist aber toll … Was es nicht alles gibt! Ich bin – und das sag’ ich einfach so – total begeistert!“
… anstelle von …
Er dachte: "Oh, die Sache mit der 'Xmodmap' ist aber toll ... Was es nicht alles gibt! Ich bin - und das sag' ich einfach so - total begeistert!"
Der Lesbarkeit tut es gut, und zudem werden nicht Zoll- und Minutenzeichen oder das Minus für Dinge verwendet, für die sie ursprünglich gar nicht vorgesehen waren. – Außerdem lernt man dabei noch was …
Weblinks
Todo
- XKeyCaps das Bearbeiten der Tasten über das Rechtsklick-Menü hat bei mir nicht funktioniert.
- Wie handhaben Gnome und KDE das? Gibt es dort eine automatische Funktion, um die .Xmodmap einzulesen, oder überschreiben die beiden die Einstellungen einfach mit eigenen Konfigurationen?: Laut dieser URL ist xmodmap veraltet und wurde durch XKB ersetzt. Das dortige Mapping kann dann aber wiederum von KDE/Gnome via setxkbmap überschrieben werden.