GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Binden von Super+C Super+V zum Kopieren und Einfügen

Super an Strg binden

Was ist mit dem Binden Ihres linken Windows/Logo/Super Taste, um als eine weitere Ctrl zu fungieren Schlüssel?

Das erreichen Sie mit den folgenden xmodmap-Befehlen:

remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L

Angenommen, Sie haben die obigen Zeilen als super_as_ctrl.xmodmap gespeichert Sie können den Effekt testen, indem Sie

ausführen
xmodmap super_as_ctrl.xmodmap

Um die Änderung dauerhaft zu machen (überlebt eine erneute Anmeldung/einen Neustart), benennen Sie die Datei in .Xmodmap um in Ihrem Home-Ordner.

(Das Obige wurde auf dem Live-System Ubuntu 11.10 getestet, sollte aber für andere Linux-Distributionen gleich sein)

Kopieren/Einfügen-Verknüpfungen für Ihr Terminalprogramm anpassen

Super gebunden haben bis Ctrl Sie können jetzt Super-C verwenden fast überall zu kopieren. Die einzige häufige Ausnahme ist Ihr Terminalprogramm. Sie können die Shortcuts dort jedoch neu definieren.

Das habe ich sogar gnome-terminal herausgefunden hat diese Option inzwischen (hatte ich nicht, bis ich mich an Ctrl-Shift-C gewöhnt hatte ohnehin). Falls Sie diesen verwenden, gehen Sie zu Edit / Keyboard Shortcuts... im Menü und vergeben Sie Ctrl-C zu kopieren und Ctrl-V einfügen. Sollte für konsole ähnlich sein usw.

Und keine Sorge, Sie verlieren nicht die Möglichkeit, ein Programm über eine Verknüpfung zu beenden. Nachdem Sie die Kopierverknüpfung für das Terminal neu gebunden haben, können Sie einfach Ctrl-Shift-C verwenden wie Sie Ctrl-C verwendet haben Vor. Das Terminal unterscheidet hier nicht, ob Shift gedrückt ist oder nicht. Und die Verknüpfung wird nicht mehr für die Kopie abgefangen. Binden Sie die Terminierung alternativ an eine andere Verknüpfung, wie MountainX in seiner Antwort vorschlägt.

XF86Copy etc. funktionieren nicht

Zu den Tastensymbolen für Kopieren und Einfügen:Scheinbar ohne Wirkung. Ich habe es schnell getestet, indem ich die Kopieraktion Shift-ScrollLock zugewiesen habe (es war unbenutzt und ich wollte mit einer Nicht-Modifikatortaste testen):

xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'

