การวางการเลือก X (ไม่ใช่เนื้อหาของคลิปบอร์ด) ด้วยแป้นพิมพ์


83

ฉันต้องการวางการเลือก X โดยใช้แป้นพิมพ์ ปัจจุบันฉันต้องใช้ปุ่มกลางของเมาส์เพื่อทำสิ่งนี้

ฉันรวบรวมว่าการแกล้งทำการกดปุ่มกลางของเมาส์ทำได้ค่อนข้างง่าย แต่โซลูชันดังกล่าวจะต้องเลื่อนตัวชี้เมาส์ไปยังตำแหน่งของตัวอักษรข้อความด้วย

มีวิธีที่ดีกว่าในการทำเช่นนี้?


2
เป็นไปได้เช่นเดียวกันสำหรับ Ubuntu: askubuntu.com/questions/7769/…
Ciro Santilli 事件改造中心中心法轮功六四事件

คำตอบ:


93

ในบางการตั้งค่าเริ่มต้นของลินุกซ์, Shift+ จะดำเนินการInsert X-selection-pasteดังที่คุณจดบันทึกสิ่งนี้แตกต่างจากX-clipboard-pasteคำสั่งอย่างชัดเจนการผูกพันซึ่งมักแตกต่างกันไปตามแอปพลิเคชัน หากไม่สามารถใช้งานได้ที่นี่เป็นปุ่มอื่นที่ควรลอง:

  • Ctrl+V

  • Ctrl+ Shift+V

  • Ctrl+ Shift+Insert

ไม่ไป? Desktop Environment หรือ Window Manager ของคุณอาจไม่ได้กำหนดค่าไว้และมีความซับซ้อนเพราะ - ภายใต้แบนเนอร์ของ DE หรือ WM หนึ่งชุดเครื่องมือแต่ละชุด (เช่น GTK, Qt, ฯลฯ ) อาจมีการผูกค่าเริ่มต้นที่แตกต่างกัน บางโปรแกรม (เช่นgvim) แม้จะมีการลงทะเบียนการคัดลอกภายในของตัวเองที่ไม่จำเป็นต้องซิงค์กับสภาพแวดล้อมแบบกราฟิกที่พวกเขาทำงานมาด้านบนออกแม้ในขณะที่โปรแกรมใช้ระบบ X-clipboard ระบบ X มีหลายระบบให้เลือก พื้นฐานที่สุดสองประการคือบัฟเฟอร์การเลือกซึ่งมักจะมีสิ่งสุดท้ายที่เลือกคือ (ดำเนินการเมื่อไม่มี) - และบัฟเฟอร์การคัดลอก - ซึ่งมักจะต้องคัดลอกสิ่งต่าง ๆ ลงไปโดยเฉพาะ หากต้องการทำสำเนาอย่างชัดเจนในระบบหลังคุณสามารถลองทำสิ่งเหล่านี้ได้ในขนาด:

  • Ctrl+C

  • Shift+ Ctrl+C

  • Ctrl+Insert


หากไม่มีสิ่งใดที่ทำงานได้อย่างน่าอัศจรรย์สำหรับคุณมีสองวิธีที่คุณสามารถไปได้

  1. มีแอพสำหรับสิ่งนั้น! ™ใช้หนึ่งในโปรแกรมจัดการคลิปบอร์ดต่าง ๆ เพื่อจัดการสิ่งนี้สำหรับคุณ ที่นิยมมากที่สุดดูเหมือนจะParcelliteและGlippyแต่คุณสามารถตรวจสอบทางเลือกอื่น ๆ ที่นี่ ดูคำถามนี้เกี่ยวกับผู้จัดการคลิปบอร์ดขั้นสูงด้วย

  2. แฮ็คมันด้วยตัวเอง

สมมุติว่าคุณต้องการแฮ็คมัน

