Menempelkan pilihan X (bukan konten clipboard) dengan keyboard


84

Saya ingin dapat menempelkan pemilihan X menggunakan keyboard. Saat ini saya harus menggunakan tombol tengah mouse untuk melakukan ini.

Saya tahu bahwa memalsukan tombol tengah mouse cukup mudah dilakukan, tetapi solusi seperti itu juga akan membutuhkan penggerak penunjuk tetikus ke lokasi tanda sisipan teks.

Apakah ada cara yang lebih baik untuk melakukan ini?


Jawaban:


93

Pada beberapa pengaturan linux default, Shift+ Insertakan melakukan X-selection-paste. Seperti yang Anda catat, ini jelas berbeda dari X-clipboard-pasteperintah, yang mengikatnya sering bervariasi menurut aplikasi. Jika itu tidak berhasil di sini adalah beberapa kunci lain untuk dicoba:

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

Tidak pergi? Lingkungan Desktop atau Window Manager Anda mungkin tidak dikonfigurasikan, dan ini rumit karena —bahkan di bawah bendera satu DE atau WM— setiap toolkit (misalnya GTK, Qt, dll.) Mungkin memiliki binding standar berbeda. Beberapa program (misalnya gvim) bahkan memiliki register salinan internal mereka sendiri yang tidak perlu disinkronkan dengan lingkungan grafis tempat mereka menjalankannya. Sebagai tambahan, bahkan ketika suatu program menggunakan sistem papan klip-X, X memiliki beberapa sistem untuk dipilih. Dua yang paling mendasar adalah buffer seleksi — yang selalu memiliki apa pun yang dipilih adalah hal yang terakhir (kecuali bila tidak) - dan buffer salinan — yang biasanya perlu disalin secara khusus. Untuk melakukan penyalinan eksplisit ke sistem yang terakhir, Anda dapat mencoba salah satu dari ini untuk ukuran:

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


Jika tidak ada yang hanya bekerja secara ajaib untuk Anda, ada dua cara yang bisa Anda lakukan.

  1. Ada aplikasi untuk itu! ™ Gunakan salah satu dari berbagai program pengelola papan klip untuk menangani ini untuk Anda. Tampaknya yang paling populer adalah Parcellite dan Glippy , tetapi Anda dapat melihat alternatif lain di sini . Lihat juga pertanyaan ini tentang manajer clipboard tingkat lanjut

  2. Retas sendiri.

Jadi katakanlah Anda ingin meretasnya.

Pendek menulis kode Anda sendiri dan mengetuk ke dalam api X, alat hacker untuk pekerjaan itu adalah beberapa utilitas baris perintah kecil yang memberi Anda jendela ke pikiran X. Hanya jendela kecil yang memikirkan Anda, seluruh tampilan terlalu menakutkan .

Alat pertama adalah xsel. Pemborong kecil ini akan memuntahkan apa pun yang ada di buffer pilihan X pada waktu tertentu.

Sekarang Anda perlu memasukkannya ke dalam program Anda. Ada dua opsi untuk ini. Salah satunya adalah xdotoolyang memungkinkan Anda untuk meniru pengiriman acara ke sistem input Xorg. Anda dapat menggunakannya untuk jenis metode seperti xdotool type foo_baruntuk mengetik meniru 'foo_bar' pada kursor. Gabungan, Anda mendapatkan sesuatu seperti ini:

$ xdotool type $(xsel)

Yang lain adalah xvkbdyang mengirim acara keyboard dari subsistem yang lebih rendah. Anda dapat memasukkan penekanan tombol ke dalamnya di STDIN. Dikombinasikan dengan xsel, Anda mendapatkan sesuatu seperti ini:

$ xsel | xvkbd -xsendevent -file -

Bagus. Sekarang untuk mengikat kunci untuk menjalankan hal ini. Jika Anda menjalankan Gnome-2, Anda dapat menambahkan pintasan khusus di System -> Preferences -> Shortcut keyboard . Jika Anda menggunakan DE atau WM yang berbeda excersize ini diserahkan kepada pembaca.

Catatan terakhir adalah bahwa ketika mengikat perintah ke pintasan keyboard seringkali hanya perlu memiliki satu perintah, bukan dua perintah yang terhubung dengan pipa seperti yang kita gunakan di atas. Anda bisa melakukannya dengan menjalankan perintah piped Anda sebagai string perintah argumetn ke shell baru seperti ini:

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

