Warum fügt Shift + Insert in einigen Anwendungen aus CLIPBOARD ein und in anderen Anwendungen PRIMARY?


29

Wie füge ich aus der PRIMARY-Auswahl (z. B. mit der Maus ausgewählten Text) eine Tastenkombination ein? Shift+InsertFügt je nach Anwendung inkonsistent PRIMARY oder CLIPBOARD ein.

Hintergrund:

Ctrl+Ckopiert den ausgewählten Text in das CLIPBOARD, während die Maus nach PRIMARY kopiert. Einfügen aus CLIPBOARD mit Ctrl+Vund Einfügen aus PRIMARY mit mouse-middle-click.

Fügen Sie in einem Terminal-Emulator (Gnome-Terminal) aus CLIPBOARD mit ein Ctrl+Shift+V. (Einfügen aus PRIMARY mit mouse-middle-clickstill.)

Ich möchte PRIMARY mit einer Tastenkombination einfügen. In gnome-terminal ist dies Shift+Insertaber in gedit und Firefox das Shift+InsertEinfügen von CLIPBOARD. Ich möchte eine Verknüpfung, die konsequent aus CLIPBOARD eingefügt wird, und eine andere Verknüpfung, die konsequent aus PRIMARY eingefügt wird.

Ich verwende Ubuntu 14.04 mit xmonad und Firefox 34.0

Antworten:


30

Alle Apps, die Sie erwähnt haben, sind gtk+Apps, daher ist es recht einfach zu beantworten, warum ... Weil in allen gtk+ Apps ( mit einer Ausnahme ) Shift+ Insertvon CLIPBOARD eingefügt wird - dh, es entspricht Ctrl+ V. Die Verknüpfung ist in gtkentry.c(Zeile 2022) und gtktextview.c(Zeile 1506) fest codiert:

gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
                "paste-clipboard", 0);

Es ist auch im GTK + 3-Referenzhandbuch dokumentiert unter GtkEntry:

The “paste-clipboard” signal
void
user_function (GtkEntry *entry,
               gpointer  user_data)
The ::paste-clipboard signal is a keybinding signal which gets emitted
to paste the contents of the clipboard into the text view.
The default bindings for this signal are Ctrl-v and Shift-Insert.

Soweit ich das weiß , wurde die Übereinstimmung mit anderen der getan (siehe KDE‚s QtTastenbelegungen in QTextEdit Classund Windows O) 1 .
Die einzige Ausnahme ist gnome-terminal. Nach langen Debatten haben sich die Entwickler entschieden (für die Übereinstimmung mit anderen Terminals) , die, in gnome-terminal, Shift+ Insertsollte von der Grundpaste und Ctrl+ Shift+ Vsollte aus Zwischenablage einfügen (obwohl Sie die Optionen haben einige Verknüpfungen zu gestalten).


Was Wie Sie ist Sie die Auswahl mit einer Tastenkombination einfügen ... es keine einfache Art und Weise.

Am einfachsten ist es, einem ausgeführten Skript eine Verknüpfung zuzuweisen xdotool click 2(simuliert das Klicken mit der mittleren Maustaste). Während dies funktioniert (und es sollte mit allen oder den meisten DEs und Toolkits funktionieren), funktioniert es nur, wenn sich der Mauszeiger tatsächlich über dem Texteingabefeld befindet, andernfalls schlägt es fehl.

Eine andere relativ einfache Möglichkeit ist Gnome Accessibility, sofern es auf Ihrem System verfügbar ist. Es erfordert auch das Vorhandensein eines Nummernblocks. Gehe zu Universal Access>> Pointing & Clickingund aktiviere Mouse Keys. Stellen Sie sicher, dass ausgeschaltet NumLockist. Sie können dann die Zifferntasten verwenden, um den Cursor zu bewegen und zu klicken. Um einen Klick mit der mittleren Maustaste zu simulieren, drücken Sie (und lassen Sie) *(Sternchen) und dann 5(hier eine kurze Anleitung ). Diese Lösung scheint immer in einer gtk+Umgebung zu funktionieren . Der Nachteil ist, dass es erforderlich ist Gnome Accessibilityund ein Nummernblock. Sie können die Verknüpfung auch nicht anpassen.

Eine interessante Lösung wurde für Gnome-Bugzilla (Bug 643391) vorgeschlagen . (Update 2018: Das Problem wurde jetzt hierher verschoben .) Dazu müssen einige Quelldateien gepatcht und Konfigurationsoptionen in ~/.config/gtk-3.0/gtk.css(oder ~/.gtkrc-2.0für gtk+2 Apps) festgelegt werden. Ich habe es nicht persönlich ausprobiert, aber das Feedback ist positiv.

Idealerweise würden Sie die Quelldateien Patch und ein definieren "paste-selection"Signal dann binden Shift+ Insertan "paste-selection"statt "paste-clipboard". Andys Code (der im oben verlinkten Fehlerbericht enthalten ist) könnte als Anleitung dafür dienen. Sogar dann würde es nur gtk+Apps betreffen (ich bin kein KDE/QtTyp, also habe ich keine Ahnung, wie ich das QtVerhalten von Apps ändern soll ).


1: (ganz zu schweigen von IBMs CUA)


2
Danke für diese Erklärung. Es ist schade, dass es keine bessere Lösung gibt. Ich vermisse eine konsistente Tastenkombination für PRIMARY sehr. Die Umgehung der Mausemulation hilft nicht viel, da der Sinn der Verknüpfung darin besteht, nicht mit der Maus umgehen zu müssen.
didi_X8

1

Es tut mir leid: Ich kann wegen Rufes keinen Kommentar schreiben, also schreibe ich als Antwort. Es ist keine direkte Lösung, aber es hilft mir ...

Sie können eine Kombination von Informationen verwenden:

  1. Bearbeiten Sie das GTK-Thema und erlauben Sie die Tastenbelegung nach Ihren Wünschen .

  2. Beispiel für die Erstellung einer GTK 3.0-Tastenkombination in CSS des Themas .

  3. Beispiel für das Überschreiben und Aufheben der Bindung von GTK-Tastenkombinationen .

  4. Beispiel für das Ändern der Tastenkombination für das Gnome-Terminal

  5. Autostart von Autocutsel mit Standardoptionen für die Synchronisierung von CLIPBOARD mit CUTBUFFER (optional). Dieser Link dient nur zur Information über das Problem.

  6. Verwenden Sie clipman, um auf mehrere Puffer (PRIMARY und CLIPBOARD) zuzugreifen, ohne dass eine automatische Synchronisierung ausgewählt ist (bidirektionale automatische Synchronisierung führt zu Fehlern).

Also wähle ich einfach gtk theme aus und ändere das Theme-CSS auf die erforderlichen Tastenkombinationen für die Signale copy-clipboard (Strg + Insert) und paste-clipboard (Shift + Insert).


1
Dies könnte der Beginn einer guten Antwort sein, wenn Sie den Inhalt dieser Links übernehmen und die Informationen kombinieren. Gegenwärtig handelt es sich nur um eine Sammlung von Links, die möglicherweise gelöscht werden. Bitte geben Sie die Informationen ein, damit sie direkt in der Antwort erscheinen. Ich bin mir sicher, dass Sie positive Bewertungen erhalten (wodurch Sie genug Ruf haben, um Kommentare abzugeben). Vielen Dank!
Toby Speight
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.