Einfügen der X-Auswahl (nicht des Inhalts der Zwischenablage) mit der Tastatur

84

Ich möchte die X-Auswahl über die Tastatur einfügen können. Derzeit muss ich dazu die mittlere Maustaste drücken.

Ich denke, dass es ziemlich einfach ist, einen Druck mit der mittleren Maustaste vorzutäuschen, aber eine solche Lösung würde auch erfordern, den Mauszeiger an die Stelle des Text-Carets zu bewegen.

Gibt es einen besseren Weg, dies zu tun?

intuitiert
quelle
2
Möglicherweise auch für Ubuntu: askubuntu.com/questions/7769/…
Ciro Santilli am

Antworten:

93

Bei einigen Standard-Linux-Setups führt Shift+ Insertein X-selection-paste. Wie Sie bereits bemerkt haben, unterscheidet sich dies deutlich von dem X-clipboard-pasteBefehl, dessen Bindung häufig je nach Anwendung variiert. Wenn das hier nicht funktioniert, probieren Sie ein paar andere Schlüssel aus:

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

No Go? In Ihrer Desktop-Umgebung oder Ihrem Windows-Manager sind sie wahrscheinlich nicht konfiguriert, und dies ist kompliziert, da jedes Toolkit (z. B. GTK, Qt, usw.) unter Umständen andere Standardbindungen aufweist. Einige Programme (z. B. gvim) haben sogar ihre eigenen internen Kopierregister, die nicht unbedingt mit der grafischen Umgebung synchronisiert sind, in der sie ausgeführt werden. Um das Ganze abzurunden, stehen X mehrere Systeme zur Auswahl, selbst wenn ein Programm das X-Zwischenablagesystem verwendet. Die beiden grundlegendsten sind der Auswahlpuffer - der immer das letzte ausgewählte Element enthält (das ausgeführt wird, wenn dies nicht der Fall ist) - und der Kopierpuffer - in den normalerweise speziell kopiert werden muss. Um eine explizite Kopie in das letztere System zu erstellen, können Sie eine der folgenden Größen anprobieren:

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


Wenn nichts davon magisch für Sie wirkt, gibt es zwei Möglichkeiten.

  1. Dafür gibt es eine App! ™ Verwenden Sie eines der verschiedenen Zwischenablage-Manager-Programme, um dies für Sie zu erledigen. Die beliebtesten scheinen Parcellite und Glippy zu sein , aber Sie können hier andere Alternativen ausprobieren . Siehe auch diese Frage zu erweiterten Zwischenablage-Managern

  2. Hack es selbst.

Nehmen wir also an, Sie möchten es hacken.

Abgesehen davon, dass Sie Ihren eigenen Code schreiben und in die X-API tippen, sind die Hacker-Tools für diesen Job ein paar kleine Befehlszeilen-Dienstprogramme, die Ihnen einen Einblick in X geben .

Das erste Werkzeug ist xsel. Dieser kleine Jobber wird zu jeder Zeit alles ausspucken, was sich im Auswahlpuffer von X befindet.

Jetzt müssen Sie das in Ihr Programm aufnehmen. Hierfür gibt es zwei Möglichkeiten. Eine xdotooldavon ermöglicht es Ihnen, das Senden von Ereignissen an das Xorg-Eingabesystem nachzuahmen. Sie können es die Verwendung Typ - Methode wie xdotool type foo_barzu imitieren Typisierung ‚foo_bar‘ an der Cursorposition. Zusammen ergibt sich so etwas:

$ xdotool type $(xsel)

Die andere Funktion xvkbdsendet Tastaturereignisse von einem niedrigeren Subsystem. Auf STDIN können Sie Tastatureingaben eingeben. In Kombination mit erhalten xselSie ungefähr Folgendes:

$ xsel | xvkbd -xsendevent -file -

Toll. Nun, damit diese Tastenkombination dieses Zeug ausführt. Wenn Sie Gnome-2 ausführen, können Sie eine benutzerdefinierte Verknüpfung unter System -> Einstellungen -> Tastaturkürzel hinzufügen . Wenn Sie ein anderes DE oder WM verwenden, bleibt diese Übergröße dem Leser überlassen.