1
Jelas memenuhi syarat sebagai "lebih baik". Terima kasih!
intuited

Dalam aplikasi apa? Tak satu pun dari aplikasi yang saya gunakan sering berperilaku seperti ini.
Gilles

Saya menggunakan Ubuntu, dan saya benar-benar ingin Shift-Insertada kegunaan praktis, tetapi tidak (di Ubuntu) .. Satu-satunya "konsistensi (+/-)" Saya telah menemukan bahwa X- pilihan di aplikasi GTK dapat digeser-Dimasukkan ke dalam gnome-terminal, tetapi cukup hit-and-miss untuk kombinasi cross-paste lainnya dari aplikasi yang sama ini ... Beberapa aplikasi KDE yang saya gunakan (termasuk Konsole), hanya saja jangan tempel silang sama sekali .... dan bahkan di aplikasi GTK, klik tengah mungkin berfungsi, tetapi Shift + Insert mungkin tidak (untuk aplikasi yang sama) ... Jadi saya menggunakan mouse :(
Peter.O

Tidak ada yang namanya "X level binding". Bisa jadi itu adalah aplikasi yang Anda gunakan, atau yang dilakukan pengelola jendela atau lingkungan desktop Anda. Saya ragu itu akan spesifik untuk distribusi.
Gilles

1
Saya menemukan pendekatan yang mudah adalah dengan mengikat pintasan keyboard untuk mengirim acara klik tengah. Bagi saya, itu xdotool click 2.
Inductiveload

10

Rupanya Shift+ Insertmungkin tidak berfungsi dengan baik pada beberapa instalasi GTK 3, setidaknya di FreeBSD. Masalahnya digambarkan sebagai:

Shift-Insert tidak menempel seleksi utama. Sebagai gantinya, itu terikat untuk menempel clipboard (yang Control-V sudah digunakan). Karenanya, tidak ada cara khusus keyboard untuk menyisipkan pemilihan utama. Seseorang harus menyeret mouse ke sana dan klik tengah. Ini membuat interaksi antara terminal dan GTK tidak nyaman.

Laporan bug dan tambalan baru-baru ini (pada saat penulisan ini) tersedia:

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


8
xdotool click 2

Ini mensimulasikan klik tombol mouse secara langsung, dan tidak perlu menggunakan xsel/ xdotool type ....


1
Ini membutuhkan posisi mouse dengan benar, sehingga Anda mungkin juga benar-benar menggunakan tombol mouse. Jika ada beberapa cara untuk mengarahkan mouse ke kursor, ini mungkin merupakan bagian dari jawaban (saya ragu ada)
jberryman

2

Saya menggunakan Ubuntu 12 dan mengalami masalah menempelkan teks dari xterm di gedit (dan aplikasi lainnya). Juga, saya menggunakan laptop tanpa tombol mouse tengah seperti banyak orang (sebenarnya tidak ada belas kasihan clipboard untuk pengguna linux tanpa tombol tengah, dan tidak ada: klik kanan + left_click tidak berfungsi sebagai pengganti).

Sementara saya pikir metode "xsel | xvkbd -xsendevent -file -" cukup keren. Saya menemukan solusi paling sederhana adalah dengan menjalankan "gnome-terminal" yang sudah diinstal sebelumnya daripada "xterminal". "gnome-terminal" mendukung perintah klik kanan salin ke clip-board. Saya kemudian bisa "Edit Menu-> Tempel" ke gedit atau menggunakan shift-insert. "gnome-terminal" telah diinstal sebelumnya dengan Ubuntu 12. Instalasi debian / gnome lainnya harus dapat menginstalnya melalui:

sudo apt-get install gnome-terminal

Di Ubuntu, tambahkan ke peluncur kiri dengan mengklik tombol "Dash Home" di bagian atas bilah peluncur. Di kotak pencarian yang dihasilkan, ketik terminal. Anda dapat menyeret ikon "Terminal" ke bilah peluncur.


2
Ini adalah solusi yang sangat buruk. Anda tidak dapat benar-benar menyarankan orang untuk beralih ke terminal yang berbeda, terutama yang akan menarik 100MB + gnome-shell sebagai ketergantungan. Ini juga tidak membuatnya berfungsi dengan aplikasi lain, dan yang terburuk dari semua ini masih membutuhkan penggunaan mouse untuk bekerja.
pfrenssen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.