Wklejanie zaznaczenia X (nie zawartości schowka) za pomocą klawiatury

83

Chciałbym móc wkleić zaznaczenie X za pomocą klawiatury. Obecnie muszę to zrobić za pomocą środkowego przycisku myszy.

Rozumiem, że sfałszowanie naciśnięcia środkowego przycisku myszy jest dość łatwe, ale takie rozwiązanie wymagałoby również przesunięcia wskaźnika myszy w miejsce kursora tekstu.

Czy jest na to lepszy sposób?

intuicyjny
źródło
2
Możliwe to samo dla Ubuntu: askubuntu.com/questions/7769/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

93

W niektórych domyślnych ustawieniach Linuksa Shift+ Insertwykona X-selection-paste. Jak zauważyłeś, różni się to wyraźnie od X-clipboard-pastepolecenia, którego powiązanie często różni się w zależności od aplikacji. Jeśli to nie zadziała tutaj, jest kilka innych kluczy do wypróbowania:

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

Nie iść Twoje środowisko pulpitu lub Menedżer okien prawdopodobnie nie ma ich skonfigurowanych i jest to skomplikowane, ponieważ - nawet pod szyldem jednego DE lub WM - każdy zestaw narzędzi (np. GTK, Qt, itp.) Może równie dobrze mieć inne domyślne wiązania. Niektóre programy (np. gvim) Mają nawet własne wewnętrzne rejestry kopii, które niekoniecznie są zsynchronizowane ze środowiskiem graficznym, w którym działają. Na dodatek, nawet jeśli program korzysta z systemu schowka X, X ma wiele systemów do wyboru. Dwa najbardziej podstawowe to bufor wyboru - który zawsze ma wszystko, co ostatnia wybrana rzecz była (wykonywana, gdy nie ma) - i bufor kopiowania - do którego zwykle trzeba konkretnie skopiować. Aby wykonać wyraźną kopię do tego drugiego systemu, możesz wypróbować dowolny z nich dla rozmiaru:

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


Jeśli nic z tego nie działa w magiczny sposób, możesz przejść na dwa sposoby.

  1. Jest na to aplikacja! ™ Użyj jednego z różnych programów do zarządzania schowkami, aby obsłużyć to za Ciebie. Najbardziej popularne wydają się być Parcellite i Glippy , ale można sprawdzić inne możliwości tutaj . Zobacz także to pytanie dotyczące zaawansowanych menedżerów schowka

  2. Włam się sam.

Powiedzmy, że chcesz go zhakować.

Oprócz pisania własnego kodu i korzystania z interfejsu X api, narzędzia hakerskie do tego zadania to kilka małych narzędzi wiersza poleceń, które otwierają okno na umysł X. Wystarczy małe okno, aby cały widok był zbyt przerażający. .

Pierwsze narzędzie to xsel. Ten mały robotnik wypluje wszystko, co znajduje się w buforze wyboru X w danym momencie.

Teraz musisz włączyć to do swojego programu. Istnieją dwie opcje tego. Jedna z xdotoolnich pozwala naśladować wysyłanie zdarzeń do systemu wejściowego Xorg. Możesz użyć metody typu , np. xdotool type foo_barNaśladując pisanie „foo_bar” na kursorze. W połączeniu otrzymujesz coś takiego:

$ xdotool type $(xsel)

Drugi to xvkbdwysyłanie zdarzeń klawiatury z niższego podsystemu. Możesz przesyłać do niego sekwencje klawiszy na STDIN. W połączeniu z xselotrzymujesz coś takiego:

$ xsel | xvkbd -xsendevent -file -

Wspaniały. Teraz klawiszem, żeby uruchomić te rzeczy. Jeśli uruchomisz Gnome-2, możesz dodać niestandardowy skrót w System -> Preferencje -> Skróty klawiaturowe . Jeśli użyjesz innego DE lub WM, ten rozmiar jest pozostawiony czytelnikowi.