Der letzte Hinweis ist, dass beim Binden von Befehlen an Tastaturkürzel oft nur ein Befehl erforderlich ist, nicht zwei Befehle, die mit einer Pipe wie oben beschrieben verbunden sind. Sie können dies erreichen, indem Sie Ihren Pipe-Befehl als Befehlszeichenfolge aufrufen, die in einer neuen Shell wie der folgenden angegeben ist:

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'
Caleb
quelle
1
Auf jeden Fall als "besser" qualifiziert. Vielen Dank!
Intuited
In welcher Anwendung? Keine der von mir verwendeten Anwendungen verhält sich häufig so.
Gilles
Ich benutze Ubuntu und möchte wirklich Shift-Insertvon praktischem Nutzen sein, aber es ist einfach nicht (in Ubuntu). Die einzige "Konsistenz (+/-)", die ich gefunden habe, ist, dass ein X- Die Auswahl in GTK-Apps kann mit der Umschalttaste in eine eingefügt werden gnome-terminal, ist jedoch für jede andere Cross-Paste-Kombination derselben Apps ein Hit-and-Miss Überhaupt Cross-Paste .... und selbst in den GTK-Apps funktioniert der
Mittelklick
Es gibt keine "X-Level-Bindung". Es könnte etwas sein, was die von Ihnen verwendeten Anwendungen tun, oder etwas, was Ihr Fenstermanager oder Ihre Desktop-Umgebung tut. Ich bezweifle, dass es spezifisch für eine Distribution wäre.
Gilles
1
Ich finde eine einfache Möglichkeit, die Tastenkombination an das Senden eines Ereignisses mit mittlerem Klick zu binden. Für mich ist das xdotool click 2.
Inductiveload
10

Anscheinend funktioniert Shift+ Insertauf einigen Installationen von GTK 3 möglicherweise nicht richtig, zumindest unter FreeBSD. Das Problem wird beschrieben als:

Shift-Insert fügt keine primäre Auswahl ein. Stattdessen muss die Zwischenablage eingefügt werden (für die Control-V bereits verwendet wird). Daher gibt es keine Möglichkeit, die primäre Auswahl nur über die Tastatur einzufügen. Man muss die Maus dorthin ziehen und mit der mittleren Maustaste klicken. Dies macht die Interaktion zwischen Terminals und GTK unkomfortabel.

Ein aktueller Fehlerbericht und ein Patch (zum Zeitpunkt des Schreibens) sind verfügbar:

http://www.freebsd.org/cgi/query-pr.cgi?pr=188264

Michael Danilov
quelle
8
xdotool click 2

Dies simuliert den Mausklick direkt und erfordert nicht die Verwendung von xsel/ xdotool type ....

bläulich
quelle
1
Hierfür muss die Maus richtig positioniert werden. Daher können Sie auch die Maustaste verwenden. Wenn es eine Möglichkeit gäbe, die Maus auf den Cursor zu
bewegen,
2

Ich benutze Ubuntu 12 und hatte ein Problem beim Einfügen von Text aus xterm in gedit (und jeder anderen App). Außerdem benutze ich einen Laptop ohne mittlere Maustaste wie viele andere (es gibt wirklich keine Gnade für die Zwischenablage für Linux-Benutzer ohne mittlere Tasten und nein: Rechtsklick + Linksklick funktioniert nicht als Ersatz).

Die Methode "xsel | xvkbd -xsendevent -file -" finde ich ziemlich cool. Ich fand die einfachste Lösung, das vorinstallierte "gnome-terminal" anstelle von "xterminal" auszuführen. "gnome-terminal" unterstützt einen Rechtsklick-Befehl zum Kopieren in die Zwischenablage. Ich könnte dann "Menü bearbeiten-> Einfügen" in gedit oder Shift-Insert verwenden. "gnome-terminal" wurde mit Ubuntu 12 vorinstalliert. Andere debian / gnome-Installationen sollten es über folgendes installieren können:

sudo apt-get install gnome-terminal

Fügen Sie es in Ubuntu zum linken Launcher hinzu, indem Sie oben in der Launcher-Leiste auf die Schaltfläche "Dash Home" klicken. Geben Sie im daraufhin angezeigten Suchfeld terminal ein. Sie können das Symbol "Terminal" in die Startleiste ziehen.

Ryan Woodard
quelle
2
Dies ist eine sehr schlechte Lösung. Man kann den Leuten nicht wirklich vorschlagen, zu einem anderen Terminal zu wechseln, insbesondere zu einem Terminal, das 100 MB + Gnome-Shell als Abhängigkeit benötigt. Damit funktioniert es auch nicht mit anderen Anwendungen, und das Schlimmste daran ist, dass Sie zum Arbeiten immer noch eine Maus verwenden müssen.
Pfrenssen