เหตุใด Shift + แทรกวางจาก CLIPBOARD ในบางแอปพลิเคชันและหลักในอื่น ๆ


29

ฉันจะวางจากการเลือกหลัก (เช่นข้อความที่เลือกโดยเมาส์) ด้วยแป้นพิมพ์ลัดได้อย่างไร Shift+Insertวางไม่สอดคล้องกันจาก Primary หรือ CLIPBOARD ขึ้นอยู่กับแอปพลิเคชัน

พื้นหลัง:

Ctrl+Cคัดลอกข้อความที่เลือกไปยัง CLIPBOARD ในขณะที่การเลือกเมาส์จะคัดลอกไปที่หลัก วางจากคลิปบอร์ดด้วยและวางจากหลักที่มีCtrl+Vmouse-middle-click

ในการจำลอง terminal (gnome-Terminal) Ctrl+Shift+Vวางจากคลิปบอร์ดด้วย (วางจากระดับต้นพร้อมmouse-middle-clickภาพนิ่ง)

ฉันต้องการวางจากระดับต้นด้วยแป้นพิมพ์ลัด ใน gnome-terminal นี่เป็นShift+Insertแต่ใน gedit และ Firefox Shift+Insertวางจาก CLIPBOARD ฉันต้องการทางลัดที่วางอย่างต่อเนื่องจาก CLIPBOARD และทางลัดที่แตกต่างกันที่วางอย่างสม่ำเสมอจากระดับประถมศึกษา

ฉันใช้ Ubuntu 14.04 กับ xmonad และ Firefox 34.0

คำตอบ:


30

ทั้งหมดปพลิเคชันที่คุณกล่าวถึงเป็นgtk+แอพพลิเคดังนั้นจึงเป็นเรื่องง่ายมากที่จะตอบทำไม ... เพราะในทุก gtk+ปพลิเคชัน ( ยกเว้นหนึ่ง ) Shift+ Insertน้ำพริกจากคลิปบอร์ด - คือมันเทียบเท่ากับ+Ctrl Vช็อตคัตถูกฮาร์ดโค้ดในgtkentry.c(บรรทัด 2022) และgtktextview.c(บรรทัด 1506):

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

มีการบันทึกไว้ในคู่มืออ้างอิง GTK + 3ภายใต้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.