สั้น ๆ ในการเขียนโค้ดของคุณเองและเข้าไปที่ X api เครื่องมือแฮ็กเกอร์สำหรับงานคืออรรถประโยชน์บรรทัดคำสั่งเล็ก ๆ น้อย ๆ ที่ให้หน้าต่างเข้าสู่จิตใจของ X เพียงหน้าต่างเล็ก ๆ ที่อยู่ในใจคุณ .

xselเครื่องมือแรกคือ ผู้ทำงานเล็ก ๆ คนนี้จะคายสิ่งที่อยู่ในบัฟเฟอร์การเลือกของ X ในเวลาใดก็ตาม

ตอนนี้คุณต้องนำสิ่งนั้นเข้าสู่โปรแกรมของคุณ มีสองตัวเลือกสำหรับสิ่งนี้ หนึ่งในนั้นคือxdotoolช่วยให้คุณเลียนแบบการส่งเหตุการณ์ไปยังระบบอินพุต Xorg คุณสามารถใช้มันเป็นวิธีการประเภทเช่นxdotool type foo_barการเลียนแบบการพิมพ์ 'foo_bar' ที่เคอร์เซอร์ เมื่อรวมกันคุณจะได้รับสิ่งนี้:

$ xdotool type $(xsel)

อีกxvkbdเหตุการณ์หนึ่งคือการส่งเหตุการณ์แป้นพิมพ์จากระบบย่อยที่ต่ำกว่า คุณสามารถไปป์การกดแป้นลงใน STDIN เมื่อรวมกับxselคุณจะได้รับสิ่งนี้:

$ xsel | xvkbd -xsendevent -file -

ยิ่งใหญ่ ตอนนี้สำหรับปุ่มลัดที่จะเรียกใช้สิ่งนี้ ถ้าคุณเรียกใช้ Gnome-2, คุณสามารถเพิ่มทางลัดกำหนดเองในระบบ -> Preferences -> แป้นพิมพ์ลัด หากคุณใช้ DE หรือ WM อื่น excersize นี้จะขึ้นอยู่กับผู้อ่าน

หมายเหตุสุดท้ายคือเมื่อจำเป็นต้องใช้คำสั่งเชื่อมโยงกับแป้นพิมพ์ลัดมักจะมีเพียงคำสั่งเดียวเท่านั้นไม่ใช่สองคำสั่งที่เชื่อมต่อกับไพพ์เหมือนที่เราใช้ด้านบน คุณสามารถทำสิ่งนี้ได้โดยการเรียกใช้คำสั่ง piped ของคุณเป็นสตริงคำสั่ง argumetn ไปยังเชลล์ใหม่เช่นนี้:

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

1
มีคุณสมบัติเป็น "ดีกว่า" อย่างแน่นอน ขอบคุณ!
intuited

ในแอปพลิเคชันอะไร แอปพลิเคชันที่ฉันใช้มักจะทำตัวแบบนี้ไม่ได้
Gilles

