Wie kann ich Schlüssel in Ubuntu 16.04 dauerhaft neu zuordnen?

23

Dies funktioniert für die aktuelle Sitzung:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

Dann habe ich diese Konfigurationsdatei erstellt:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

Aber es funktioniert nicht nach einem Neustart. Wie kann ich die Neuzuordnung zwingen, den Neustart zu überstehen?

Costales
quelle
Beantwortet dies einfach xkbhier: askubuntu.com/a/960097/554991 .
Danwild

Antworten:

15

Ich benutze 16.04 für ein bisschen und es scheint, als ob es sddm als Desktop-Manager verwendet. Früher war es LightDM und GDM. Es ist dokumentiert, dass beide Vorgänger ~/.Xmodmapautomatisch geladen werden, aber ich kann nichts finden, was explizit sagt, dass sddm dies tut.

Daher kann es ratsam sein, das Laden eines neuen Skripts zu erzwingen. Sie müssen nur laufen xmodmap ~/.Xmodmapund können dies auf verschiedene Arten tun:

  • Hinzufügen über die grafischen Startwerkzeuge
  • Bearbeiten ~/.xinitrc, um es auszuführen.
  • Hinzufügen einer neuen .desktopKonfiguration in~/.config/autostart/

Es gibt wahrscheinlich ein paar Dutzend andere Möglichkeiten, um dies zu erreichen, im Wesentlichen dasselbe.

