Dlaczego Shift + Insert wklej z SCHOWKA w niektórych aplikacjach i PODSTAWOWY w innych?


29

Jak wkleić zaznaczenie PODSTAWOWE (np. Tekst zaznaczony myszą) za pomocą skrótu klawiaturowego? Shift+Insertniekonsekwentnie wkleja się z PODSTAWOWEJ lub SCHOWKA, w zależności od zastosowania.

Tło:

Ctrl+Ckopiuje zaznaczony tekst do SCHOWKA, a zaznaczenie myszą kopiuje do PODSTAWOWEJ. Wklej ze SCHOWKA przy pomocy Ctrl+Vi wklej Z PODSTAWY przy pomocy mouse-middle-click.

W emulatorze terminali (terminal gnome) wklej z SCHOWKA za pomocą Ctrl+Shift+V. (Wklej z PODSTAWOWEJ z mouse-middle-clicknieruchomym.)

Chcę wkleić z PODSTAWOWEJ za pomocą skrótu klawiaturowego. W gnome-terminal jest to Shift+Insert, ale w gedit i Firefox, Shift+Insertwkleja się ze SCHOWKA. Chcę skrótu, który konsekwentnie wkleja się ze SCHOWKA, i innego skrótu, który konsekwentnie wkleja się z PODSTAWY.

Używam Ubuntu 14.04 z xmonad i Firefox 34.0

Odpowiedzi:


30

Wszystkie aplikacje, o których wspomniałeś, są gtk+aplikacjami, więc odpowiedź na pytanie jest dość łatwa. Dlaczego ... Ponieważ we wszystkich gtk+ aplikacjach ( oprócz jednej ) Shift+ Insertwkleja się ze SCHOWKA - czyli odpowiada Ctrl+ V. Skrót jest zakodowany na stałe gtkentry.c(linia 2022) i gtktextview.c(linia 1506):

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

Jest to również udokumentowane w Podręczniku referencyjnym GTK + 3 pod 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.

O ile wiem, to było zrobione za spójność z innymi DE'S (patrz KDE„s Qtklawiszy w QTextEdit Class) i Windows OS 1 . Jedynym wyjątkiem jest . Po długich debatach, deweloperów zdecydowało (w celu zachowania spójności z innymi terminalami), że w , + należy wkleić ze szkoły podstawowej i + + należy wkleić ze schowka (choć masz opcje, aby dostosować skróty).
gnome-terminalgnome-terminalShiftInsertCtrlShiftV


Co do Jak pan wklej wybór za pomocą skrótu klawiaturowego ... nie ma bezpośredni sposób.

Najprostszym sposobem jest przypisanie skrótu do uruchamianego skryptu xdotool click 2(symuluje kliknięcie środkowym przyciskiem myszy). Chociaż to działa (i powinno działać z wszystkimi lub większością DE i zestawów narzędzi), działa tylko wtedy, gdy kursor myszy znajduje się nad polem wprowadzania tekstu, w przeciwnym razie nie powiedzie się.

Innym stosunkowo łatwym sposobem jest dostępność Gnome, jeśli jest dostępna w twoim systemie. Wymaga także obecności klawiatury numerycznej. Przejdź do Universal Access>> Pointing & Clickingi włącz Mouse Keys. Upewnij się, że NumLockjest wyłączony. Następnie możesz użyć klawiszy numerycznych, aby przesunąć kursor i kliknąć. Aby zasymulować kliknięcie środkowym przyciskiem myszy, naciśnij (i zwolnij) *(gwiazdka), a następnie naciśnij 5(oto krótki przewodnik ). To rozwiązanie wydaje się zawsze działać w gtk+środowisku. Minusem jest to, że wymaga Gnome Accessibilityi numpad. Nie można również dostosować skrótu.

Ciekawe rozwiązanie zostało zaproponowane na gnome-bugzilla (błąd 643391) . (Aktualizacja 2018: problem został teraz przeniesiony tutaj ). Wymaga to łatania niektórych plików źródłowych i ustawiania opcji konfiguracji w ~/.config/gtk-3.0/gtk.css(lub ~/.gtkrc-2.0dla gtk+2 aplikacji). Nie próbowałem tego osobiście, ale opinie są pozytywne.

Idealnie byłoby załatać pliki źródłowe i zdefiniować "paste-selection"sygnał, a następnie powiązać Shift+ Insertz "paste-selection"zamiast "paste-clipboard". Kod Andy'ego (załączony w powyższym raporcie o błędzie) może służyć jako przewodnik, jak to zrobić. Nawet wtedy wpłynie to tylko na gtk+aplikacje (nie jestem KDE/Qtfacetem, więc nie mam pojęcia, jak zmienić Qtzachowanie aplikacji).


1: (nie wspominając o IBM CUA)


2
Dzięki za wyjaśnienie. Szkoda, że ​​nie ma lepszego rozwiązania, bardzo brakuje mi spójnego skrótu klawiaturowego dla PODSTAWOWEJ. Obejście emulacji myszy niewiele pomaga, ponieważ skrót polega na uniknięciu konieczności radzenia sobie z myszą.
didi_X8

1

Przykro mi: nie mogę napisać komentarza z powodu reputacji, więc piszę jako odpowiedź. To nie jest bezpośrednie rozwiązanie, ale pomaga mi ...

Możesz użyć kombinacji informacji:

  1. Edytuj motyw GTK i zezwalaj na przypisywanie klawiszy, jak chcesz .

  2. Przykład tworzenia skrótów klawiszowych gtk 3.0 w css motywu .

  3. Przykład przesłaniania skrótów klawiszowych gtk i cofania powiązania .

  4. Przykład modyfikacji skrótów klawiszowych dla gnome-terminal

  5. Automatyczne uruchamianie autocutsel z domyślnymi opcjami synchronizacji SCHOWKA do CUTBUFFER (jest to opcjonalne). Ten link służy wyłącznie do informacji o problemie.

  6. Użyj clipmana, aby uzyskać dostęp do wielu buforów przez GUI (PODSTAWOWY i SCHOWEK), bez wyborów automatycznej synchronizacji (dwukierunkowa automatyczna synchronizacja powoduje błąd).

Więc po prostu wybieram motyw GTK i modyfikuję CSS motywu do potrzebnych skrótów klawiszowych dla sygnałów kopiowania schowka (Ctrl + Insert) i wklejania schowka (Shift + Insert).


1
To może być początek dobrej odpowiedzi, jeśli weźmiesz treść tych linków i połączysz informacje. W obecnej formie jest to tylko zbiór linków, co stwarza ryzyko jego usunięcia. Podaj informacje, aby znalazły się bezpośrednio w odpowiedzi, i jestem pewien, że dostaniesz pozytywne głosy (dzięki czemu zyskasz wystarczającą reputację do komentowania). Dzięki!
Toby Speight
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.