Ostatnia uwaga jest taka, że ​​podczas wiązania poleceń ze skrótami klawiaturowymi często konieczne jest posiadanie tylko jednego polecenia, a nie dwóch poleceń połączonych z potokiem, którego używamy powyżej. Możesz to zrobić, wywołując polecenie piped jako ciąg polecenia argumetn w nowej powłoce, takiej jak ta:

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'
Caleb
źródło
1
Zdecydowanie kwalifikuje się jako „lepszy”. Dzięki!
intuicyjnie,
W jakiej aplikacji? Żadna z aplikacji, z których korzystam, często tak się nie zachowuje.
Gilles
Używam Ubuntu i naprawdę chciałbym Shift-Insertmieć praktyczne zastosowanie, ale po prostu nie jest (w Ubuntu) .. Jedyną „spójnością (+/-)”, którą znalazłem, jest to, że X- zaznaczenie w aplikacjach GTK może być wstawiane z wciśniętym klawiszem Shift w gnome-terminal, ale jest dość trafione w inne kombinacje tych samych aplikacji ... Kilka aplikacji KDE, z których korzystam (w tym Konsola), po prostu nie wklejanie w ogóle .... i nawet w aplikacjach GTK kliknięcie środkowym przyciskiem może działać, ale Shift + Insert może nie działać (w przypadku tej samej aplikacji) ... Więc używam myszy :(
Peter.O
Nie ma czegoś takiego jak „wiązanie na poziomie X”. Może to być coś, czego używają aplikacje, lub coś, co robi menedżer okien lub środowisko pulpitu. Wątpię, by był specyficzny dla dystrybucji.
Gilles,
1
Uważam, że łatwym rozwiązaniem jest powiązanie skrótu klawiaturowego z wysyłaniem zdarzenia kliknięcia środkowym kliknięciem. To znaczy dla mnie xdotool click 2.
Inductiveload
10

Najwyraźniej Shift+ Insertmoże nie działać poprawnie na niektórych instalacjach GTK 3, przynajmniej na FreeBSD. Problem jest opisany jako:

Shift-Insert nie wkleja podstawowego wyboru. Zamiast tego musi wkleić schowek (do którego już używany jest Control-V). Dlatego nie ma sposobu wstawiania zaznaczenia podstawowego za pomocą klawiatury. Przeciągnij mysz tam i kliknij środkowym przyciskiem. To sprawia, że ​​interakcja między terminalami a GTK jest niewygodna.

Dostępny jest najnowszy (w chwili pisania) raport o błędzie i łatka:

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

Michał Daniłow
źródło
8
xdotool click 2

To symuluje bezpośrednie kliknięcie przyciskiem myszy i nie wymaga użycia xsel/ xdotool type ....

niebieskawy
źródło
1
Wymaga to odpowiedniego ustawienia myszy, więc równie dobrze możesz użyć przycisku myszy. Jeśli istnieje jakiś sposób na przyciągnięcie myszy do kursora, może to być część odpowiedzi (wątpię, że jest)
jberryman
2

Używam Ubuntu 12 i miałem problem z wklejeniem tekstu z xterm w gedit (i dowolnej innej aplikacji). Ponadto używam laptopa bez środkowego przycisku myszy, jak wiele osób (naprawdę nie ma litości do schowka dla użytkowników Linuksa bez środkowych przycisków i nie: kliknięcie prawym przyciskiem + lewy przycisk myszy nie działa jako zamiennik).

Chociaż myślę, że metoda „xsel | xvkbd -xsendevent -file -” jest całkiem fajna. Odkryłem, że najprostszym rozwiązaniem było uruchomienie preinstalowanego „gnome-terminal” zamiast „xterminal”. „gnome-terminal” obsługuje polecenie kopiowania do schowka w prawym przyciskiem myszy. Mógłbym wtedy „Edycja menu-> Wklej” do gedit lub użyć Shift-Insert. „gnome-terminal” został fabrycznie zainstalowany z Ubuntu 12. Inne instalacje debian / gnome powinny móc go zainstalować poprzez:

sudo apt-get install gnome-terminal

W Ubuntu dodaj go do lewego programu uruchamiającego, klikając przycisk „Dash Home” u góry paska uruchamiania. W wynikowym polu wyszukiwania wpisz terminal. Możesz przeciągnąć ikonę „Terminal” na pasek uruchamiania.

Ryan Woodard
źródło
2
To bardzo złe rozwiązanie. Nie można tak naprawdę sugerować ludziom przejścia na inny terminal, zwłaszcza taki, który pobierze 100 MB + powłoki gnome jako zależność. Nie powoduje to również współpracy z żadną inną aplikacją, a najgorsze z tego wszystkiego nadal wymaga użycia myszy.
pfrenssen