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


84

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 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?


2
Có thể tương tự đối với Ubuntu: Askubfox.com/questions/7769/,
Ciro Santilli 改造

Câu trả lời:


93

Trên một số thiết lập linux mặc định, Shift+ Insertsẽ thực hiện X-selection-paste. Như bạn đã lưu ý, điều này khác biệt rõ rệt với X-clipboard-pastelệnh, ràng buộc thường thay đổi theo ứng dụng. Nếu điều đó không hoạt động thì đâ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 ngữ của một bộ công cụ DE hoặc WM, mỗi bộ công cụ (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 một 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 những 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 . Xem thêm câu hỏi này 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à xdotoolcho 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 loại của nó như xdotool type foo_barbắ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à xvkbdgửi các sự kiện bàn phím từ một hệ thống con thấp hơn. Bạn có thể gõ phím gõ vào nó trên STDIN. Kết hợp với xsel, bạn nhận được một cái 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 sang shell mới như thế này:

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

1
Chắc chắn đủ điều kiện là "tốt hơn". Cảm ơn!
trực giác

Trong ứng dụng nào? Không có ứng dụng nào tôi sử dụng thường hoạt động như thế này.
Gilles

Tôi đang sử dụng Ubuntu và tôi thực sự muốn Shift-Insertsử dụng thực tế, nhưng đơn giản là nó không (trong Ubuntu) .. "Tính nhất quán (+/-)" tôi đã tìm thấy là X- lựa chọn trong các ứng dụng GTK có thể được Shift-Chèn vào một gnome-terminal, nhưng nó khá dễ xảy ra đối với bất kỳ kết hợp dán chéo nào khác của cùng các ứng dụng này ... Một vài ứng dụng KDE tôi sử dụng (bao gồm cả Konsole), đơn giản là không dán chéo hoàn toàn .... và ngay cả trong các ứng dụng GTK, nhấp chuột giữa có thể hoạt động, nhưng Shift + Chèn có thể không (đối với cùng một ứng dụng) ... Vì vậy, tôi sử dụng chuột :(
Peter.O

Không có thứ gọi là ràng buộc cấp độ X của X. Nó có thể là một cái gì đó mà các ứng dụng bạn sử dụng làm, hoặc một cái gì đó mà trình quản lý cửa sổ hoặc môi trường máy tính để bàn của bạn làm. Tôi nghi ngờ nó sẽ được cụ thể cho một phân phối.
Gilles

1
Tôi thấy một cách tiếp cận dễ dàng là liên kết phím tắt để gửi một sự kiện nhấp chuột giữa. Đối với tôi, đó là xdotool click 2.
cảm ứng

10

Rõ ràng Shift+ Insertcó 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ỉ 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


8
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 ....


1
Điều này đòi hỏi phải định vị chuột đúng cách, vì vậy bạn thực sự có thể sử dụng nút chuột. Nếu có một cách nào đó để bắt chuột vào con trỏ thì đây có thể là một phần của câu trả lời (tôi nghi ngờ là có)
jberryman

2

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 -" thì 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
Đây là một giải pháp rất kém. Bạn thực sự không thể đề nghị mọi người chuyển sang một thiết bị đầu cuối khác, đặc biệt là một thiết bị sẽ lấy 100 MB + vỏ gnome làm phụ thuộc. Điều này cũng không làm cho nó hoạt động với bất kỳ ứng dụng nào khác và điều tồi tệ nhất là điều này vẫn đòi hỏi phải sử dụng chuột để hoạt động.
pfrenssen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.