Warum fügt Umschalt+Einfügen in manchen Anwendungen aus der Zwischenablage ein und in anderen aus dem Primärspeicher?

Warum fügt Umschalt+Einfügen in manchen Anwendungen aus der Zwischenablage ein und in anderen aus dem Primärspeicher?

Wie füge ich mit einer Tastenkombination aus der PRIMÄREN Auswahl (z. B. mit der Maus ausgewählter Text) ein? Shift+InsertFügt je nach Anwendung inkonsistent aus der PRIMÄREN Auswahl oder aus der ZWISCHENABLAGE ein.

Hintergrund:

Ctrl+Ckopiert ausgewählten Text in die Zwischenablage, während eine Mausauswahl in das primäre Verzeichnis kopiert. Einfügen aus der Zwischenablage mit Ctrl+Vund Einfügen aus dem primären Verzeichnis mit mouse-middle-click.

In einem Terminalemulator (Gnome-Terminal) fügen Sie mit aus der Zwischenablage ein Ctrl+Shift+V. (Mit mouse-middle-clickstill aus dem PRIMARY-Bereich einfügen.)

Ich möchte mit einer Tastenkombination aus PRIMARY einfügen. In Gnome-Terminal ist dies Shift+Insert, aber in Gedit und Firefox Shift+Insertwird aus CLIPBOARD eingefügt. Ich möchte eine Tastenkombination, die immer aus CLIPBOARD einfügt, und eine andere Tastenkombination, die immer aus PRIMARY einfügt.

Ich verwende Ubuntu 14.04 mit xmonad und Firefox 34.0

Antwort1

Alle Apps, die Sie erwähnt haben, sind gtk+Apps, daher ist es ganz einfach zu beantwortenWarum... Weil inalle gtk+Apps (außer einem), Shift+ Insertfügt aus der Zwischenablage ein - das entspricht also Ctrl+ V. Die Verknüpfung ist fest codiert ingtkentry.c(Linie 2022) undgtktextview.c(Zeile 1819):

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

Es ist auch dokumentiert in derGTK+ 3 ReferenzhandbuchunterGtkEntry:

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 weiß, wurde dies aus Konsistenzgründen mit anderen DEs getan (siehe KDETastenkombinationen QtinQTextEdit Class ) und Windows OS 1. Die
einzige Ausnahmeist gnome-terminal. Nach langen Diskussionen haben die Entwickler (aus Konsistenzgründen mit anderen Terminals) entschieden, dass in + gnome-terminalaus PRIMARY und + + aus CLIPBOARD einfügen soll (Sie haben jedoch die Möglichkeit, einige Tastenkombinationen anzupassen).ShiftInsertCtrlShiftV


WasWieFügen Sie die Auswahl mit einer Tastenkombination ein ... Es gibt keine direkte Möglichkeit.

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

Ein anderer relativ einfacher Weg ist über Gnome Accessibility, falls es auf Ihrem System verfügbar ist. Es erfordert auch das Vorhandensein eines Nummernblocks. Gehen Sie zu Universal Access>> Pointing & Clickingund aktivieren Sie Mouse Keys. Stellen Sie sicher NumLock, dass es ausgeschaltet ist. Sie können dann die Nummernblocktasten verwenden, um den Cursor zu bewegen und zu klicken. Um einen Klick mit der mittleren Maustaste zu simulieren, drücken (und loslassen) *(Sternchen) und dann drücken 5(hier ist eine kurzeFührung). Diese Lösung scheint in einer gtk+Umgebung immer zu funktionieren. Der Nachteil ist, dass sie Gnome Accessibilityeinen Nummernblock erfordert. Außerdem können Sie die Tastenkombination nicht anpassen.

Eine interessante Lösung wurde vorgeschlagen amgnome-bugzilla (Fehler 643391). (Update 2018: Das Problem wurde inzwischen verschobenHier.) 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 patchen und ein "paste-selection"Signal definieren und dann Shift+ Insertan "paste-selection"statt an binden "paste-clipboard". Andys Code (im oben verlinkten Fehlerbericht angehängt) könnte als Anleitung dafür dienen. Selbst dann würde es nur gtk+Apps betreffen (ich bin kein KDE/QtMann, also habe ich keine Ahnung, wie man Qtdas Verhalten von Apps ändert).


1: (ganz zu schweigen von IBMs CUA)

Antwort2

Es tut mir leid: Ich kann aus Reputationsgründen 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-Design und erlauben Sie die Tastenbelegung nach Wunsch.

  2. Beispiel für die Erstellung einer GTK 3.0-Tastenkombination im CSS eines Designs.

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

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

  5. Automatischer Start von Autocutsel mit Standardoptionen zum Synchronisieren von CLIPBOARD mit CUTBUFFER(dies ist optional). Dieser Link dient nur zur Information über das Problem.

  6. Verwenden Sie Clipman, um über die GUI auf mehrere Puffer zuzugreifen(PRIMARY und CLIPBOARD), ohne automatische Synchronisierungsauswahl (bidirektionale automatische Synchronisierung führt zu Fehlern).

Ich wähle also einfach das GTK-Design aus und ändere das Design-CSS hinsichtlich der benötigten Tastenkombinationen für die Signale „Zwischenablage kopieren“ (Strg+Einfügen) und „Zwischenablage einfügen“ (Umschalt+Einfügen).

verwandte Informationen