Echtes Mac-Tastaturlayout unter Ubuntu

Inspiriert durch zwei c’t-Artikel (erster / zweiter) habe ich unlängst mein treu gedientes 2012er MacBook Air mit Xubuntu neu aufgesetzt. Was soll ich sagen: Das Ding läuft wie verrückt, ich liebe das System! Allein: Das Mac-Tastatur-Layout ist suboptimal: Tastatur-Jockeys wie ich kennen die Alt- / Alt-Shift-Tastenkombinationen vieler Sonderzeichen – und das gilt unter Ubuntu nach Auswahl von „Tastaturmodell: Macintosh / Sprache: deutsch“ zwar für einige wichtige, aber längst nicht für alle Tasten.

Normal

Shift

Alt

Alt-Shift

Ich habe daher ein vollständiges deutsche Mac-Tastatur-Layout kodiert. Das heißt: Alle Alt- / Alt-Shift-Tastenkombinationen liefern anschließend unter (X)Ubuntu exakt dieselben Sonderzeichen (einschließlich „Dead Keys“), wie man es zuvor unter macOS gewohnt war.

Das Problem

Versteht mich richtig: Das ist ein Spezialfall für Mac-Notebooks. Denn wer Xubuntu auf einem Intel-iMac oder Intel-Mac mini installiert, der verbindet vermutlich der Einfachheit halber eine preiswerte Standard-(Windows-)Tastatur per USB oder Bluetooth und fertig ist die Laube: Das ist dann ein nativer Linux-Desktop mit passender Tastatur, an dessen Gehäuse „versehentlich“ ein Apfel prangt.

Hier gemeint sind vor allem Mac-Laptops, die den (rudimentären) Tastatur-Aufdruck (z.B. das „€“ auf dem „E“ und vor allem das „@“ auf dem „L“) zeigen. Die beiden genannten Sonderzeichen stehen im verwendeten „Mac / deutsch“-Layout auch richtig … aber ganz viele andere eben nicht, etwa die typografischen deutschen Anführungszeichen auf „^“, die typografischen US-Anführungszeichen auf „2“, das „™“ mit Alt-Shift-D – und vieles andere mehr – siehe o.a. „echte“ Mac-Tastatur-Layout-Screenshots. Wer sich am Mac diese Tasten in langjähriger Nutzung eingeprägt hat, der möchte sich schlichtweg nicht umgewöhnen, „nur“ weil die Maschine jetzt nicht mehr unter macOS, sondern unter Ubuntu läuft.

Die Lösung

Meine nachdrückliche Recherche ergab, dass die Datei /usr/share/X11/xkb/symbols/de die Tastatur-Layout-Definitionen enthält. Ich bin nun also hingegangen und habe dort ab Zeile 565 die „Mac“-Definition durch meine eigene ersetzt:

/usr/share/X11/xkb/symbols/de

Im VSCode-Screenshot ist der Bereich eingefaltet – aber es dreht sich tatsächlich um die Zeilen 565-592 (rechts), die in meiner Fassung (links) durch die Zeilen 565-627 ersetzt werden.

Man möge also bitte die Datei mit seinem Lieblingseditor editieren – z.B. so:

sudo mousepad /usr/share/X11/xkb/symbols/de

Obacht!! Here be dragons!

Wer die Datei kaputt editiert, läuft Gefahr, sich die Tastatur-Bedienbarkeit komplett zu zerschießen. Meine ausdrückliche Empfehlung ist daher zweiteilig:

  1. Ein Backup der o.a. Datei anfertigen und zur Wiederherstellung an sicherer Steller verwahren.
  2. Den SSH-Zugang zu der Maschine einrichten, um sich notfalls übers Netzwerk von einem anderen Computer anmelden zu können, um die verhunzte Datei an der Kommandozeile restaurieren zu können.

This being said – man ersetze bitte die o.a. Zeilen 565-592 durch folgenden Textblock:

// Copied from macintosh_vndr/de
// olh@suse.de		very close to MacOS map
// gerozahn@gerozahn.de	true adaptation for German MacBook (Air) keyboard layout

