Wer ein Apple-Keyboard sein Eigen nennt und es zum ersten Mal unter Linux anschließt wird mit dem Ergebnis wahrscheinlich nicht gleich ganz zufrieden sein, weil die Tastenbelegung — insbesondere der F-Tasten — ungewohnt sind. Mit den Tools xev, xmodmap und anderen Tricks kann man das Verhalten von Tastaturen ändern und ihre Tastenbelegung nach eigenen Wünschen anpassen. In diesem Beitrag möchte ich erklären, wie man eine Apple Tastatur — aber auch eine beliebige andere — an seine persönlichen Wünsche anpassen kann.

1. Warum nicht voreingestellte Tastenbelegung nehmen?


Ich habe bereits verraten, dass ich eine Apple Tastatur habe.  Allerdings gibt es da ja mehrere. Ich bin noch von der alten Schule und arbeite an einem richtigen Rechner mit separater Tastatur und habe mich deshalb natürlich nicht für die verkappte Laptoptastaturimitation entschieden, die zwar kabellos ist, die ich dafür aber wegen ihrer irrsinnig kleinen Größe wohl ständig verlieren würde (außerdem kann ich Bluetooth nicht leiden).

Da ich viele Texte auf deutsch schreibe, wären Umlaute äöüÄÖÜ sowie das deutsche Special ‚ß‘ natürlich nett. Da ich aber auch viel C, C++, Java, Bash, LaTeX und so weiter schreibe benutze ich natürlich auch gerne Zeichen wie (){}[]/|\“‚><`~ wovon die meisten auf dem deutschen Tastaturlayout lang-, mittel- oder kurzfristig zu Knoten in den Fingern führen. Daher müssen in meiner Tastenbelegung beide Sonderzeichenblöcke unumständlich erreichbar sein.

Lange Rede – kurzer Sinn. Ich habe mich gegen die Umlaute und für die Nerd-Tasten entschieden, wie man am Titelbild ja schon sehen kann. Warum auch immer die Amerikaner das so wollen, aber die haben auf ihren Tastaturen wirklich die eckigen Klammern [] und / und \ einfacher platziert als die gewöhnlichen Klammern und haben damit super Programmier-Tastaturen. Leider haben sie aber Enter-Tasten, die eine Breite von zwei Tasten und eine Höhe von einer Taste haben. Schrecklich! Es bleibt ein (fast) perfektes Layout für mich: Englisch-International. Da ich bei QWERTZ bleiben möchte habe ich an meiner Tastatur die beiden Tasten Y und Z beherzt getauscht.

2. fn-Taste auf „Normal“ umstellen


Was mir als Linux Nutzer erstmal am meisten auf die Nerven geht ist diese fn-Taste. Standardmäßig funktionieren die F-Tasten nämlich nicht wie man es erwartet (F1-F12) sondern stattdessen funktionieren sie quasi nicht wie Multimediatasten . Für die F-Tasten muss man dann immer die fn-Taste drücken. Dieses Verhalten liegt an genau einem Byte auf der Festplatte und das steckt in der Datei /sys/module/hid_apple/parameters/fnmode

Die 1 ist voreingestellt und soll geändert werden. Es gibt insgesamt drei mögliche fnmodes:

  1. 0: Deaktiviert – egal ob ich fn drücke oder nicht es kommt immer eine F-Taste dabei raus.
  2. 1: Standard – Nur in Kombination mit fn kommt an an die F-Tasten
  3. 2: Genau richtig – Ein normaler Druck auf F12 führt zu F12. Zusammen mit fn wird die Lautstärke erhöht.

Zum direkten spontanen Testen kann man mal folgendes ausführen:

Nach der Eingabe des Passworts fühlt man sich schonmal ein bisschen mehr wie daheim.

Damit das Verhalten jetzt auch nach dem nächsten Neustart noch so ist kann man verschiedene Wege gehen. Ich habe mich dafür entschieden, dass direkt beim Laden  des Kernelmoduls hid_apple die nötige Option mitgegeben wird.

Wenn das nicht klappt, dann helfen folgende Befehle:

Das war’s mit der fn-Taste.

3. Keyboardlayout ändern


Das Tastaturlayout das in meinem Fall selbverständlich meiner Tastatur am nächsten kommt ist das US-Amerikanische Layout. Dieses Layout ist der Ausgangspunkt meiner Veränderungen. Um das Layout umzustellen gibt es mehrere Möglichkeiten, die ach noch von der grafischen Oberfläche abhängen. Die Tasten die mich im Originallayout stören oder deren Verhalten ich erweitern oder verändern möchte sind folgende:

§± Default als <> erkannt
Y Soll zu Z werden
Z Soll zu Y werden
q Soll noch ein @ können
e Soll noch ein € und ¢ können
u Soll noch ein ü und Ü können
o Soll noch ein ö und Ö können
a Soll noch ein ä und Ä können
s Soll noch ein ß können
CAPS-Lock Soll zur Compose-Taste werden
cmd (links) Soll zu Super_L werden
cmd (rechts) Soll zu Mode_switch werden

Die einfachere Sache betrifft die oberen Tasten. Das sind so genannte Symbolkeys also Tasten, die Zeichen hervorrufen. Die letzten drei tun dies ja nicht. Sie sind eher so etwas wie die fn-Taste.

3.1 Tasten identifizieren

Um nun loszulegen zu können und die Tasten zu ändern muss man sie erstmal identifizieren. Ich benutze dafür xev ein Tool, das eigentlich immer bereits installiert ist und das man aus dem Terminal starten sollte und zwar mit

xev Tastenbelegung von einzelnen Tasten identifizieren

Screenshot xev – Klicken für volle Ansicht

Wenn man xev aus dem Terminal gestartet hat, dann öffnet sich ein kleines Fenster (rechts im Bild), welches für uns erstmal völlig unwichtig ist, und im Terminal wird viel ausgegeben. Die Vorgehensweise ist eigentlich ganz einfach. Man drückt eine Tasten und sucht in der Ausgabe nach dem Keycode. Im Bild habe ich mal markiert was passiert, wenn ich die §-Taste drücke und wo da der Keycode steht. So macht man das für alle Tasten, die bearbeitet werden soll und merkt sich die Codes.

3.2 Xmodmap benutzen

Das Programm xmodmap ist auch auf quasi jedem System bereits installiert. Es ist dafür da um Tastendrücke auf die richtigen Events zu Mappen – das betrifft übrigens auch Maustasten.

Damit du dir ein Bild davon machen kannst, wie ein solches Mapping definiert ist:

Mit xmodmap -pke  lässt man sich also die Keycode-Tabelle ausgeben; Mit xmodmap -pm  die Modifiermap.  Jede Zeile von der Keycode-Tabelle ist nach dem Muster

In der Ausgabe von  xmodmap -pke  kann man zum Beispiel in Zeile 5 sehen, dass unter Keycode 11 die Taste „1“ eingetragen ist und mit Shift zusammen ein „!“ ergibt. Hier änder die Verwendung von Modifiertaste nichts am Verhalten der 1. Wenn man möchte kann man hier ganz viel am Verhalten seiner Tasten basteln und ihnen alle möglichen Symbole zuweisen oder mit Funktionen belegen.

3.3 .Xmodmap-Datei anlegen

Nun möchte ich also ein paar dieser Keycodes verändern. Dazu lege ich in meinem Homeverzeichnis die Datei .xmodmap an.

und trage diese Zeilen ein:

Die erste Zeile definiert – klar – das „@“ für die Taste „q“. Die Umlaute und das „ß“ kommen in Zeile 4-7. Außerdem Tausche ich die Keycodes von „z“ und „y“ und setze Keycode 94 (die §/±-Taste links neben der „1“) korrekt. Mit dieser Konfiguration habe ich schon mal die Tastenbelegung der „normalen“ Symboltasten abgehakt.

Was jetzt noch fehlt, ist

  • Die CAPSLOCK Taste soll keine CAPSLOCK Taste sein, weil das meiner Meinung nach Verschwendung ist. Ich möchte eine Compose-Taste daraus machen. Eine Compose-Taste funktioniert so: Man drückt sie, dann drückt man mehrere Symboltasten hintereinander und es kommt ein spezielles Symbol dabei raus. Beispiel: COMP, ?, ! wird zu ‽ oder COMP, 1, 2 zu ½. Ich habe mal eine Liste Compose-Kombinationen hochgeladen. Es sind in meiner Version 5950 Kombinationen von denen man aber viele nicht einfach eingeben kann, weil die Zeichen auf der Tastatur fehlen.
  • Die rechte cmd-Taste soll sich bei mir so verhalten wie auf gewöhnlichen Tastaturen die Alt-Gr. Also sie soll mein Mod sein.

Um das zu bewerkstelligen, muss man in der Datei ~/.xmodmap  noch ein paar Zeilen einfügen. Eine Zeile, um CAPSLOCK zur Compose-Taste zu machen  keycode 66 = Multi_key  und eine um die rechte cmd-Taste zur Mode_switch zu machen keycode 134 = Mode_switch. Dann muss ich noch mitteilen, dass es keine CAPSLOCK mehr gibt mit  clear Lock  und genau so muss ich mit  clear Mod4  und  clear Mod5  die beiden Modifier, die von der Änderung der Tastenbelegung betroffen sein werden, leeren. Mod4, weil dazu die Taste Super_R (also eben die rechte cmd) gehört und Mod5, weil das der endgültige Modifier wird. Danach werden dann die Taste Super_L zu Mod4 und Mode_switch zu Mod5 hinzugefügt:  add Mod4 = Super_L  und  add Mod5 = Mode_switch .

Alles zusammen sieht dann so aus:

Wenn man die Konfiguration der Tastenbelegung nun anwenden möchte muss man nur

eingeben und schon ist die Tastatur umgestellt. Wenn man dieses Verhalten immer möchte, dann kann man dafür ein Autostart einrichten. Ich habe das so gemacht, habe aber zusätzlich zu dieser einen  .xmodmap  noch weitere, um für spezielle Programme oder Spiele die Tastenbelegung anzupassen.

4. Weiterführende Links



6 Kommentare

fb · 10. Oktober 2016 um 0:13

Sehr spannender Beitrag! Ich konnte meine Anforderungen durch diese Infos lösen, nicht aber das eigentliche Ding „howto“ verstehen 🙁
Gerne würde ich mehr in die Richtung: komplettes umstellen der Tastatur angehen, aber ich kapier die mapping settings noch nicht so ganz: Angefangen bei der Anzahl der Einstellungen und diesem Hinweis:
„[keycode] = [Zeichen normal] [Shift+Zeichen] [Mod+Zeichen] [Mod+Shift+Zeichen]“ 4x aber es gibt mehr!? 6x?
control bis mod[N] verstehe ich nicht, finde für mich auch nichts verständliches was diese Bezeichner im detail ausmacht. Bei control verstehe ich es so: control gilt für control_L und*_R taste. Was aber ist mod[N] ?

    julian · 11. Oktober 2016 um 21:10

    Hi fb,
    also es gibt soweit ich weiß 6 Levels: X, Shift+X, mode_switch+X, mode_switch+Shift+X,AltGr+X,AltGr+Shift+X. Ich benutze nur die ersten vier Ebenen also die bis mode_switch+Shift+X. Möchtest du noch mehr Symbole auf einer Taste unterbringen, dann musst du dir einen weiteren Modifier-Key überlegen. Ein echt guter Artikel hierzu ist: https://wiki.archlinux.org/index.php/xmodmap
    Auch er wird nicht alle deine Fragen klären können. Was meinst du mit „was die Bezeichner ausmacht“?
    Gruß Julian

fb · 29. Dezember 2016 um 18:27

Hey, bezgl. der Bezeichner: Nun hab ich es endlich kapiert
Habe nun auch eine GB Tatatur und Schreibe gerade scripte und mappings 🙂 Weiteren Artikel schreibe ich auch noch und bekommst Du via Pingback 🙂
Was hier fehlte ist das neue mapping nach setzen der Mods:
# The columes are now:
# ; ; ; ; ;
Und jetzt machen die 6 levels wieder sinn 😀
LG + guten Rusch 🙂

fb · 29. Dezember 2016 um 18:28


# The columes are now:
# ; ; ; ; ;

fb · 29. Dezember 2016 um 18:29


# The columes are now:
# key ; key + shift ; cmd-R + key ; cmd-R + shift + key ; alt-R + key ; alt-R + shift + key

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.