Mengapa Shift + Insert paste dari CLIPBOARD di beberapa aplikasi dan PRIMARY di aplikasi lain?


29

Bagaimana cara saya tempel dari pilihan PRIMARY (mis. Teks yang dipilih mouse) dengan pintasan keyboard? Shift+Insertpasta tidak konsisten dari PRIMARY atau CLIPBOARD, tergantung pada aplikasi.

Latar Belakang:

Ctrl+Cmenyalin teks yang dipilih ke CLIPBOARD sementara salinan pilihan mouse ke PRIMARY. Tempel dari CLIPBOARD dengan Ctrl+Vdan tempel dari PRIMARY dengan mouse-middle-click.

Dalam emulator terminal (gnome-terminal), rekatkan dari CLIPBOARD dengan Ctrl+Shift+V. (Tempel dari PRIMARY dengan mouse-middle-clickdiam.)

Saya ingin menempel dari PRIMARY dengan pintasan keyboard. Di gnome-terminal, ini Shift+Insert, tetapi di gedit dan Firefox, Shift+Insertpasta dari CLIPBOARD. Saya ingin jalan pintas yang secara konsisten menempel dari CLIPBOARD dan jalan pintas berbeda yang secara konsisten menempel dari PRIMARY.

Saya menjalankan Ubuntu 14.04 dengan xmonad dan Firefox 34.0

Jawaban:


30

Semua aplikasi yang Anda sebutkan adalah gtk+aplikasi sehingga cukup mudah untuk menjawab Mengapa ... Karena di semua gtk+ aplikasi ( kecuali satu ), Shift+ Insertpasta dari CLIPBOARD - yaitu setara dengan Ctrl+ V. Pintasan di-hardcode pada gtkentry.c(baris 2022) dan gtktextview.c(baris 1506):

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

Ini juga didokumentasikan dalam Manual Referensi GTK + 3 di bawah 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.

Sejauh yang saya tahu ini dilakukan untuk konsistensi dengan lainnya DE (lihat KDE's Qtbinding kunci dalam QTextEdit Class) dan Windows OS 1 .
Satu- satunya pengecualian adalah gnome-terminal. Setelah perdebatan panjang, para dev telah memutuskan (untuk konsistensi dengan terminal lain) bahwa, dalam gnome-terminal, Shift+ Insertharus menempel dari PRIMARY dan Ctrl+ Shift+ Vharus menempel dari CLIPBOARD (walaupun Anda memiliki opsi untuk menyesuaikan beberapa pintasan).


Seperti Bagaimana Anda sisipkan seleksi dengan cara pintas keyboard ... tidak ada cara mudah.

Cara termudah adalah dengan menetapkan pintasan ke skrip yang berjalan xdotool click 2(mensimulasikan mengklik tombol tengah-mouse). Meskipun ini berfungsi (dan seharusnya bekerja dengan semua atau sebagian besar DE dan toolkit), ini hanya berfungsi jika kursor mouse benar-benar di atas kotak entri teks, jika tidak maka gagal.

Cara lain yang relatif mudah adalah melalui Aksesibilitas Gnome, jika tersedia di sistem Anda. Itu juga membutuhkan kehadiran numpad. Buka Universal Access>> Pointing & Clickingdan aktifkan Mouse Keys. Pastikan NumLocktidak aktif. Anda kemudian dapat menggunakan tombol numpad untuk memindahkan kursor dan klik. Untuk mensimulasikan klik tombol tengah mouse, tekan (dan lepaskan) *(tanda bintang) lalu tekan 5(inilah panduan singkat ). Solusi ini sepertinya selalu bekerja di gtk+lingkungan. The downside adalah bahwa ia membutuhkan Gnome Accessibilitydan numpad. Selain itu, Anda tidak dapat menyesuaikan pintasan.

Solusi menarik diajukan pada gnome-bugzilla (bug 643391) . (Pembaruan 2018: masalah kini telah dipindahkan di sini .) Diperlukan menambal beberapa file sumber dan mengatur opsi konfigurasi di ~/.config/gtk-3.0/gtk.css(atau ~/.gtkrc-2.0untuk gtk+2 aplikasi). Saya belum mencobanya secara pribadi tetapi umpan baliknya positif.

Idealnya, Anda akan menambal file sumber dan menentukan "paste-selection"sinyal kemudian mengikat Shift+ Insertuntuk "paste-selection"bukan "paste-clipboard". Kode Andy (terlampir dalam laporan bug yang ditautkan di atas) dapat berfungsi sebagai panduan tentang cara melakukannya. Bahkan kemudian, itu hanya akan mempengaruhi gtk+aplikasi (saya bukan seorang KDE/Qtpria jadi saya tidak tahu bagaimana mengubah Qtperilaku aplikasi).


1: (belum lagi CUA IBM)


2
Terima kasih untuk penjelasannya. Sayang sekali tidak ada solusi yang lebih baik, saya merindukan cara pintas keyboard yang konsisten untuk PRIMER banyak. Solusi emulasi mouse tidak banyak membantu karena titik pintasan adalah untuk menghindari berurusan dengan mouse.
didi_X8

1

Saya minta maaf: Saya tidak dapat menulis komentar karena reputasi, jadi saya menulis sebagai jawaban. Ini bukan solusi langsung, tetapi ini membantu saya ...

Anda dapat menggunakan kombinasi informasi:

  1. Mengedit gtk tema dan memungkinkan kunci yang mengikat seperti yang Anda inginkan .

  2. Contoh membuat gtk 3.0 keybinding di css tema .

  3. Contoh meng-override gtk keybindings dan unbind .

  4. Contoh memodifikasi keybinding untuk gnome-terminal

  5. Mulai otomatis dari autocutsel dengan opsi default untuk sinkronisasi CLIPBOARD ke CUTBUFFER (ini opsional). Tautan ini hanya untuk informasi tentang masalah.

  6. Gunakan clipman untuk mengakses beberapa buffer (PRIMARY dan CLIPBOARD), tanpa pilihan penyelarasan otomatis (penyelarasan otomatis dua arah membuat kesalahan).

Jadi saya hanya memilih gtk theme, dan memodifikasi CSS tema untuk keybindings yang diperlukan untuk copy-clipboard (Ctrl + Insert) dan paste-clipboard (Shift + Insert) sinyal.


1
Ini bisa menjadi awal dari jawaban yang baik, jika Anda mengambil konten dari tautan tersebut dan menggabungkan informasinya. Seperti berdiri, itu hanya kumpulan tautan, dan itu menempatkannya pada risiko dihapus. Silakan isi informasi tersebut sehingga langsung dalam jawabannya, dan saya yakin Anda akan mendapat upvotes (dengan demikian memberi Anda reputasi yang cukup untuk berkomentar). Terima kasih!
Toby Speight
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.