Das Drücken hatte keine Wirkung, auch nicht mit XF86AudioMute. Bei der Zuweisung des Buchstabens 'a' hat es jedoch funktioniert. Ich vermute also, dass es ein spezifisches Problem mit diesen XF86-Sondertastensymbolen gibt.


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, zum Beispiel damit (wie vom OP gewünscht) diese Bestimmte Super-Tasten-Sequenzen werden im Allgemeinen dem Ausschneiden und Einfügen zugeordnet, ohne dass andere Verwendungen der Super-Taste auf Ihrem System beeinträchtigt werden. Dies ist nur mit der XKB-Erweiterung möglich. Das folgende Verfahren umreißt die Schritte und gibt zwei verschiedene Beispiele für die Details für zwei verschiedene Start-Tastatur-Setups; Hoffentlich liefert das genügend 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, einschließlich solcher an Systemspeicherorten wie /usr/share/X11/xkb .

  1. Entscheiden Sie, wo sich Ihr XKB-Konfigurationsbaum befinden soll. Suchen Sie zuerst das System eins. Es befindet sich normalerweise in /usr/share/X11/xkb, und ich bin mir nicht ganz sicher, wie ich es finden soll, wenn es nicht dort ist; Sie könnten Ihr System einfach nach Verzeichnissen mit dem Namen "xkb" durchsuchen. Wie auch immer, sobald Sie es gefunden haben, können Sie entweder das System direkt ändern oder ein beliebiges Verzeichnis Ihrer Wahl verwenden. Der Vorteil bei der Verwendung des Systemverzeichnisses besteht darin, dass Sie Ihre Änderungen viel einfacher aufrufen können, aber der Nachteil ist, dass zukünftige Systemaktualisierungen Ihre Änderungen überschreiben könnten (Sie wurden gewarnt). In jedem Fall beziehen sich alle im Folgenden erwähnten Dateinamen auf dieses Verzeichnis, das ich bei Bedarf als $XKBLOCAL$ bezeichnen werde, und alle Befehle gehen davon aus, dass dies Ihr aktuelles Verzeichnis ist.

  2. Bestimmen Sie, welchen XKB-"Schlüsseltyp" die aktuellen Schlüssel x, c, v haben. Am einfachsten geht das über den Befehl xkbcomp -a $DISPLAY - | grep -C 6 c, (Beachten Sie, dass das Komma absichtlich im Muster enthalten ist). In meinem ersten Beispiel-Setup erzeugt dies:

    key <AB02> {
        type= "ALPHABETIC",
        symbols[Group1]= [               x,               X ]
    };
    key <AB03> {
        type= "ALPHABETIC",
        symbols[Group1]= [               c,               C ]
    };
    key <AB04> {
        type= "ALPHABETIC",
        symbols[Group1]= [               v,               V ]
    };
    key <AB05> {
    

    während dies in meinem anderen Beispiel-Setup erzeugt

    key <AB02> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               x,               X, approxeq,     dead_ogonek ]
    };
    key <AB03> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               c,               C, ccedilla,        Ccedilla ]
    };
    key <AB04> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               v,               V, squareroot,           U25CA ]
    };
    key <AB05> {
    

    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 ganz anderen Typ handelt. Im Folgenden wird der Typ als $TYPE$ bezeichnet, den Sie in den folgenden Befehlen durch die tatsächliche Zeichenfolge ALPHABETIC oder was auch immer ersetzen müssen.

  3. 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 Datei "cutpaste", den ich gewählt habe, ist willkürlich, verwenden Sie einen beliebigen Namen, aber beachten Sie, dass Sie in späteren Schritten konsequent auf diese Datei verweisen müssen. Bei der ersten Einrichtung erhält diese Datei den Inhalt

    type "ALPHABETIC" {
        modifiers= Shift+Lock;
        map[Shift]= Level2;
        map[Lock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Caps";
    };
    

    und im anderen Beispiel erhält es den Inhalt

    type "FOUR_LEVEL" {
        modifiers= Shift+LevelThree;
        map[Shift]= Level2;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        level_name[Level1]= "Base";
        level_name[Level2]= "Shift";
        level_name[Level3]= "Alt Base";
        level_name[Level4]= "Shift Alt";
    };
    
  4. Bearbeiten Sie die Dateitypen/Cutpaste, um zwei Dinge zu tun:Fügen Sie eine Präambel und eine Postambel hinzu, die sie zu einer richtigen XKB-Klausel machen, und ändern Sie den Typnamen und die Typdefinition, um eine weitere Ebene hinzuzufügen, die von dem Modifikator erzeugt wird, der Super entspricht. Sie sollten überprüfen, was dieser Modifikator auf Ihrem System ist, es ist wahrscheinlich Mod4, wie unten verwendet. Die notwendigen Modifikationen sollten aus den beiden beispielhaften Endversionen von types/cutpaste ersichtlich sein, nämlich:

    default partial xkb_types "addsuper" {
        type "ALPHABETIC_SUPER" {
            modifiers= Shift+Lock+Mod4;
            map[Shift]= Level2;
            map[Lock]= Level2;
            map[Mod4]= Level3;
            map[Shift+Mod4]= Level3;
            map[Lock+Mod4]= Level3;
            level_name[Level1]= "Base";
            level_name[Level2]= "Caps";
            level_name[Level3]= "With Super";
        };
    };
    

    und

    default partial xkb_types "addsuper" {
        type "FOUR_LEVEL_SUPER" {
            modifiers= Shift+LevelThree+Mod4;
            map[Shift]= Level2;
            map[LevelThree]= Level3;
            map[Shift+LevelThree]= Level4;
            map[Mod4]= Level5;
            map[Shift+Mod4] = Level5;
            map[LevelThree+Mod4] = Level5;
            map[Shift+LevelThree+Mod4] = Level5;
            level_name[Level1]= "Base";
            level_name[Level2]= "Shift";
            level_name[Level3]= "Alt Base";
            level_name[Level4]= "Shift Alt";
            level_name[Level5]= "With Super"';
       };
    };
    
  5. Kopieren Sie die Schlüsselsymboldefinitionen, die im zweiten Schritt von grep ausgegeben wurden, in eine zweite neue Datei, Symbole/Cutpaste, und fügen Sie eine ähnliche Präambel und Postambel hinzu, und ändern Sie die Definitionen, um die neuen Typen zu verwenden, und fügen Sie Aktionen zur Definition hinzu, um den gewünschten Schlüssel zu handhaben von den Super-Versionen produziert. Die Ergebnisse davon in unseren beiden Beispielen sind:

    default partial xkb_symbols "superversions" {
        replace key <AB02> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               x,               X, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               c,               C, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> {
            type[Group1]= "ALPHABETIC_SUPER",
            symbols[Group1]= [               v,               V, NoSymbol ],
            actions[Group1]= [      NoAction(),      NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    und

    default partial xkb_symbols "superversions" {
        replace key <AB02> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
        };
        replace key <AB03> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
        };
        replace key <AB04> { 
            type[Group1]= "FOUR_LEVEL_SUPER",
            symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
            actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
        };
    };
    

    Beachten Sie, dass ich im zweiten Beispiel auch einige der (nicht signifikanten) Leerzeichen herausgedrückt habe, um die Zeilenlänge ein wenig unter Kontrolle zu halten.

  6. Suchen Sie den Namen des Regelsatzes, den XKB derzeit verwendet. Das ist ganz einfach, es wird im Ergebnis von setxkbmap -query angezeigt . In meinem Fall war es "evdev".

  7. 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. Sie haben hier zwei Möglichkeiten:Sie können alle evdev kopieren oder nur die Teile, die das Tastaturmodell, das Layout, die Variante und die Option(en) erwähnen, die Sie tatsächlich verwenden. Wenn Sie die vorhandenen Systemdateien ändern, müssen Sie natürlich nichts kopieren, sondern nur bearbeiten.

    In diesem Fall ist das, was hinzugefügt wird, unabhängig von der anfänglichen Tastaturkonfiguration identisch, daher gibt es nur ein Beispiel. Sie finden den Abschnitt der Regeldatei, der mit ! option = symbols beginnt und fügen Sie eine Zeile hinzu cutpaste:super = +cutpaste zu diesem Abschnitt, und Sie finden auch den Abschnitt der Regeldatei, der mit ! option = types beginnt und eine Zeile cutpaste:super = +cutpaste auch zu diesem Abschnitt.

  8. 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 angehängter .lst-Datei entspricht. Wie im vorherigen Schritt können Sie entweder die gesamte Datei kopieren oder nur den Teil, auf den durch das verwendete Modell, Layout, die Variante und die Option(en) verwiesen wird. Sie müssen nur den Abschnitt dieser Datei finden, der mit ! option beginnt und fügen Sie eine Zeile wie diese hinzu:cutpaste:super Add super equivalents of cut and paste operations zu diesem Abschnitt.

  9. OK, jetzt sind alle Konfigurationsdateien vorhanden. Wenn Sie die Systemdateien geändert haben, können Sie jetzt Ihre neue Option mit setxkbmap -option cutpaste:super aufrufen . Andererseits, wenn Sie dies nicht getan haben, 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 sagt es ihm nicht (oder kann es vielleicht nicht, da der Server letztendlich auf einer anderen Maschine laufen könnte). Sie müssen also die Ausgabe von setxkbmap an xkbcomp weiterleiten und diesem Befehl auch mitteilen, wo sich Ihr $XKBLOCAL-Verzeichnis befindet. Die vollständige Befehlszeile ist daher setxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY .

Hoffentlich ist dies für jemanden hilfreich/interessant, da eine gute endgültige XKB-Dokumentation/Referenz rar ist. Eine sehr hilfreiche Referenz war http://madduck.net/docs/extending-xkb/.


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 erreichen. Also entschied ich mich für etwas, das einfach ist und das für mehr als 90 % meiner Anforderungen funktioniert. Ich kann es in wenigen Minuten auf jedem Computer (oder jeder neuen Linux-Installation) implementieren. Es ist kinderleicht.

Legen Sie in der X-Terminal-Anwendung die Verknüpfungseinstellungen fest. Ich habe dies sowohl in Gnome als auch in KDE getan. Gehen Sie beispielsweise in Konsole zu Menü> Einstellungen> Verknüpfungen konfigurieren. Es gibt ein ähnliches Menü im Gnome X-Terminal. Wählen Sie einfach die Tastenkombination (z. B. „Kopieren“) und geben Sie die gewünschte Tastenfolge ein.

Falls die Tastenkombinationen zum Kopieren und Einfügen des Terminals mit 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 (damit das X-Terminal dem CUA-Standard entspricht)?

In diesem Fall können Sie die stty-Tastenzuordnungen einfach ändern (in .bashrc). Setzen Sie das Beispiel mit STRG-C zum Kopieren fort und sagen Sie, Sie möchten, dass die Unterbrechungstaste jetzt STRG-b (für "Pause") ist. Dies erreicht Folgendes:

echo "stty intr \^b" >> ~/.bashrc 

Dann source .bashrc.

Die gesamte Lösung ist so einfach wie die Verwendung der X-Terminals-Einstellungen zum Ändern von Verknüpfungen und dann optional das Auflösen von Konflikten mit stty mit einem einzeiligen echo-Befehl. Absolut einfach und deckt fast alles ab, was ich brauche.


Linux
  1. Kopieren und Einfügen in der Linux-Befehlszeile mit xclip

  2. Ein Superblock, Inode, Dentry und eine Datei?

  3. Vermeiden Sie die Eingabetaste Cp -i?

  4. Beheben Sie Fehler beim Kopieren und Einfügen mit Remote Desktop

  5. Kopieren und Einfügen funktioniert nicht unter rdesktop

Kopieren Sie Text und fügen Sie ihn in das Terminal unter Ubuntu 22.04 ein

Wie man in Vim / Vi kopiert, ausschneidet und einfügt

So kopieren und fügen Sie Text im Linux-Terminal ein

Wie man in Ubuntu kopiert und einfügt

Unix- und Linux-Geschichte

Wie generiert und verwendet man einen SSH-Schlüssel in einem Linux-System?