เท่าที่ผมรู้ว่านี้คือทำเพื่อความมั่นคงกับคนอื่น ๆ DE (ดูKDE's Qtผูกที่สำคัญในQTextEdit Class) และระบบปฏิบัติการ Windows 1 ยกเว้นอย่างเดียวคือ หลังจากการอภิปรายยาว devs ได้ตัดสินใจ (สำหรับความสอดคล้องกับอาคารอื่น ๆ ) ว่าใน, + ควรวางจากระดับประถมศึกษาและ+ + ควรวางจากคลิปบอร์ด (แม้ว่าคุณจะมีตัวเลือกในการปรับแต่งทางลัดบางส่วน)
gnome-terminalgnome-terminalShiftInsertCtrlShiftV


ในฐานะที่เป็นวิธีการที่คุณจะวางที่เลือกด้วยแป้นพิมพ์ลัด ... ไม่มีทางที่ตรงไปตรงมา

วิธีที่ง่ายที่สุดคือการกำหนดทางลัดให้กับสคริปต์ที่ทำงานxdotool click 2(จำลองการคลิกปุ่มกลางของเมาส์) ขณะนี้ใช้งานได้ (และควรทำงานกับทั้งหมดหรือส่วนใหญ่ DE และชุดเครื่องมือ) จะทำงานเฉพาะเมื่อเคอร์เซอร์ของเมาส์อยู่เหนือช่องป้อนข้อความไม่เช่นนั้นจะล้มเหลว

อีกวิธีที่ค่อนข้างง่ายคือการเข้าถึง Gnome หากมีอยู่ในระบบของคุณ นอกจากนี้ยังต้องมีการปรากฏตัวของ numpad ไปUniversal Access>> และเปิดใช้งานPointing & Clicking Mouse Keysตรวจสอบให้แน่ใจNumLockปิด คุณสามารถใช้ปุ่ม numpad เพื่อเลื่อนเคอร์เซอร์และคลิก หากต้องการจำลองปุ่มกลางของเมาส์ให้คลิก (และปล่อย) *(เครื่องหมายดอกจัน) จากนั้นกด5(นี่คือคำแนะนำโดยย่อ) โซลูชันนี้ดูเหมือนว่าจะทำงานในgtk+สภาพแวดล้อมเสมอ ข้อเสียคือมันต้องมีGnome Accessibilityและจำนวน นอกจากนี้คุณไม่สามารถปรับแต่งทางลัดได้

โซลูชันที่น่าสนใจได้รับการเสนอgnome-Bugzilla (ข้อผิดพลาด 643391) (อัปเดต 2018: ปัญหาได้ถูกย้ายไปที่นี่แล้ว) มันต้องมีการแพตช์ไฟล์ต้นฉบับและตั้งค่าตัวเลือกการกำหนดค่าใน~/.config/gtk-3.0/gtk.css(หรือ~/.gtkrc-2.0สำหรับgtk+2 แอพ) ฉันไม่ได้ลองเป็นการส่วนตัว แต่ข้อเสนอแนะเป็นบวก

เป็นการดีที่คุณจะแก้ไขไฟล์ที่มาและกำหนด"paste-selection"สัญญาณแล้วผูกShift+ Insertไปแทน"paste-selection" "paste-clipboard"รหัสของ Andy (แนบในรายงานข้อผิดพลาดที่เชื่อมโยงด้านบน) สามารถใช้เป็นแนวทางในการทำเช่นนั้นได้ ถึงอย่างนั้นมันจะมีผลกับgtk+แอพเท่านั้น(ฉันไม่ใช่KDE/Qtผู้ชายดังนั้นฉันจึงไม่รู้ว่าจะเปลี่ยนQtพฤติกรรมแอพอย่างไร)


1: (ไม่ต้องพูดถึง CUA ของ IBM)


2
ขอบคุณสำหรับคำอธิบาย น่าเสียดายที่ไม่มีวิธีแก้ปัญหาที่ดีกว่าฉันคิดถึงแป้นพิมพ์ลัดที่สอดคล้องกันสำหรับปรมาจารย์จำนวนมาก วิธีแก้ปัญหาการจำลองเมาส์ไม่ได้ช่วยอะไรมากเท่าที่ทางลัดคือหลีกเลี่ยงการจัดการกับเมาส์
didi_X8

1

ฉันขอโทษ: ฉันไม่สามารถเขียนความคิดเห็นเพราะชื่อเสียงดังนั้นฉันเขียนเป็นคำตอบ มันไม่ใช่ทางออกโดยตรง แต่ช่วยฉัน ...

คุณสามารถใช้การรวมกันของข้อมูล:

  1. ธีม GTK แก้ไขและช่วยสำคัญที่มีผลผูกพันตามที่คุณต้องการ

  2. ตัวอย่างของการสร้าง GTK 3.0 ปุ่มลัดใน CSS ของชุดรูปแบบ

  3. ตัวอย่างของการเอาชนะ keybindings GTK และยกเลิกการเชื่อมโยง

  4. ตัวอย่างการแก้ไขการโยงคีย์สำหรับ gnome-terminal

  5. การเริ่มต้นอัตโนมัติโดยอัตโนมัติด้วยตัวเลือกเริ่มต้นสำหรับการซิงค์ CLIPBOARD กับ CUTBUFFER (นี่เป็นตัวเลือก) ลิงก์นี้ใช้สำหรับข้อมูลเกี่ยวกับปัญหาเท่านั้น

  6. ใช้ clipman เพื่อ gui เข้าถึงบัฟเฟอร์หลายอัน (Primary และ CLIPBOARD) โดยไม่ต้องเลือกการซิงค์อัตโนมัติ (auto-bi directional auto sync ผิด)

ดังนั้นฉันจึงเลือกธีม gtk และแก้ไข CSS ธีมเพื่อใช้การโยงคีย์สำหรับคัดลอกคลิปบอร์ด (Ctrl + แทรก) และวางคลิปบอร์ด (Shift + แทรก) สัญญาณ


1
นี่อาจเป็นจุดเริ่มต้นของคำตอบที่ดีถ้าคุณนำเนื้อหาของลิงค์เหล่านั้นมารวมเข้าด้วยกัน เนื่องจากมันเป็นเพียงชุดของลิงก์และทำให้มีความเสี่ยงที่จะถูกลบ กรุณากรอกข้อมูลเพื่อให้ตรงกับคำตอบและฉันแน่ใจว่าคุณจะได้รับการโหวต (ดังนั้นให้ชื่อเสียงพอที่จะแสดงความคิดเห็น) ขอบคุณ!
Toby Speight
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.