ฉันใช้ Ubuntu และฉันอยากShift-Insertจะใช้งานได้จริง ๆ แต่มันไม่ใช่ (ใน Ubuntu) .. "ความสอดคล้อง (+/-)" ที่ฉันพบคือ X- การเลือกในแอพ GTK สามารถ Shift-Inserted เป็น a gnome-terminal, แต่มันค่อนข้างที่จะพลาดสำหรับการผสมผสานข้ามแอพอื่น ๆ ของแอพเดียวกันนี้ ... แอพ KDE ที่ฉันใช้ไม่กี่อัน cross-paste เลย .... และแม้แต่ในแอพ GTK การคลิกกลางอาจใช้งานได้ แต่ Shift + Insert อาจไม่ (สำหรับแอพเดียวกัน) ... ดังนั้นฉันจึงใช้เมาส์ :(
Peter.O

ไม่มีสิ่งเช่น "การผูกระดับ X" อาจเป็นสิ่งที่แอปพลิเคชันที่คุณใช้ทำหรือสิ่งที่ตัวจัดการหน้าต่างหรือสภาพแวดล้อมเดสก์ท็อปของคุณทำ ฉันสงสัยว่ามันจะเฉพาะเจาะจงกับการกระจาย
Gilles

1
ฉันพบวิธีที่ง่ายคือการผูกแป้นพิมพ์ลัดเพื่อส่งเหตุการณ์คลิกกลาง xdotool click 2สำหรับผมที่เป็น
Inductiveload

10

Apparently Shift+ Insertอาจทำงานไม่ถูกต้องในการติดตั้ง GTK 3 บางอย่างเป็นอย่างน้อยใน FreeBSD ปัญหานี้อธิบายว่า:

Shift-Insert ไม่ได้วางส่วนที่เลือกหลัก แต่จะผูกไว้เพื่อวางคลิปบอร์ด (ซึ่งใช้ Control-V อยู่แล้ว) ดังนั้นจึงไม่มีวิธีที่คีย์บอร์ดเท่านั้นในการแทรกการเลือกหลัก หนึ่งต้องลากเมาส์ไปที่นั่นและคลิกกลาง สิ่งนี้ทำให้การทำงานร่วมกันระหว่างเทอร์มินัลกับ GTK ไม่สะดวกสบาย

มีรายงานบั๊กและแพทช์ล่าสุด (ขณะที่เขียนนี้) ล่าสุด:

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


8
xdotool click 2

นี้เลียนแบบปุ่มเมาส์คลิกโดยตรงและไม่จำเป็นต้องใช้/xselxdotool type ...


1
ต้องมีการวางตำแหน่งเมาส์อย่างถูกต้องดังนั้นคุณอาจใช้ปุ่มเมาส์ได้เช่นกัน ถ้ามีวิธีที่จะตะครุบเมาส์เพื่อเคอร์เซอร์นี้อาจจะเป็นส่วนหนึ่งของคำตอบถึงแม้บางคน (ผมสงสัยมี)
jberryman

2

ฉันใช้ Ubuntu 12 และมีปัญหาในการวางข้อความจาก xterm ใน gedit (และแอปอื่น ๆ ) นอกจากนี้ฉันใช้แล็ปท็อปที่ไม่มีปุ่มกลางของเมาส์เหมือนหลาย ๆ คน (ไม่มีความเมตตาในคลิปบอร์ดสำหรับผู้ใช้ linux ที่ไม่มีปุ่มกลางและไม่ใช่: คลิกขวา + left_click ไม่ทำงานแทน)

ในขณะที่ฉันคิดว่าวิธี "xsel | xvkbd -xsendevent -file -" ค่อนข้างดี ฉันพบทางออกที่ง่ายที่สุดคือเรียกใช้ "gnome-terminal" ที่ติดตั้งไว้ล่วงหน้าแทน "xterminal" "gnome-terminal" รองรับคำสั่งคัดลอกคลิกขวาไปยังคลิปบอร์ด ฉันสามารถ "แก้ไขเมนู -> วาง" ลงใน gedit หรือใช้ shift-insert "gnome-terminal" ติดตั้งมาพร้อมกับ Ubuntu 12. การติดตั้ง debian / gnome อื่น ๆ ควรจะสามารถติดตั้งผ่าน:

sudo apt-get install gnome-terminal

ใน Ubuntu ให้เพิ่มไปที่ตัวเรียกใช้งานด้านซ้ายโดยคลิกปุ่ม "Dash Home" ที่ด้านบนของแถบตัวเรียกใช้งาน ในช่องค้นหาผลลัพธ์พิมพ์เทอร์มินัล คุณสามารถลากไอคอน "เทอร์มินัล" ไปที่แถบตัวเรียกใช้งาน


2
นี่เป็นทางออกที่แย่มาก คุณไม่สามารถแนะนำให้คนอื่นเปลี่ยนไปใช้เทอร์มินัลอื่นโดยเฉพาะที่จะดึง gnome-shell 100MB + ขึ้นไปเพื่อพึ่งพา สิ่งนี้ยังไม่สามารถใช้งานได้กับแอปพลิเคชันอื่น ๆ และที่แย่ที่สุดของทั้งหมดนี้ยังคงต้องใช้เมาส์ในการทำงาน
pfrenssen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.