Binding Super to Ctrl
Was ist mit dem Binden Ihres linken Windows/Logo/Super
Schlüssels, um als ein anderer Ctrl
Schlüssel zu fungieren ?
Sie können dies mit den folgenden xmodmap-Befehlen erreichen:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
Angenommen, Sie haben die obigen Zeilen gespeichert, da super_as_ctrl.xmodmap
Sie den Effekt durch Ausführen testen können
xmodmap super_as_ctrl.xmodmap
Um die Änderung dauerhaft zu machen (nach dem erneuten Anmelden / Neustarten), benennen Sie die Datei in .Xmodmap
in Ihrem privaten Ordner um.
(Das obige wurde auf Ubuntu 11.10 Live-System getestet, sollte aber für andere Linux-Distributionen gleich sein.)
Anpassen der Verknüpfungen zum Kopieren / Einfügen für Ihr Terminalprogramm
Nachdem Sie an sich gebunden haben Super
, können Ctrl
Sie jetzt Super-C
fast überall kopieren. Die einzige häufige Ausnahme ist Ihr Terminalprogramm. Sie können die Verknüpfungen dort jedoch neu definieren.
Ich fand heraus, dass gnome-terminal
es diese Option mittlerweile sogar gibt (ich hatte sie Ctrl-Shift-C
sowieso nicht, bis ich mich daran gewöhnt hatte). Wenn Sie dieses verwenden, gehen Sie Edit / Keyboard Shortcuts...
in das Menü und weisen Sie es Ctrl-C
dem Kopieren und Ctrl-V
Einfügen zu. Sollte für konsole
etc. ähnlich sein
Und keine Sorge, Sie verlieren nicht die Möglichkeit, ein Programm über eine Verknüpfung zu beenden. Nach dem erneuten Binden der Kopierverknüpfung für das Terminal können Sie sie Ctrl-Shift-C
wie Ctrl-C
zuvor verwenden. Das Terminal unterscheidet hier nicht, ob die Umschalttaste gedrückt wurde oder nicht. Und die Verknüpfung wird für die Kopie nicht mehr abgefangen. Binden Sie alternativ die Beendigung auf eine andere Verknüpfung zurück, wie MountainX in seiner Antwort vorschlägt.
XF86Copy usw. funktionieren nicht
Zu den Schlüsselsymbolen für Kopieren und Einfügen: Anscheinend haben sie keine Wirkung. Ich habe es schnell getestet, indem ich die Kopieraktion Shift-ScrollLock zugewiesen habe (sie wurde nicht verwendet und ich wollte mit einer Taste ohne Modifikator testen):
xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'
Drücken hatte keine Auswirkung, auch nicht mit XF86AudioMute. Es hat jedoch funktioniert, als der Buchstabe 'a' zugewiesen wurde. Ich schätze, es gibt ein spezielles Problem mit diesen XF86-Sondertastensymbolen.
Wenn Sie nur einige Sequenzen der Form Super + x, Super + c, Super + v an andere Sequenzen wie Strg + x, Strg + c, Strg + v binden möchten, so dass (wie vom OP gewünscht) diese Bestimmte Super-Key-Sequenzen können im Allgemeinen ausgeschnitten und eingefügt werden, ohne dass der Super-Key auf Ihrem System anderweitig verwendet wird. Dies ist nur mit der XKB-Erweiterung möglich. Das folgende Verfahren beschreibt die Schritte und gibt zwei verschiedene Beispiele für die Details für zwei verschiedene Starttastatur-Setups. Hoffentlich liefert dies genug Informationen, um sich an Ihr System anzupassen. Es wird davon ausgegangen, dass Sie mit dem Erstellen und Bearbeiten von Dateien auf Ihrem System vertraut sind, auch an Systemstandorten wie
/usr/share/X11/xkb
.Entscheiden Sie, wo sich Ihr XKB-Konfigurationsbaum befinden soll. Finden Sie zuerst das System ein. Es befindet sich normalerweise in / usr / share / X11 / xkb, und ich bin nicht sicher, wie ich es finden soll, wenn es nicht vorhanden ist. Sie könnten Ihr System einfach nach Verzeichnissen mit dem Namen "xkb" durchsuchen. Sobald Sie es gefunden haben, können Sie entweder das vorhandene System ändern oder ein beliebiges Verzeichnis Ihrer Wahl verwenden. Der Vorteil der Verwendung des Systemverzeichnisses besteht darin, dass Sie Ihre Änderungen viel einfacher aufrufen können. Der Nachteil besteht jedoch darin, dass zukünftige Systemaktualisierungen Ihre Änderungen möglicherweise überschreiben (Sie wurden gewarnt). In jedem Fall beziehen sich alle im Folgenden genannten Dateinamen auf dieses Verzeichnis, das ich bei Bedarf als $ XKBLOCAL $ bezeichne, und alle Befehle gehen davon aus, dass dies Ihr aktuelles Verzeichnis ist.
Bestimmen Sie, welcher XKB-Schlüsseltyp die aktuellen x-, c- und v-Schlüssel sind. Dies geschieht am einfachsten über den Befehl
xkbcomp -a $DISPLAY - | grep -C 6 c,
(beachten Sie, dass das Komma absichtlich im Muster enthalten ist). In meinem ersten Beispiel erzeugt dies:wohingegen in meinem anderen Beispiel-Setup dies erzeugt
Das Ergebnis ist, dass im ersten Beispiel die relevanten Schlüssel vom Typ "ALPHABETIC" sind, während sie im zweiten Beispiel vom Typ "FOUR_LEVEL" sind. Abhängig von Ihrer Tastaturkonfiguration stellen Sie möglicherweise fest, dass es sich um einen anderen Typ handelt. Im Folgenden wird der Typ als $ TYPE $ bezeichnet, den Sie in den folgenden Befehlen durch die tatsächliche Zeichenfolge ALPHABETIC oder eine andere ersetzen müssen.
Suchen Sie die Definition von $ TYPE $ und kopieren Sie sie in eine neue Datei im Verzeichnis $ XKBLOCAL $ / types. Hier ist ein Befehl, der genau das tut:
xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. Der Name der von mir gewählten Datei "cutpaste" ist willkürlich. Verwenden Sie einen beliebigen Namen. Beachten Sie jedoch, dass Sie in späteren Schritten immer wieder auf diese Datei verweisen müssen. Im ersten Setup erhält diese Datei den Inhaltund im anderen Beispiel wird der Inhalt abgerufen
Bearbeiten Sie die Dateitypen / cutpaste, um zwei Dinge zu tun: Fügen Sie eine Präambel und eine Postambel hinzu, die es zu einer richtigen XKB-Klausel machen, und ändern Sie den Typnamen und die Typdefinition, um eine weitere Ebene hinzuzufügen, die vom Super-Modifikator erzeugt wird. Sie sollten überprüfen, welcher Modifikator auf Ihrem System vorhanden ist. Es handelt sich wahrscheinlich um Mod4, wie es im Folgenden verwendet wird. Die notwendigen Änderungen sollten aus den beiden endgültigen Beispielversionen von Typen / Cutpaste ersichtlich sein, nämlich:
und
Kopieren Sie die Schlüsselsymboldefinitionen, die von grep im zweiten Schritt ausgegeben wurden, in eine zweite neue Datei symbols / cutpaste und fügen Sie eine ähnliche Präambel und Postambel hinzu. Ändern Sie die Definitionen, um die neuen Typen zu verwenden, und fügen Sie der Definition Aktionen hinzu, um den gewünschten Schlüssel zu verarbeiten produziert von den Super-Versionen. Die Ergebnisse davon in unseren zwei Beispielen sind:
und
Beachten Sie, dass ich im zweiten Beispiel auch einige (nicht signifikante) Leerzeichen herausgedrückt habe, um die Zeilenlänge unter Kontrolle zu halten.
Suchen Sie den Namen des Regelsatzes, den XKB derzeit verwendet. Das ist einfach, das zeigt das Ergebnis von
setxkbmap -query
. In meinem Fall war es "evdev".Kopieren Sie die Systemversion von rules / evdev (oder wie auch immer der Name Ihres Regelsatzes lautet) nach $ XKBLOCAL $ / rules / evdev und fügen Sie Regeln hinzu, die auf die von uns erstellten Optionen verweisen. Hier haben Sie zwei Möglichkeiten: Sie können entweder alle evdev-Dateien oder nur die Teile kopieren, in denen das Tastaturmodell, das Layout, die Variante und die Optionen aufgeführt sind, die Sie tatsächlich verwenden. Wenn Sie die vorhandenen Systemdateien ändern, müssen Sie natürlich nicht kopieren, sondern nur bearbeiten.
In diesem Fall ist das, was hinzugefügt wird, unabhängig von der anfänglichen Tastaturkonfiguration identisch. Es gibt also nur ein Beispiel. Sie finden den Abschnitt der Regeldatei, der mit "" beginnt,
! option = symbols
und fügencutpaste:super = +cutpaste
diesem Abschnitt eine Zeile hinzu. Außerdem finden Sie den Abschnitt der Regeldatei, der mit "" beginnt,! option = types
und eine Zeilecutpaste:super = +cutpaste
zu diesem Abschnitt.Kopieren Sie die Systemversion von evdev.lst und fügen Sie eine Zeile für Ihre neue Option hinzu. Beachten Sie, dass der Name dieser Datei einfach dem Namen der Regeldatei mit angefügtem .lst entspricht. Wie im vorherigen Schritt können Sie entweder die gesamte Datei oder nur den Teil kopieren, auf den sich das verwendete Modell, Layout, die Variante und die verwendeten Optionen beziehen. Sie müssen nur den Abschnitt dieser Datei finden, der mit beginnt,
! option
und eine Zeile wie die folgende hinzufügen:cutpaste:super Add super equivalents of cut and paste operations
zu diesem Abschnitt.OK, jetzt sind alle Konfigurationsdateien vorhanden. Wenn Sie die Systemdateien geändert haben, können Sie jetzt Ihre neue Option mit aufrufen
setxkbmap -option cutpaste:super
. Andernfalls müssen Sie setxkbmap mitteilen, wo sich Ihr $ XKBLOCAL $ -Verzeichnis befindet. Was noch schlimmer ist, der Server weiß auch nicht, wo sich dieses Verzeichnis befindet, und setxkbmap weiß es nicht (oder kann es möglicherweise nicht, da der Server letztendlich auf einem anderen Computer ausgeführt wird). Sie müssen also die Ausgabe von setxkbmap an xkbcomp leiten und diesem Befehl auch mitteilen, wo sich Ihr $ XKBLOCAL-Verzeichnis befindet. Die volle Kommandozeile ist alsosetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.Hoffentlich ist dies für jemanden hilfreich / interessant, da eine gute definitive XKB-Dokumentation / Referenz rar ist. Eine sehr hilfreiche Referenz war http://madduck.net/docs/extending-xkb/ .
quelle
setxkbmap -option
. Mein lokales Setup war fast identisch mit dem FOUR_LEVEL-Beispiel, mit Ausnahme einiger Symbole der Gruppen 2 und 3, die ich aus der Teilsymboldatei herausgelassen habe, sodass meine Datei genauso aussah wie die Beispiele.Hier ist was ich tue. Es ist nicht die ultimative Lösung, aber ich habe versucht, die ultimative Lösung zu erreichen und konnte es nach viel Mühe nicht schaffen. Also habe ich mich für etwas entschieden, das einfach ist und mehr als 90% meiner Bedürfnisse erfüllt. Ich kann es in wenigen Minuten auf jedem Computer implementieren, auf den ich gehe (oder auf dem ich Linux neu installiere). Es ist ganz einfach.
Legen Sie in der X-Terminal-Anwendung die Voreinstellungen für Verknüpfungen fest. Ich habe dies sowohl in Gnome als auch in KDE getan. Gehen Sie in Konsole beispielsweise zu Menü> Einstellungen> Verknüpfungen konfigurieren. Es gibt ein ähnliches Menü im Gnome X-Terminal. Wählen Sie einfach die Verknüpfung (z. B. "Kopieren") und geben Sie die gewünschte Tastenfolge ein.
Falls die Verknüpfungen zum Kopieren und Einfügen des Terminals mit den Terminalbefehlen in Konflikt stehen, gibt es auch dafür eine einfache Lösung. Was ist zum Beispiel, wenn jemand STRG-C zum Kopieren verwenden möchte (sodass das X-Terminal dem CUA-Standard entspricht)?
In diesem Fall können Sie die Tastaturbelegung einfach ändern (in .bashrc). Setzen Sie die STRG-C-Taste zum Kopieren fort und sagen Sie, dass die Interrupt-Taste jetzt STRG-b sein soll (für "break"). Dadurch wird Folgendes erreicht:
Dann geben Sie .bashrc ein.
Die gesamte Lösung ist so einfach wie die Verwendung der X-Terminal-Einstellungen zum Ändern von Verknüpfungen und optional zum Lösen von Konflikten mit stty mit einem einzeiligen Echo-Befehl. Ganz einfach und deckt fast alles ab, was ich brauche.
quelle
Wahrscheinlich ist die Windows-Taste die Modifizierertaste. Führen Sie dies aus und versuchen Sie es erneut:
quelle
xmodmap -e 'remove Mod1 = Meta_L'
und Ausprobieren Ihrer Befehle danach) hat für mich gut funktioniert.Ich habe einiges von dem, was Glen Whitney gesagt hatte, übernommen und es geschafft, dieses Wissen zu nutzen, um das Verhalten von MacOS bei der Wortverschlechterung oder Textmanipulation in einer benutzerdefinierten Keymap abzubilden.
Ich habe das Problem mit dem Kopieren und Einfügen von Strg und Super bereits gelöst, ohne diese spezielle Lösung zu berücksichtigen, aber wie gesagt, es war für andere Dinge sehr hilfreich. Ich habe auch Dinge wie xmodmap vermieden, da ich irgendwann Wayland voll unterstützen möchte. Kinto verwendet das native xkb und respektiert das erwartete Verhalten von macOS-ähnlichen Terminals.
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Hier ist auch eine Zusammenfassung: Wenn Sie nur sehen möchten, was das Herzstück des Ganzen ist, wird Ihre Tastaturbelegung bei Bedarf nicht geändert. Das Gist enthält auch keine benutzerdefinierten xkb-Keymap-Dateien, mit denen Cursor im MacOS-Stil oder wortweise Manipulationen mit Cmd und den Pfeiltasten eingerichtet werden.
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
Hauptinhalt
quelle