it-swarm-vi.com

Dán lựa chọn X (không phải nội dung clipboard) bằng bàn phím

Tôi muốn có thể dán lựa chọn X bằng bàn phím. Hiện tại tôi phải sử dụng nút chuột giữa để làm điều này.

Tôi tập hợp rằng việc giả mạo một lần nhấn nút chuột giữa khá dễ thực hiện, nhưng một giải pháp như vậy cũng sẽ yêu cầu di chuyển con trỏ chuột đến vị trí của dấu mũ văn bản.

Có cách nào tốt hơn để làm điều này?

86
intuited

Trên một số thiết lập linux mặc định, Shift+Insert sẽ thực hiện một X-selection-paste. Như bạn đã lưu ý, điều này khác biệt rõ ràng với X-clipboard-paste lệnh, ràng buộc thường thay đổi theo ứng dụng. Nếu điều đó không làm việc ở đây là một vài chìa khóa khác để thử:

  • Ctrl+V

  • Ctrl+Shift+V

  • Ctrl+Shift+Insert

Không đi? Môi trường máy tính để bàn hoặc Trình quản lý cửa sổ của bạn có thể không được định cấu hình và điều này rất phức tạp vì vì đây là một biểu tượng của một bộ công cụ DE hoặc WM, mỗi ví dụ (GTK, Qt, v.v.) có thể có các ràng buộc mặc định khác nhau. Một số chương trình (ví dụ gvim) thậm chí có các thanh ghi sao chép nội bộ riêng không nhất thiết phải được đồng bộ hóa với môi trường đồ họa mà chúng chạy. Để tắt nó, ngay cả khi chương trình sử dụng hệ thống X-clipboard, X có nhiều hệ thống để lựa chọn. Hai cơ bản nhất là bộ đệm lựa chọn, trong đó luôn có bất cứ thứ gì được chọn cuối cùng (được thực thi khi không có) - và bộ đệm sao chép mà mọi thứ thường cần được sao chép cụ thể vào. Để thực hiện một bản sao rõ ràng vào hệ thống sau, bạn có thể thử bất kỳ trong số này trên cho kích thước:

  • Ctrl+C

  • Shift+Ctrl+C

  • Ctrl+Insert


Nếu không ai trong số đó chỉ làm việc kỳ diệu cho bạn, có hai cách bạn có thể đi.

  1. Có một ứng dụng cho điều đó! ™ Sử dụng một trong các chương trình quản lý clipboard khác nhau để xử lý việc này cho bạn. Phổ biến nhất dường như là ParcelliteGlippy , nhưng bạn có thể kiểm tra các lựa chọn thay thế khác ở đây . Cũng xem điều này câu hỏi về trình quản lý clipboard nâng cao

  2. Hack nó cho mình.

Vì vậy, hãy nói rằng bạn muốn hack nó.

Viết mã của riêng bạn và gõ vào X api, các công cụ của hacker cho công việc là một vài tiện ích dòng lệnh nhỏ cung cấp cho bạn một cửa sổ vào tâm trí của X. Chỉ cần một cửa sổ nhỏ khiến bạn thấy, toàn bộ khung cảnh quá đáng sợ .

Công cụ đầu tiên là xsel. Công việc nhỏ này sẽ nhổ bất cứ thứ gì trong bộ đệm lựa chọn của X tại bất kỳ thời điểm nào.

Bây giờ bạn cần phải có được điều đó vào chương trình của bạn. Có hai lựa chọn cho việc này. Một là xdotool cho phép bạn bắt chước gửi các sự kiện đến hệ thống đầu vào Xorg. Bạn có thể sử dụng phương thức kiểu như xdotool type foo_bar để bắt chước gõ 'foo_bar' tại con trỏ. Kết hợp lại, bạn nhận được một cái gì đó như thế này:

$ xdotool type $(xsel)

Một cái khác là xvkbd sẽ gửi các sự kiện bàn phím từ hệ thống con thấp hơn. Bạn có thể đặt các tổ hợp phím vào nó trên STDIN. Kết hợp với xsel, bạn sẽ có được thứ gì đó như thế này:

$ xsel | xvkbd -xsendevent -file -

Tuyệt quá. Bây giờ cho keybinding để chạy công cụ này. Nếu bạn chạy Gnome-2, bạn có thể thêm lối tắt tùy chỉnh trong Hệ thống -> Tùy chọn -> Phím tắt . Nếu bạn sử dụng DE hoặc WM khác, kích thước này sẽ phụ thuộc vào người đọc.

Lưu ý cuối cùng là khi liên kết các lệnh với phím tắt, thường chỉ cần có một lệnh chứ không phải hai lệnh được kết nối với một đường ống như chúng ta sử dụng ở trên. Bạn có thể thực hiện điều này bằng cách gọi lệnh piped của bạn dưới dạng chuỗi lệnh argumetn tới Shell mới như thế này:

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

Rõ ràng Shift+Insert có thể không hoạt động đúng trên một số cài đặt GTK 3, ít nhất là trên FreeBSD. Vấn đề được mô tả là:

Shift-Chèn không dán lựa chọn chính. Thay vào đó, nó bị ràng buộc để dán bảng tạm (mà Control-V đã được sử dụng). Do đó, không có cách nào chỉ sử dụng bàn phím để chèn lựa chọn chính. Người ta phải kéo chuột đến đó và nhấp chuột giữa. Điều này làm cho sự tương tác giữa các thiết bị đầu cuối và GTK không thoải mái.

Một báo cáo lỗi và bản vá lỗi gần đây (như bài viết này) có sẵn:

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

10
Michael Danilov
xdotool click 2

Điều này mô phỏng nút chuột nhấp trực tiếp và không cần sử dụng xsel/xdotool type ....

7
blueyed

Tôi đang sử dụng Ubuntu 12 và gặp sự cố khi dán văn bản từ xterm trong gedit (và bất kỳ ứng dụng nào khác). Ngoài ra, tôi sử dụng máy tính xách tay không có nút chuột giữa như nhiều người (thực sự không có sự thương xót cho người dùng linux mà không có nút giữa và không: nhấp chuột phải + left_click không hoạt động thay thế).

Trong khi tôi nghĩ phương thức "xsel | xvkbd -xsendevent -file -" là khá tuyệt. Tôi tìm thấy giải pháp đơn giản nhất là chạy "gnome-terminal" được cài đặt sẵn thay vì "xterminal". "gnome-terminal" hỗ trợ sao chép chuột phải vào lệnh clip-board. Sau đó tôi có thể "Chỉnh sửa Menu-> Dán" vào gedit hoặc sử dụng shift-insert. "gnome-terminal" được cài đặt sẵn với Ubuntu 12. Các bản cài đặt debian/gnome khác có thể cài đặt nó qua:

Sudo apt-get install gnome-terminal

Trong Ubuntu, thêm nó vào trình khởi chạy bên trái bằng cách nhấp vào nút "Trang chủ Dash" ở đầu thanh trình khởi chạy. Trong hộp tìm kiếm kết quả, nhập thiết bị đầu cuối. Bạn có thể kéo biểu tượng "Terminal" vào thanh launcher.

2
Ryan Woodard