Klavye ile X seçimi yapıştırma (pano içeriği değil)


83

X seçimini klavyeyi kullanarak yapıştırabilmek isterim. Şu anda bunu yapmak için orta fare düğmesini kullanmam gerekiyor.

Bir orta fare düğmesine basmanın sahte olduğunu yapmak oldukça kolaydır, ancak böyle bir çözüm, fare imlecini metin çizgisinin konumuna getirmeyi de gerektirir.

Bunu yapmanın daha iyi bir yolu var mı?


Yanıtlar:


93

Bazı varsayılan linux kurulumlarında, Shift+ Insertgerçekleştirir X-selection-paste. Belirttiginiz gibi, bu X-clipboard-pastekomut için uygulamadan farkli bir sekilde farklidir . Bu işe yaramazsa, burada denenmesi gereken birkaç anahtar daha var:

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

Gitme? Masaüstü Ortamınız veya Pencere Yöneticiniz muhtemelen onları yapılandırmamıştır ve karmaşıktır çünkü - bir DE veya WM bayrağı altında bile - her bir araç seti (örneğin GTK, Qt, Etc) farklı varsayılan ciltlemelere sahip olabilir. Bazı programlar (örneğin gvim), içinde çalıştıkları grafiksel ortama senkronize edilmek zorunda olmayan kendi dahili kopya kayıtlarına bile sahiptir. Bir program, X-pano sistemini kullandığında bile, X'in seçebileceği birden fazla sistemi vardır. En temel iki tanesi, her zaman en son seçilen şeyin ne olduğu (ne zaman kullanılmadığına göre) olan - ve arabellek - her şeyin genellikle özel olarak kopyalanması gereken olanı olan seçim tamponudur. İkinci sisteme açık bir kopya yapmak için, bunlardan herhangi birini boyut için deneyebilirsiniz:

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


Bunların hiçbiri sadece sizin için sihirli bir şekilde çalışmıyorsa, gidebileceğiniz iki yol vardır.

  1. Bunun için bir uygulama var! ™ Bunu sizin için işlemek için çeşitli pano yöneticisi programlarından birini kullanın. En popüler Parcellite ve Glippy gibi görünüyor , ancak diğer alternatifleri buradan kontrol edebilirsiniz . Gelişmiş pano yöneticileri hakkında da bu soruya bakın.

  2. Kendin kes.

Öyleyse kesmek istediğini söyleyelim.

Kendi kodunuzu yazıp X api'ye dokunmak yerine, iş için hacker araçları size X'in aklına bir pencere veren birkaç küçük komut satırı aracıdır. .

İlk araç xsel. Bu küçük iş adamı, X'in seçim arabelleğindeki herhangi bir zamanda herhangi bir zamanda tükürecektir.

Şimdi bunu programına sokman gerek. Bunun için iki seçenek var. Bunlardan biri, xdotoolXorg giriş sistemine gönderim olaylarını taklit etmenize izin veren şeydir. Sen 's kullanabilirsiniz tipi gibi yöntem xdotool type foo_barimleç mimik yazarak 'foo_bar' için. Kombine, böyle bir şey olsun:

$ xdotool type $(xsel)

Diğeri ise xvkbdklavye olaylarını daha düşük bir alt sistemden gönderir. Tuş vuruşlarını STDIN'den içine yönlendirebilirsiniz. İle birlikte xsel, böyle bir şey olsun:

$ xsel | xvkbd -xsendevent -file -

Harika. Şimdi, bu şeyleri çalıştırmak için bu anahtar bağlama için. Gnome-2'yi çalıştırırsanız, Sistem -> Tercihler -> Klavye kısayollarına özel bir kısayol ekleyebilirsiniz . Farklı bir DE veya WM kullanıyorsanız, bu excersize okuyucuya bırakılmıştır.

Son not, komutları klavye kısayollarına bağlarken, yukarıda kullandığımız gibi bir boruya bağlı iki komutun değil, yalnızca bir komutun olması gerektiğidir. Bunu, piped komutunuzu aşağıdaki gibi yeni bir kabuğa argumetn komut dizesi olarak çağırarak yapabilirsiniz:

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

1
Kesinlikle "daha iyi" olarak nitelendirir. Teşekkürler!
sezgiler

