(Kommentar: Sie haben XKB gefunden! Glückwunsch, es ist ein wahres Hasenloch, wenn Sie herunterfallen. Beachten Sie, dass Ihre Lösung beim nächsten Update von ubuntus xkb-data-Paket durch diese Datei zerstört wird und sich auf alle anderen angeschlossenen Tastaturen auswirkt die dieselbe Konfiguration verwenden.)
XKB folgt einem Modell namens RMLVO - Regeln, Modell, Layout, Variante, Optionen. Ihre Lösung ändert eine Systemmodelldatei. Eine bessere Lösung wäre das Finden oder Erstellen einer Option zum Hinzufügen von Überschreibungen. ( Dies evdev
ist die Standardregel für die meisten Distributionen. Die meisten externen Tastaturen verwenden ein pc
Modell. Die internen Modelle des Laptops können jedoch bestimmte Variationen aufweisen, die bereits in der Nähe Ihrer Anwendung liegen. Eine Standard-US-QWERTY-Tastatur verwendet das us
Layout ohne Variante, obwohl dies möglich ist Wählen Sie die intl
oder altgr-intl
-varianten, wenn Sie mit anderen Sprachen arbeiten.)
Optionen sind spezifische Überschreibungen für die Basisfunktionalität. Wenn Sie CapsLock deaktivieren möchten, weil der Schlüssel nur scheiße ist, gibt es bereits eine Option für das ( caps:none
), oder Sie können stattdessen einen zusätzlichen Escape-Schlüssel ( caps:escape
) festlegen . Sie können die spezifischen Überschreibungen in sehen /usr/share/X11/xkb/symbols/caps
; Jede Zeilengruppe ist eine andere Option, die Sie zur Laufzeit aktivieren können.
In diesem setxkbmap -print
Fall erhalten Sie eine Liste Ihrer aktuellen XKB-Einstellungen:
$ setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete"}; xkb_symbols { include "pc+us+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
Erstellen Sie Ihre Überschreibungsdatei:
$ mkdir -p .config/xkb/symbols $ touch .config/xkb/symbols/pgupdown
Bearbeiten Sie nun die neue Datei mit Ihrem bevorzugten Editor und geben Sie Folgendes ein:
// mapping PgUp and PgDown to other keys partial alphanumeric_keys xkb_symbols "rwinmenu" { key <RWIN> { [ Prior ] }; key <MENU> { [ Next ] }; }; // same but switched partial alphanumeric_keys xkb_symbols "menurwin" { key <MENU> { [ Prior ] }; key <RWIN> { [ Next ] }; };
Erstellen Sie nun eine Basiskeymap:
$ setxkbmap -print > ~/.config/xkb/mymap
Bearbeiten Sie diese Datei und fügen Sie Ihre neue Option in der Symbolliste im Format hinzu +optionfile(function)
:
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete"}; xkb_symbols { include "pc+us+inet(evdev)+pgupdown(rwinmenu)" }; xkb_geometry { include "pc(pc105)" }; };
Wenn Sie sich später entscheiden, dass Sie PgUp auf der Menütaste bevorzugen stattdessen ersetzen Sie einfach rwinmenu
mit menurwin
da und du bist gut zu gehen.
Nun können Sie diese Datei laden mit xkbcomp
:
$ xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/mymap $DISPLAY
Starten Sie xev
(aus dem x11-utils
Paket) und drücken Sie die Tasten, um sicherzustellen, dass die Änderungen geladen werden:
# sed to scrape out non-kbd events; xev is pretty spammy $ xev | sed -ne '/^KeyPress/,/^$/p'
Wenn Sie alles an den richtigen Stellen erhalten haben, sollten Sie mit der Menütaste Nächste Ereignisse und mit der Win_R-Taste Prior senden. Wenn das funktioniert, können Sie die oben hinzufügen xkbcomp
Befehl zu Ihrem .xinitrc
oder .xprofile
so läuft es, wenn Sie sich anmelden oder starten X.
... es sei denn du gibst Gnome. (und / oder möglicherweise KDE.) Dann gehen wir weiter durch das Kaninchenloch und überlegen, wie man diese neue Option in Systemdateien einfügt, damit die DEs es als Standardoption nutzen können. Im Wesentlichen wird das beinhalten
- Platzieren Ihrer Optionsdatei
/usr/share/X11/xkb/symbols/
(deshalbpgupdown
war es eine gute Option, da es keine Symboldatei mit diesem Namen gibt) - und dann fügen Sie Zeilen hinzu
/usr/share/X11/xkb/rules/evdev*
(um dasoptionsfile:function
Format der Befehlszeile dem+optionsfile(function)
verwendeten von zuzuordnenxkbcomp
) - und schließlich das DE einstellen, um Ihr bevorzugtes Layout und die gewünschten Optionen zu verwenden.
Schritt 2: Wenn Sie diese Route ausführen müssen, müssen Sie möglicherweise Schritt 2 nach xkb-bezogenen Upgrades erneut ausführen.
# in /usr/share/X11/xkb/rules/evdev # find the line that starts "! option = symbols" and add new lines: pgupdown:rwinmenu = +pgupdown(rwinmenu) pgupdown:menurwin = +pgupdown(menurwin) # in /usr/share/X11/xkb/rules/evdev.lst # find the line that starts "! option" and add a new line: pgupdown:rwinmenu PgUp on RWin, PgDown on Menu pgupdown:menurwin PgUp on Menu, PgDown on RWin # in /usr/share/X11/xkb/rules/evdev.xml # .... ummm .... ¯\_(ツ)_/¯ .... sorry! ....
Schritt 3: Prüfen Sie, ob localectl
auf Ihrem System verfügbar ist. localectl
kann die Tastatur der virtuellen Konsole konfigurieren sowie eine standardmäßige X11-Tastatur einrichten. Da beide Optionen in den Regeldateien eingerichtet sind, können Sie entweder rwinmenu
oder menurwin
in diesen Befehlen verwenden.
$ localectl set-x11-keymap us pc "" pgupdown:rwinmenu # format [layout] [model] [variant] [option1,...,optionN]
Für Gnome musst du verwenden dconf-editor
oder gsettings
:
# set layout/variant $ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]" # set options $ gsettings set org.gnome.desktop.input-sources xkb-options "['pgupdown:rwinmenu']"
Eine andere Option für Gnome ist das Deaktivieren der Tastatureinstellungen. Dadurch sollte entweder die Option localectl oder die Option user-config wirksam bleiben:
$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
Fehlerbehebung: Wenn Ihre Änderungen scheinbar nicht erfasst werden und Sie sicher sind, dass Sie die Dateiformatierung richtig vorgenommen haben, löschen Sie alle *.xkm
Dateien aus /var/lib/xkb/
. Hierbei handelt es sich um vorkompilierte Keymaps, die sich möglicherweise im Weg befinden.
Ressourcen:
- http://madduck.net/docs/extending-xkb/
- http://apps.jcns.fz-juelich.de/doku/sc/xkbmap
- https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg
- https://unix.stackexchange.com/questions/66624/where-is-xkb-getting-its-configuration
- https://askubuntu.com/questions/451945/permanently-set-keyboard-layout-options-with-setxkbmap-in-gnome-unity