Oli
quelle
2
Danke für den Tipp! Zum Starten hinzufügen hat nicht funktioniert und ~ / .xinitrc wird nicht beendet. Aber "xmodmap ~ / .Xmodmap" an ~ / .bashrc anhängen hat funktioniert! :)
Costales
1
Das Hinzufügen über die grafischen Starttools (in denen ein neuer Eintrag erstellt wird ~/.config/autostart) funktioniert ungefähr zur Hälfte. Ich habe jetzt ungefähr 10-mal neu gestartet und 5-mal wurde der Befehl ausgeführt und die anderen 5-mal nicht. :-(
Alexander Rechsteiner
1
@Alexander Rechsteiner: Dies scheint ein Problem in Ubuntu 16.04 zu sein. Ich habe mit Startbefehlen und Tastenzuordnungen herumgespielt, und das Verhalten scheint sehr inkonsistent zu sein. Ich bin kein Experte für diese Art von Dingen, aber es scheint absolut lächerlich, dass es passiert ...
nicorellius
6

Ich habe eine Datei /etc/X11/Xsession.d/80_xmodmapmit folgendem Inhalt hinzugefügt :

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi

Das funktioniert jedes Mal.

Stuart K. Smith
quelle
Es scheint zu funktionieren, aber dies sind die Meldungen, die ich in .xsessions-Fehlern erhalte: .Xmodmap: 1: Fehlerhaftes Keysym in der Änderungsliste 'Caps_Lock'. Keine entsprechenden Keycodes. Dies ist meine .Xmodmap: $ cat .Xmodmap 9 = Escape-Schlüsselcode 66 = Escape
MaikoID
4

Öffne gnome-session-properties. Befehl und Namen hinzufügen. Die Desktop-Datei wird in ~ / .config / autostart erstellt.

Hinweis: Verwenden Sie den absoluten Pfad , z. B. /home/xxx/.Xmodmap. Verwenden Sie niemals '~' als Ihr Heimatverzeichnis.

utopischer Ausdruck
quelle
2

In meiner langen Erfahrung mit den Schlüsseln in Ubuntu, die dauerhafte Lösung Remapping ist eine Datei mit dem Namen zu ändern evdevin /usr/share/X11/xkb/keycodes.

Führen Sie diesen Befehl an der Eingabeaufforderung aus.

sudo gedit /usr/share/X11/xkb/keycodes/evdev

Denken Sie daran, dass gedit ein Ubuntu-Texteditor ist, sodass Sie nano oder vim anstelle von gedit verwenden können.

Die Datei hat das Format: ALIAS: CODE. Sie können die Tasten tauschen, indem Sie die Codes verschiedener Tasten austauschen. Wenn Sie beispielsweise RCONTROL mit RETURN tauschen möchten, müssen Sie zwei Zeilen in evdev folgendermaßen bearbeiten:

<RTRN> = 105;

<RCTL> = 36;

Um den Nummerncode für eine Taste zu kennen, müssen Sie diese xevauf dem Terminal ausführen .

Weitere Informationen finden Sie in der Dokumentation. https://buildmedia.readthedocs.org/media/pdf/python-evdev/latest/python-evdev.pdf

GilbertS
quelle
1

Navigiere zu

/usr/share/X11/xkb/symbols

Öffnen Sie mit sudo-Berechtigungen in einem Editor das Layout, das Sie bearbeiten möchten. Ersetzen Sie die Werte.

Nach dem Neustart werden die Änderungen übernommen.


Hier ist ein Beispiel, das ich verwende, um mein Tastenfeld aufgrund von Problemen mit der Tastaturhardware neu zuzuordnen.

Beispiel für eine Tastatur-Neuzuordnung

quaeched
quelle
2
Diese Änderungen werden beim nächsten Upgrade der Pakete, die diese Dateien besitzen, überschrieben.
Muru
Das mag stimmen, aber ich bezweifle, dass diese speziell sehr oft aktualisiert werden. Ich bin seit einigen Monaten mit dieser Lösung zufrieden, seitdem ich das Problem gelöst habe, und musste kein einziges Mal zusätzliche Maßnahmen ergreifen. Um dies zu verhindern, können Sie die Datei speichern und in einem solchen Fall ersetzen oder (was sicherer erscheint) einfach den Prozess neu erstellen.
Uhr beendet
1

Nachdem ich in Google gesucht hatte, konnte ich die Neuzuordnung der fehlerhaften Tasten meines Laptops beheben. Alle fehlerhaften Tasten auf meinem Thinkpad T400 funktionieren nach dem erneuten Zuordnen einwandfrei. Außerdem ist es dauerhaft, ohne dass der CPU-Kern zusätzlich belastet wird.

  • Suchen Sie zuerst Ihr Tastaturlayout oder Ihren Tastaturcode mit dem folgenden Befehl.

    xevv -event keyboard 
    
  • Beispiel: Auf meinem Thinkpad T400 wurde der folgende Schlüsselcode gefunden:

    Keycode of "z" key is 52
    Keycode of "x" key is 53
    Keycode of "c" key is 54
    Keycode of "v" key is 55
    Keycode of "F6" key is 72
    Keycode of "F10" key is 76
    Keycode of "F11" key is 95
    Keycode of "F12" key is 96 
    
  • Neuzuordnung der Zeichentasten "z" "x" "c" "v" durch Zuweisung der Funktionstasten "F6" "F10" "F11" "F12".

  • Ändern Sie die Zeilen wie folgt (sichern Sie die Datei, bevor Sie Änderungen am Rollback vornehmen, falls etwas schief geht).

    sudo vi /usr/share/X11/xkb/keycodes/evdev
    
  • Suchen Sie die Zeilen und ändern Sie den Wert wie folgt:

    <AB01> = 72;
    <AB02> = 76;
    <AB03> = 95;
    <AB04> = 96;
    
  • Kommentieren Sie diese Zeilen oder entfernen Sie die Zeilen:

    //  <FK06> = 72;
    //  <FK10> = 76;
    //  <FK11> = 95;
    //  <FK12> = 96;
    
  • Speichern und schließen.

  • Neuzuordnung von Sondertasten.

  • Sichern Sie die Datei, bevor Sie Änderungen am Rollback vornehmen, wenn Probleme auftreten.

    cd /usr/share/X11/xkb/symbols/
    
    sudo vi pc
    
  • Füge die folgenden Zeilen in der Funktion "xkb_symbols" hinzu oder ändere sie.

    key [SCLK] {    [  Prior        ]   };
    key [PAUS] {    [  Next         ]   };
    
  • Speichern und schließen.

  • Cache leeren.

    sudo rm -rf /var/lib/xkb/*
    
  • Starten Sie neu.

Sanalgorithmus
quelle
Mit dieser Technik habe ich eine gebrochene (Cursor-) Pfeiltaste einer anderen Taste zugeordnet. Es ist einfach (xev) und drücken Sie die neue Taste, um den Scancode zu erhalten. Bearbeiten Sie dann / usr / share / X11 / xkb / keycodes / evdev, um den ursprünglichen Schlüsselcode der Pfeiltaste durch den neuen Schlüsselcode zu ersetzen und die Zeile der neuen Pfeiltaste mit dem ursprünglichen zu entfernen scancode. Wo immer ich eine Änderung vorgenommen habe, habe ich einen Kommentar abgegeben und eine Sicherungskopie der Datei erstellt. Nach einem Neustart funktioniert es einwandfrei, einschließlich Umschalt / Strg / Alt-Kombinationen mit der neuen Pfeiltaste. Die Änderung sollte auch beim Aktualisieren von Paketen und Betriebssystemversionen beibehalten werden.
Matthew
1

Grafischer Editor

gnome-tweaks > Tastatur & Maus> Zusätzliche Layoutoptionen

Wichtige Karten

Jonathan
quelle
0

Da .Xmodmap-Dateien viel einfacher zu bearbeiten sind als xkb, verwende ich .Xmodmap als Quelldatei, konvertiere sie dann in xkb (den aktuellen Standard) und lade sie beim Booten automatisch mit der .bashrc-Methode.

Es ist ein paar einfachen Schritten gebucht hier .

Funktioniert einwandfrei und verwendet xkb als zukunftssicher, wenn die Unterstützung für .Xmodmap eingestellt wird.

u2n
quelle