Hangi uygulamada? Sık kullandığım uygulamaların hiçbiri bu şekilde davranmıyor.
Gilles

Ubuntu kullanıyorum ve gerçekten Shift-Insertpratik bir kullanım yapmak isterim , fakat sadece (Ubuntu'da) değil. GTK uygulamalarında seçim, Shift-Eklenebilir gnome-terminal, ancak bu aynı uygulamaların diğer çapraz yapıştırma kombinasyonları için oldukça vur-kaç özelliği var ... Kullandığım birkaç KDE uygulaması (Konsole dahil), sadece yapma çapraz-yapıştır yapıştırma .... ve hatta GTK uygulamalarında, orta tıklatma işe yarayabilir, ancak Shift + Insert (aynı uygulama için) çalışmayabilir ... Bu yüzden fareyi kullanıyorum :(
Peter.O

“X seviye bağlaması” diye bir şey yoktur. Kullandığınız uygulamaların veya pencere yöneticinizin veya masaüstü ortamınızın yaptığı bir şey olabilir. Bir dağıtıma özgü olacağından şüpheliyim.
Gilles

1
Klavyenin kısayolunu orta tıklama etkinliği göndermeye bağlamak için kolay bir yaklaşım buluyorum. Benim için bu xdotool click 2.
Inductiveload

10

Görünüşe göre Shift+ Insertbazı GTK 3 kurulumlarında, en azından FreeBSD'de düzgün çalışmayabilir. Sorun şu şekilde tanımlanır:

Shift-Insert, birincil seçimi yapıştırmıyor. Bunun yerine, panonun yapıştırılması zorunludur (bunun için Control-V zaten kullanılıyor). Bu nedenle, birincil seçim eklemenin yalnızca klavye yolu yoktur. Biri fareyi oraya sürüklemeli ve orta tıklamalıdır. Bu, terminaller ve GTK arasındaki etkileşimi rahatsız eder.

Son zamanlarda (bu yazıdan itibaren) bir hata raporu ve yaması var:

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


8
xdotool click 2

Bu, doğrudan fare düğmesini tıklamayı taklit eder ve xsel/ kullanması gerekmez xdotool type ....


1
Bu, farenin doğru şekilde konumlandırılmasını gerektirir, bu nedenle fare düğmesini de kullanabilirsiniz. Fareyi imlecin üzerine
yapıştırmanın bir yolu

2

Ubuntu 12 kullanıyorum ve gedit'e (ve diğer uygulamalara) xterm'den metin yapıştırırken bir sorunla karşılaşıyordum. Ayrıca, pek çok insan gibi orta fare düğmesi olmayan bir dizüstü bilgisayar kullanıyorum (orta düğmeleri olmayan linux kullanıcıları için panoya merhameti yok ve hayır: sağ-tıklama + left_click yerine geçmiyor).

Ben "xsel | xvkbd -xsendevent -file -" yönteminin oldukça iyi olduğunu düşünüyorum. En basit çözümün "xterminal" yerine önceden kurulmuş "gnome-terminal" i çalıştırmak olduğunu gördüm. "gnome-terminal", klibi panoya sağ tıkla kopyalamayı destekler. Sonra "Edit Menu-> Paste" gedit içine alabilir veya shift-insert kullanabilirsiniz. "gnome-terminal", Ubuntu 12 ile önceden kurulmuş olarak geldi. Diğer debian / gnome kurulumları şu şekilde yükleyebilmelidir:

sudo apt-get install gnome-terminal

Ubuntu'da, başlatıcı çubuğunun üstündeki "Dash Home" düğmesini tıklatarak sol başlatıcıya ekleyin. Sonuçta ortaya çıkan arama kutusuna terminal yazın. "Terminal" simgesini başlatıcı çubuğuna sürükleyebilirsiniz.


2
Bu çok zayıf bir çözüm. İnsanlara farklı bir terminale geçmelerini öneremezsiniz, özellikle 100MB + cüceler kabuğu çeken bir bağımlılık. Bu aynı zamanda başka herhangi bir uygulamayla çalışmasını sağlamaz ve hepsinden kötüsü hala çalışmak için bir fare kullanımını gerektirir.
pfrenssen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.