partial alphanumeric_keys
xkb_symbols "mac" {

    include "de"
    name[Group1]= "German (Macintosh)";

    key 	{ [ dead_circumflex,	degree,		U201E,		U201C		] };
    key 	{ [ 1,			exclam,		exclamdown,	notsign		] };
    key 	{ [ 2,			quotedbl,	U201C,		U201D		] };
    key 	{ [ 3,			setion,		paragraph,	numbersign	] };
    key 	{ [ 4,			dollar,		cent,		sterling	] };
    key 	{ [ 5,			percent,	bracketleft,	UFB01		] };
    key 	{ [ 6,			ampersand,	bracketright,	dead_circumflex	] };
    key 	{ [ 7,			slash,          bar,		backslash	] };
    key 	{ [ 8,			parenleft,	braceleft,	U02DC		] };
    key 	{ [ 9,			parenright,	braceright,	U00B7		] };
    key 	{ [ 0,			equal,		notequal,	macron		] };
    key 	{ [ ssharp,		question,	questiondown,	U02D9		] };
    key 	{ [ dead_acute,		dead_grave,	apostrophe,	U02DA		] };


    key 	{ [ q,			Q,		guillemotleft,	guillemotright	] };
    key 	{ [ w,			W,		U2211,		U201E		] };
    key 	{ [ e,			E,		EuroSign,	U2030		] };
    key 	{ [ r,			R,		registered,	cedilla		] };
    key 	{ [ t,			T,		dagger,		U02DD		] };
    key 	{ [ z,			Z,		Greek_OMEGA,	caron		] };
    key 	{ [ u,			U,		dead_diaeresis,	Aacute		] };
    key 	{ [ i,			I, 		U2044,		Ucircumflex	] };
    key 	{ [ o,			O, 		U00F8,		U00D8		] };
    key 	{ [ p,			P, 		Greek_pi,	U220F	] };
    key 	{ [ udiaeresis,		Udiaeresis,	U2022,		degree		] };
    key 	{ [ plus,		asterisk,	plusminus,	UF8FF		] }; 

    key 	{ [ a,			A,		aring,		Aring		] };
    key 	{ [ s,			S,		U201A,		Iacute		] };
    key 	{ [ d,			D,		U2202,		U2122		] };
    key 	{ [ f,			F,		U0192,		Idiaeresis	] };
    key 	{ [ g,			G,		copyright,	Igrave		] };
    key 	{ [ h,			H,		ordfeminine,	Oacute		] };
    key 	{ [ j,			J,		masculine,	idotless	] };
    key 	{ [ k,			K,		U2206,		U02C6		] };
    key 	{ [ l,          	L,		at,		UFB02		] };
    key 	{ [ odiaeresis,		Odiaeresis,	U0153,		U0152		] };
    key 	{ [ adiaeresis,		Adiaeresis,	U00E6,		U00C6		] };
    key 	{ [ numbersign,		apostrophe,	U2018,		U2019		] };

    key 	{ [ less,		greater,	lessthanequal,	greaterthanequal] };
    key 	{ [ y,			Y,		yen,		doubledagger	] };
    key 	{ [ x,			X,		U2248,		Ugrave		] };
    key 	{ [ c,			C,		ccedilla,	Ccedilla	] };
    key 	{ [ v,			V,		U221A,		U25CA		] };
    key 	{ [ b,			B,		integral,	U2039		] };
    key 	{ [ n,			N,		dead_tilde,	U203A		] };
    key 	{ [ m,			M,		mu,		U02D8		] };
    key 	{ [ comma,		semicolon,	infinity,	ogonek		] };
    key 	{ [ period,		colon,		ellipsis,	division	] };
    key 	{ [ minus,		underscore,	endash,		emdash		] };
};

Wer das Ganze nicht hier umständlich aus der Webseite herauskopieren mag – hier noch einmal der betreffende Textblock als herunterladbare Text-Datei:

Und spätestens mit dem nächsten Reboot bzw. X11-Restart sollte sich das MacBook (Air)-Keyboard exakt so verhalten, wie man es unter macOS gewohnt war.

Festlegung der Alt-Tasten

Bezüglich der Frage, welche der beiden Alt-Tasten für die Sonderzeichen zur Verfügung stehen soll, habe ich meine /etc/default/keyboard wie folgt konfiguriert:

XKBMODEL="apple"
XKBLAYOUT="de"
XKBOPTIONS="lv3:lalt_switch,lv3:ralt_alt"
BACKSPACE="guess"
XKBVARIANT="mac"

Dadurch kommen die Sonderzeichen mit der linken Alt-Taste (was meinem Tastatur-Verhalten an einem „echten Mac“ entspricht), während die rechte Alt-Taste für andere Alt-Tastenkombinationen zur Verfügung steht, etwa für anderweitige Keyboard-Shortcuts (s.u.).

Fensterwechsel mit Cmd-Tab statt Alt-Tab

Mit o.a. Konfiguration funktioniert leider der windows-typische Fensterwechsel mit Alt-Tab nicht mehr … bzw. schon, aber eben statt mit der linken nun mit der rechten Alt-Taste, was natürlich ein bisschen unhandlich ist.

Daher wechsele man in die Einstellungen der Fensterverwaltung und belege die Funktion „Fenster durchwechseln“ sowie „Fenster durchwechseln (Rückwärts)“ statt mit Alt nun mit der Command-Taste, hier linux-typisch als „Super“ bezeichnet.

Fenster durchwechseln mit Cmd-(Shift-)Tab

Damit funktioniert der Fenster-Wechsel auch wieder mac-typisch mit Cmd-Tab / Cmd-Shift-Tab. — Schlussbemerkung zum o.a. Screenshot: „Alt-Tabulator“ für das Wechseln von Fenstern derselben Anwendung bezieht sich in meiner Konfiguration konsequenterweise auf die rechte Alt-Taste.

Keine Kommentare möglich.