it-swarm-eu.dev

Vložení výběru X (nikoli obsah schránky) pomocí klávesnice

Chtěl bych být schopen vložit výběr X pomocí klávesnice. V současné době to musím udělat prostředním tlačítkem myši.

Zjistil jsem, že předstírání prostředního stisknutí tlačítka myši je poměrně snadné, ale takové řešení by také vyžadovalo přesunutí ukazatele myši na místo textového stříšky.

Existuje lepší způsob, jak toho dosáhnout?

86
intuited

U některých výchozích nastavení linuxu Shift+Insert provede X-selection-paste. Jak jste uvedli, toto se výrazně liší od X-clipboard-paste příkaz, jehož vazba se často liší podle aplikace. Pokud to zde nefunguje, vyzkoušejte několik dalších kláves:

  • Ctrl+V

  • Ctrl+Shift+V

  • Ctrl+Shift+Insert

Ne jít? Vaše desktopové prostředí nebo správce oken je pravděpodobně nemá nakonfigurované a je to komplikované, protože - a to pod hlavičkou jednoho DE nebo WM - každá sada nástrojů (např. GTK, Qt, atd.) Může mít různé výchozí vazby. Některé programy (např. gvim) dokonce mají své vlastní interní kopírovací registry, které nemusí být nutně synchronizovány s grafickým prostředím, ve kterém běží. K tomu, že program používá systém X-clipboard, má X více systémů z čeho vybírat. Dvěma nejzákladnějšími jsou výběrová vyrovnávací paměť - která má vždy to, co bylo vybráno poslední (provedeno, když to není) - a vyrovnávací paměť pro kopírování - do kterých je obvykle třeba zkopírovat konkrétní položky. Chcete-li provést explicitní kopii do posledně uvedeného systému, můžete vyzkoušet některou z nich na velikost:

  • Ctrl+C

  • Shift+Ctrl+C

  • Ctrl+Insert


Pokud pro vás nic z toho magicky nefunguje, existují dva způsoby, jak jít.

  1. K tomu je k dispozici aplikace! ™ Použijte jeden z různých programů pro správu schránky, abyste to zvládli za vás. Nejoblíbenější se zdá být Parcellite a Glippy , ale můžete se podívat na jiné alternativy zde . Viz také tato otázka o pokročilých správcích schránky

  2. Hack to sám.

Řekněme tedy, že to chcete hacknout.

Hackerské nástroje pro tuto práci, bez psaní vlastního kódu a klepnutí do api X, jsou pár malých obslužných programů příkazového řádku, které vám dávají okno do mysli X. Jen malé okno vás napadne, celý pohled je příliš děsivý .

Prvním nástrojem je xsel. Tento malý dělník vyplivne cokoli, co je ve výběrové vyrovnávací paměti X, v daném okamžiku.

Nyní to musíte dostat do svého programu. Existují dvě možnosti. Jedním z nich je xdotool, který vám umožňuje napodobit odesílání událostí do vstupního systému Xorg. Můžete použít metodu typu jako xdotool type foo_bar napodobuje psaní 'foo_bar' na kurzor. Společně získáte něco takového:

$ xdotool type $(xsel)

Druhým je xvkbd, který odesílá události klávesnice z nižšího subsystému. Na STDIN můžete do tohoto kanálu vložit klávesové zkratky. V kombinaci s xsel získáte něco takového:

$ xsel | xvkbd -xsendevent -file -

Skvělý. Teď, aby to keybinding spustit tyto věci. Pokud spustíte Gnome-2, můžete přidat vlastní zkratku do systému -> Předvolby -> Klávesové zkratky . Pokud používáte jiné DE nebo WM, je tato nadměrná velikost ponechána na čtečce.

Poslední poznámkou je, že při navázání příkazů na klávesové zkratky je často nutné mít pouze jeden příkaz, nikoliv dva příkazy spojené s trubkou, jakou používáme výše. Toho můžete dosáhnout vyvoláním vašeho piped příkazu jako příkazového řetězce argumetn do nového Shell, jako je tento:

sh -c 'xsel | xvkbd -xsendevent -file -'
sh -c 'xdotool type "$(xsel)"'
95
Caleb

Zřejmě Shift+Insert nemusí fungovat správně na některých instalacích GTK 3, alespoň na FreeBSD. Problém je popsán jako:

Shift-Insert nevkládá primární výběr. Místo toho je nutné vložit schránku (pro kterou se již používá Control-V). Není tedy možné vložit primární výběr pouze pomocí klávesnice. Jeden musí přetáhnout myší tam a prostředním kliknutím. Tím je nepříjemná interakce mezi terminály a GTK.

K dispozici je poslední (od tohoto psaní) hlášení o chybě a oprava:

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

10
Michael Danilov
xdotool click 2

To simuluje kliknutí myší přímo a nevyžaduje použití xsel/xdotool type ....

7
blueyed

Používám Ubuntu 12 a měl jsem problém s vkládáním textu z xterm v geditu (a jakékoli jiné aplikaci). Také používám notebook bez prostředního tlačítka myši jako mnoho lidí (ve skutečnosti neexistuje žádné milosrdenství ve schránce pro uživatele Linuxu bez prostředních tlačítek a ne: kliknutí pravým tlačítkem + levý klik nefunguje jako náhrada).

I když si myslím, že metoda "xsel | xvkbd -xsendevent -file -" je docela v pohodě. Zjistil jsem, že nejjednodušším řešením bylo spustit předinstalovaný „terminál gnome“ namísto „xterminal“. "gnome-terminal" podporuje příkaz pravým tlačítkem myši kopírovat do schránky. Mohl bych pak „Upravit nabídku-> Vložit“ do geditu nebo použít shift-insert. "gnome-terminal" byl předinstalován s Ubuntu 12. Další instalace debian/gnome by měly být schopny nainstalovat jej prostřednictvím:

Sudo apt-get install gnome-terminal

V Ubuntu jej přidejte do levého spouštěče kliknutím na tlačítko „Dash Home“ v horní části panelu spouštěče. Do výsledného vyhledávacího pole zadejte terminál. Můžete přetáhnout ikonu „Terminál“ na panel spouštěčů.

2
Ryan Woodard