Da Sie die Schlüssel für alle Anwendungen neu zuordnen möchten, ist die Verwendung von xmodmap die beste Option. Es ist flexibel und sehr leistungsfähig, erfordert jedoch die Eingabe einiger Befehle in ein Terminal.
Schritt 0 - Der Ansatz
Der X-Server verwaltet die Tastatur und alle Tastenereignisse und übersetzt diese in Schlüsselcodes für alle Anwendungen.
Der Ansatz wäre, eine Modifikatortaste (wie die Super- oder die rechte Alt-Taste) als "Modusschalter" -Taste zuzuordnen und dem X-Server mitzuteilen, je nachdem, ob eine Taste bei gedrückter Modustaste gedrückt wird oder nicht, unterschiedliche Codes zu generieren.
Standardmäßig ist keine Modusschaltertaste definiert und alle Tasten sind so konfiguriert, dass sie denselben Code generieren, wenn sie mit oder ohne Modusschalter gedrückt werden. Dies ist gut, da dies bedeutet, dass sich außer den Schlüsseln, die Sie explizit überschreiben, keine anderen Schlüssel anders verhalten oder eine zusätzliche Konfiguration erfordern.
Ich möchte Sie jedoch bitten, die rechte Alt-Taste als Modusschalter zu verwenden, insbesondere wenn Sie auch Compiz verwenden, da einige Compiz-Plugins Super-Tastenkombinationen (z. B. Fensterauswahl, Umschalter usw.) zuordnen. Wenn Sie nicht daran interessiert sind, Compiz über die Tastatur zu steuern, ist Super in Ordnung.
In xmodmap werden die Superschlüssel als Super_L oder Super_R identifiziert. Sie müssen einen auswählen, der als Modusumschalttaste verwendet werden soll. Alternativ ist die rechte Alt-Taste Alt_R. Sie können dies bestätigen, indem Sie xev ausführen und die erforderlichen Tasten auf Ihrer Tastatur drücken. Siehe diesen Beitrag für die Schritte.
Schritt 1 - Einrichten der Modifikatorkarte
Öffnen Sie ein Terminal ( Applications -> Accesories -> Terminal
) und führen Sie den folgenden Befehl aus, um eine Datei mit den aktuellen Tastenkombinationen zu erstellen . Wir werden dies als Ausgangspunkt verwenden.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Öffnen Sie dies in Ihrem bevorzugten Texteditor. gedit curkeys.map &
öffnet es in gedit. Gegen Ende der Datei sehen Sie einige Zeilen wie diese:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Löschen Sie die Zeile beginnend mit "xmodmap: bis 4 ..."
Bearbeiten Sie die Modifikatorkarte so, dass sie so aussieht. Fügen Sie das Wort "add" am Anfang jeder Zeile ein und fügen Sie "=" nach dem Namen des Modifikators ein. Entfernen Sie dann die Codes in Klammern und Kommas. Beachten Sie auch, dass ich Mode_switch
von mod5
Zeile zu mod3
Zeile gewechselt bin , da es leer war. Die geänderte Tabelle sollte so aussehen - der tatsächliche Inhalt weicht in Ihrem Fall geringfügig von den unten aufgeführten ab (abhängig von Ihrem Tastaturlayout).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Ordnen Sie die Taste für den physischen Moduswechsel neu zu. Fügen Sie am Ende eine Zeile wie diese hinzu (ersetzen Sie Super_L durch Super_R oder Alt_R, falls erforderlich).
keysym Super_L = Mode_switch
Entfernen Sie den Schlüsselnamen (Super_L) aus jeder Modifikatordefinition. Für Super_L bedeutet dies, dass es aus der mod4-Zeile entfernt wird.
add mod4 = Super_R Hyper_L
Jetzt fungiert die rechte "Super" -Taste weiterhin als normale Super-Taste, während die linke Taste spezielle Eigenschaften hat.
Jetzt müssen wir die Tasten neu zuordnen, um unterschiedliche Codes zu erzeugen, unabhängig davon, ob sie gedrückt werden, während Sie Super_L gedrückt halten oder nicht. Jede Zeile in unserer Datei, die mit beginnt, keycode
gibt 4 Schlüsselwörter für jede zu erzeugende Taste an, je nachdem, ob Mod1 (Umschalttasten) und Modusumschalttasten gedrückt werden. ( Link )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Wenn Super_L + k eine "+" - Taste erzeugen soll, müssen wir diese ändern, um dies zu lesen
keycode 45 = k K plus plus
Das letzte Plus ordnet auch Shift + Super_L + k plus zu, dies kann jedoch auf etwas anderes abgebildet werden. Für jede Taste muss genau 1 Zeile geändert werden. Bearbeiten Sie mehr Zeilen, um mehr Tasten neu zuzuordnen - lassen Sie die ersten 2 Einträge intakt, um das normale Tastendruckverhalten beizubehalten.
Speichern Sie die Datei und beenden Sie den Editor.
Installieren Sie die Tastaturbelegung, indem Sie die folgenden Befehle in einem Terminal ausführen. Der erste richtet es für diese Sitzung ein, der zweite macht es dauerhaft für zukünftige Sitzungen.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Sie können dies sofort testen, indem Sie die geänderten Tasten (z. B. Super_L + k) drücken.
Schritt 3 - Hinzufügen / Überarbeiten der Karte
Sobald die geänderte Karte installiert ist, können ganz einfach neue Schlüssel hinzugefügt werden.
Verwenden Sie xev , um die Schlüsselcodes und Schlüsselwörter zu finden
Testen Sie es, indem Sie diesen Befehl ausführen, um den Schlüssel zuzuordnen:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Ersetzen Sie Elemente in spitzen Klammern (wie <code>
<base>
usw.) durch entsprechende Werte.
Sichern Sie die curkeys.map
Datei.
- Öffnen Sie die
curkeys.map
und bearbeiten Sie die Zeile für den entsprechenden Schlüsselcode.
Wenden Sie die folgenden Befehle erneut an (der erste Befehl ist nicht erforderlich, wenn Sie Schritt 2 ausgeführt haben)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Hinweis: 1 : Änderungen, die über Tastaturkürzel (z. B. System -> Preferences -> Keyboard Shortcuts
) vorgenommen werden, wirken sich auf die Modifikatorzuordnung aus und gehen bei der nächsten Anmeldung in der Regel verloren. Also bitte vermeide das.
Hinweis: 2 : Ich erhalte manchmal solche Fehlermeldungen, wenn ich diese Methode verwende. Ich weiß nicht, was das bedeutet, aber diese sind im Allgemeinen harmlos.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
Eine ausführliche Hilfe zu xmodmap finden Sie hier .
~/.Xmodmap
,~/.xmodmap
wird ignoriert.clear
die Schlüssel, die gemäß unix.stackexchange.com/a/4526/2512