[[Vorlage(Getestet, )]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Pakete_installieren: Installation von Programmen] [:xev: Tastenfunktion ermitteln] [:Autostart: Autostart] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/keyboard.png, 64, align=left)]] Fast jede aktuell im Handel erhältliche Tastatur hat diverse Sondertasten für Multimediafunktionen, Surfen usw. Leider sind diese Tasten nicht einheitlich belegt. Die beigelegte Software ist meist nur für Windows bestimmt. Für Linux gibt es diverse Programme, die mit den Sondertasten umgehen können. Alle diese Programme nutzen die Key-Codes, die die einzelnen Tasten erzeugen. Immer wenn unter Linux eine Taste gedrückt wird, generiert der Kernel eine Art Scancode, welcher mit Hilfe einer keycode-Tabelle einer Taste (z.B. dem Buchstaben z) zugewiesen wird. Unter [:XServer:X] funktioniert das Ganze ein wenig komplizierter - es lädt beim Starten eine eigene Keycode-Tabelle ein und bildet Tastatureingaben mit Hilfe der Kernel-Keycode-Tabelle darauf ab. Jeder ''Keycode'' kann dabei einem ''keysym'' entsprechen; ein ''keysym'' ist eine einfache Zeichenkette, die einer Funktion entspricht, die beim Drücken der Taste ausgeführt wird. In Linux kann man diese Zuordnungen mit Hilfe des Programms '''xmodmap''' ändern. = Ändern der Zuweisungen = == Ermittlung des Tastensignals (keycode) == Zunächst muss man wissen, welches Signal ("keycode" genannt) eine Taste beim Drücken sendet. Dies kann man auf der Kommandozeile erledigen mit xev[4] oder grafisch mit [http://www.jwz.org/xkeycaps/ xkeycaps] {en}. == Die keycode-Tabelle == Bei der Wahl des Tastaturtreibers wurde nun jeder Taste (also jedem "keycode") ein gewisses Zeichen bzw. Funktion in Form von ''keysym''s zugewiesen. Mit dem Programm xmodmap kann man diese Einstellungen individuell anpassen. Das Programm modifiziert die jeweils aktuelle Keymap (also die Zuweisungen des Signals, das die Taste sendet (= keycode) und der Aktion, die durch dieses Signal ausgelöst werden soll (= Zeichen, Funktion)). Dies ist unabhängig vom gewählten Tastaturlayout. === Zuweisungen ändern === Um nun Zuweisungen zu ändern, schafft man sich eine eigene Datei '''~/.Xmodmap''' und ändert diese [2]. Dabei wechselt der erste Befehl in das Homeverzeichnis. {{{#!vorlage Befehl cd xmodmap -pke > .Xmodmap }}} === Anzeigen === Mit [:less:] wird die Ausgabe der '''~/.Xmodmap''' „Bildschirmweise“ und im Lesemodus angezeigt. Die Benutzung von ''less'' kann auf der [:less:Wiki-Seite] gefunden werden. {{{#!vorlage Befehl less ~/.Xmodmap }}} === Bearbeiten === Eine Bearbeitung kann zum Beispiel auch in der [:Shell:] mit [:nano:] erfolgen. {{{#!vorlage Befehl nano ~/.Xmodmap }}} === Inhalt === Der Inhalt der Datei '''~/.Xmodmap''' sieht in etwa folgend aus: {{{ keycode 8 = keycode 9 = Escape keycode 10 = 1 plus plusminus infinity keycode 11 = 2 quotedbl leftdoublequotemark rightdoublequotemark keycode 12 = 3 asterisk numbersign leftcaret keycode 13 = 4 ccedilla Ccedilla slash keycode 14 = 5 percent bracketleft keycode 15 = 6 ampersand bracketright keycode 16 = 7 slash bar backslash keycode 17 = 8 parenleft braceleft Ograve keycode 18 = 9 parenright braceright Ocircumflex keycode 19 = 0 equal notequal Uacute … }}} Dies sind nur die ersten paar Zeilen. Wie man sieht, stehen nach dem '''='''-Zeichen teilweise mehrere Wörter bzw. Zeichenketten (genannt ''keysym''), jeweils getrennt von einem Leerzeichen. * Die Aktion der ersten Zeichenkette ist der Text/die Funktion, welche die Taste bei einfachem Drücken erzeugt. * Die zweite Zeichenkette wird erzeugt, wenn zusätzlich das ''Shift''-Signal gesendet wird, was normalerweise durch die [[Vorlage(Tasten, Shift)]]-Taste erfolgt. * Die dritte Zeichenkette beschreibt die Aktion, die beim gleichzeitigen Senden des '''Mode_switch'''-Signals ausgeführt wird, normalerweise also durch gleichzeitiges Drücken der [[Vorlage(Tasten, Alt)]]-Taste. * Die vierte Zeichenkette beschreibt die Aktion beim Drücken der Taste und gleichzeitigem Senden von [[Vorlage(Tasten, Shift)]] und '''Mode_switch'''. * Die fünfte Zeichenkette beschreibt (zumindestens unter Unity) die Aktion, die bei gleichzeitigigem Drücken der [[Vorlage(Tasten, altgr)]] ausgeführt wird. * Die sechste Zeichenkette beschreibt (wieder unter Unity) die Aktion, die bei aufeinanderfolgendendem Gedrückthalten von [[Vorlage(Tasten, altgr)]], dann [[Vorlage(Tasten, Shift)]] und schliesslich der gewünschten Taste ausgeführt wird. Anmerkung: die "Mode switch"-Taste muss eventuell erst unter ''"System -> Einstellungen -> Tastatur -> Belegungseinstellungen -> third level choosers"'' festgelegt werden. Falls dies nicht funktionieren sollte, kann man alternativ dazu die ModeSwitch-Taste auch in der .Xmodmap-Datei festlegen. Um diese beispielsweise auf die rechte Strg-Taste (Keycode 105) zu legen ändert man die Zeile folgendermaßen: keycode 105 = Mode_switch NoSymbol Mode_switch Wie man in dem Beispiel sieht, sind nicht alle Tasten mit vier verschiedenen Aktionen belegt, die [[Vorlage(Tasten, esc)]]-Taste (keycode = 9) kann nur die Aktion '''Escape''' ausführen. Es ist allerdings freigestellt, hinter das Wort "Escape" noch ein "a" zu schreiben und somit jedesmal, wenn man gleichzeitig die [[Vorlage(Tasten, Shift)]]-Taste und die [[Vorlage(Tasten, esc)]]-Taste drückt, ein "a" auf dem Bildschirm zu erzeugen. Der Fantasie sind hierbei keine Grenzen gesetzt, nur die keysym-Anweisungen müssen richtig geschrieben werden, entsprechende Listen sind aber im Internet vorhanden (z.B. [http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap hier]). Als keysym kann auch der Unicode des gewünschten Zeichens verwendet werden (im Falle von α z.B. U03B1, für ♡ U2661). Eine kleine Auswahl: || keycode 144 || XF86AudioPrev || Springt zum vorherigen Titel || || keycode 160 || XF86AudioMute || Stellt den Ton ab || || keycode 162 || XF86AudioPlay || Startet die Wiedergabe || || keycode 164 || XF86AudioStop || Stoppt die Wiedergabe || || keycode 174 || XF86AudioLowerVolume || Lautstärkeregler herunterdrehen || || keycode 176 || XF86AudioRaiseVolume || Lautstärkeregler aufdrehen || || keycode 236 || XF86Mail || Startet ein E-Mail-Programm || || keycode 237 || XF86AudioMedia || Startet einen Medienplayer || || keycode 37 || XF86Start || Menü für die "Windows-Taste" || Für die Sondertasten einer ''Cherry Master Solar''-Tastatur würde der Abschnitt der '''~/.Xmodmap''' so aussehen: {{{ !! Cherry Master Solar keycode 144 = XF86AudioPrev keycode 160 = XF86AudioMute keycode 161 = XF86Calculator keycode 162 = XF86AudioPlay keycode 164 = XF86AudioStop keycode 173 = XF86Eject keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume keycode 178 = XF86HomePage keycode 227 = XF86Standby keycode 229 = XF86Search keycode 231 = XF86Reload keycode 232 = XF86Stop keycode 233 = XF86Forward keycode 234 = XF86Back keycode 236 = XF86Mail keycode 237 = XF86AudioMedia }}} Die Multimediatasten funktionieren jetzt wie normale Tasten - man kann also nun dem Fenstermanager oder der Desktop-Umgebung angeben, dass für den Start von XMMS nicht mehr [[Vorlage(Tasten, Strg+Alt+F5)]] zu drücken ist, sondern einfach die Taste "XF86AudioMedia". == Spezielle Signale == Spezielle Signale, die oft in Zusammenhang mit anderen Tasten gesendet werden, sind: * Alt-L und Alt-R * Meta_L und Meta_R * Control_L und Control_R * Super_L und Super_R * Shift_L und Shift_R Um die aktuelle Zuordnung dieser Signale auf die entsprechenden Keycodes zu erfahren, gibt man {{{#!vorlage Befehl xmodmap }}} im Terminal ein. Die Keycodes sind nun allerdings in sedezimaler Schreibweise notiert. Um diese Signale zu ändern, müssen die bisherigen Zuordnungen allerdings erst aufgehoben werden (das gilt nur für diese Signale!) Dies geschieht am Anfang der Datei mit dem Befehl `clear`. Die gleiche Datei wie oben sieht dann so aus: {{{ !clear Shift !clear Lock clear Control clear Mod1 !clear Mod2 !clear Mod3 !clear Mod4 !clear Mod5 keycode 8 = keycode 9 = Escape ... }}} Man sieht, dass zusätzlich zu den Standard-Signalen Shift, Lock und Control noch fünf freie ''Modifier'' zur Verfügung stehen, von denen aber meistens schon zwei oder drei belegt sind. In diesem Beispiel wurde das Signal '''Control''' und der erste ''Modifier'' für neue Zuordnungen freigegeben. Die neue Zuordnung geschieht dann am Dateiende mit dem Befehl `add`: {{{ ... keycode 253 = keycode 254 = keycode 255 = !add Shift = Shift_L Shift_R !add Lock = Caps_Lock add Control = Control_L Control_R add Mod1 = Alt_L Alt_R !add Mod2 = Mode_switch !add Mod3 = Num_Lock !add Mod4 = !add Mod5 = }}} In diesem Beispiel wurden also die alten Zuordnungen der Signale `Control` und `Alt` aufgehoben und neuen Tasten zugeordnet. [[Anker(Umlaute)]] == Umlaute per Compose-Taste auch auf Englischen Tastaturen == Wenn man ein englisches Tastaturlayout hat, kann man mit xmodmap eine Compose-Taste einrichten. Eine [[Vorlage(Tasten, compose)]] Compose-Taste wird nach folgendem Muster definiert: ` <"> = ä` Also die [[Vorlage(Tasten, compose)]] Compose-Taste drücken und dann z.b. Anführungszeichen für Pünktchen oder einzelnes Anführungszeichen für z.B. á oder ú (es gibt noch viele weitere Kombinationen) ## falls jemand ne gute Liste hat, kann er ja hier drauf verweisen Beispielsweise könnte man die Taste ganz links unten auf der Tastatur mit | < und > als Compose-Taste verwenden. Man trägt in dem xmodmap-Eintrag der Taste `Multi_key` ein: {{{ keycode 94 = Multi_key }}} Die wichtigsten Kombinationen: {{{ " a = ä " o = ö " u = ü " A = Ä " O = Ö " U = Ü s s = ß ' e = é ` e = è ^ e = ê }}} [[Anker(Sitzungsbeginn)]] == Tipps == === Caps-Lock Taste === Sofern man immer wieder versehentlich die Caps-Lock Taste berührt und dann DER tEXT SO ERSCHEINT, kann man in der '''~/.Xmodmap''' folgende Zeilen eintragen [2]: {{{ ! Kommentar: change Caps-Lock -> Shift remove Lock = Caps_Lock keysym Caps_Lock = Shift_L add Shift = Shift_L }}} Nach Aktivierung durch ab- und wieder anmelden bzw. ausführen von {{{#!vorlage Befehl xmodmap ~/.Xmodmap }}} funktioniert die Caps-Lock-Taste genau wie Shift und die lästigen Überraschungen sind Vergangenheit. = Konfiguration der Maustasten = Auch die Maustasten lassen sich über eine Zeile in der Datei '''~/.Xmodmap''' konfigurieren bzw. vertauschen. {{{ ! Maustasten pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 }}} So gibt z.B. die Zahl an der fünften Stelle an, welche Maustaste der Taste 5 zugewiesen wird. Dabei entsprechen 1 = linke Maustaste, 2 = rechte Maustaste, 3 = mittlere Maustaste, 4 & 5 = Mausrad, alle höheren Tasten sind modellabhängig. Auf diese Weise lässt sich relativ einfach das ''Natural Scrolling'' (wie man es von Max OS X Lion kennt) aktivieren: Dazu müssen die 4 und 5 vertauscht werden, was das Mausrad invertiert. {{{ ! Natural Scrolling pointer = 1 2 3 5 4 6 7 8 9 10 11 12 13 14 15 16 }}} = Problembehebung = Sollte die gewünschte Datei von '''xmodmap''' beim Hochfahren nicht eingelesen werden, kann ein verzögerter Autostart-Eintrag Abhilfe schaffen [5]: {{{#!vorlage Befehl sh -c 'sleep 30 && xmodmap ~/.Xmodmap' }}} = Links = * [:Eingabegeräte:] {Übersicht} Übersichtsartikel # tag: Hardware, System