Phím tắt để dán lựa chọn chính


40

Có một phím tắt tiêu chuẩn hoặc thông thường để dán lựa chọn chính?

Tôi muốn chọn một số văn bản và đi đến một ứng dụng khác để dán mà không bỏ rác nội dung clipboard của tôi. Tôi thà giữ ngón tay trên bàn phím hơn là di chuyển đến chuột, tìm con trỏ, đặt nó ở nơi tôi muốn và nhấp chuột giữa.

Nếu không có gì thông thường, hoặc nếu nó là ứng dụng cụ thể và không được nhiều người ủng hộ, thì có cách giải quyết nào để ứng dụng này hoạt động trên toàn cầu không? (Hoặc ít nhất là trong nhiều ứng dụng hơn.)


2
Có thể giống với bất kỳ bản phân phối nào: unix.stackexchange.com/questions/11889/NH
Ciro Santilli 改造 改造

FWIW, bạn có thể dán lựa chọn chính từ bàn phím (nghĩa là không sử dụng nút chuột) bằng cách sử dụng shift-insert và sao chép / dán lựa chọn clipboard bằng cách sử dụng ctrl-insert / ctrl-shift-insert
Jonathan Hartley

@JonathanHartley cho tôi dịch chuyển-chèn bột nhão từ bảng ghi tạm không phải là lựa chọn chính
jberryman

Câu trả lời:


32

Gửi các phím bấm ảo không hoạt động đối với tôi (xem bình luận ), nhưng câu trả lời đó đã thôi thúc tôi tìm kiếm các giải pháp tương tự. Gửi một sự kiện "văn bản" mà xvkbdbỏ qua trạng thái hiện tại của bàn phím vật lý của bạn:

sh -c 'xsel | xvkbd -xsendevent -file - 2>/dev/null'

xvkbd -textsử dụng một vài chuỗi dấu gạch chéo ngược, thay vì nhảy với thoát, -filehoạt động. xvkbdcũng đưa ra một số văn bản cảnh báo về công cụ sửa đổi, nhưng dường như nó không liên quan đến việc sử dụng này (nhưng tôi không muốn thấy nó trong ~/.xsession-errors).

Tôi đã ràng buộc điều này với một phím tắt bằng cách sử dụng Hệ thống> Tùy chọn> Phím tắt .

Lưu ý rằng bạn cần cài đặt các gói xsel và xvkbd:

sudo apt-get install xsel xvkbd

3
Chuối thánh! Nó hoạt động! Đó là tuyệt vời. Ubuntu nên thiết lập điều này theo mặc định.
Eric Johnson

8
Đối với tôi, sh -c 'xsel | xvkbd -file - 2>/dev/null'công việc, -xsendevent phải ra ngoài để làm cho nó hoạt động.
sup

Nhân tiện, một lần nữa, tôi phải gán lệnh này cho một phím tắt duy nhất (may mắn là tôi có nút ThinkVantage không làm gì trên Thinkpad của mình - ctrl + alt + v hoạt động kỳ lạ và chỉ dán một phần của những gì đã vào xsel).
sup

2
Điều này hoạt động rất tốt ngoại trừ hai vấn đề. (1) Tôi sử dụng thiết bị đầu cuối thả xuống (Guake) mà tôi đã đặt để ẩn khi mất tập trung. Chạy tập lệnh này sẽ loại bỏ tiêu điểm tạm thời khỏi thiết bị đầu cuối, khiến nó bị ẩn. (2) Nó không xử lý tốt với các ký tự hai byte UTF-8. ví dụ: nếu tôi chọn "éòü", sử dụng tập lệnh in "à © òü".
Sparhawk

2
Có vẻ như lỗi thứ hai là trong xvkbd. xselhoạt động tốt với "éòü" trong lựa chọn chính, nhưng xvkbdthất bại như tập lệnh ở trên. (Và cũng thất bại với xvkbd -text "éòü", mặc dù ở đây nó không in gì cả.)
Sparhawk

7

Bạn có thể có được điều này với việc sử dụng kết hợp các chương trình xdotool ( nhấp để cài đặt ) và xsel ( nhấp để cài đặt ).

xdotoolcó thể mô phỏng gõ vào một cửa sổ; xselxuất nội dung của lựa chọn CHÍNH (theo mặc định); lớp vỏ sau đây sẽ thực hiện thủ thuật:

 xdotool type `xsel`

Để liên kết phím này với bất kỳ phím nào bằng cách sử dụng mục menu System-> Preferences-> Bàn phím tắt , cần phải bọc nó trong một lệnh gọi shell:

 sh -c 'xdotool type --clearmodifiers -- "`xsel`"'

Nhập vào xdotoolsẽ không hoạt động với một số chương trình; xem các ghi chú trong tài liệu xdotool .


Điều đó sẽ không hoạt động trừ khi hộp văn bản hoạt động và vị trí con trỏ ở vị trí chính xác đó và chắc chắn là không. Trong thực tế, nếu điều này tính biên giới của trình quản lý cửa sổ, thì điều đó sẽ thực hiện hành động "nhấp chuột vào tiêu đề cửa sổ" của tôi, điều này hoàn toàn khác.

@Roger Cảm ơn, đã sửa văn bản. Tôi tò mò liệu có cách nào tốt hơn để làm điều này không: bản thân tôi đã tìm kiếm một "miếng dán" trong một thời gian khá lâu ...
Riccardo Murri

Chà, tôi đánh giá cao nỗ lực này, nhưng điều này vẫn không hiệu quả. Nếu tôi muốn lo lắng về vị trí chuột, tôi sẽ chỉ sử dụng chuột ở vị trí đầu tiên. :)

@Roger: Đã sửa đúng vòng thứ hai: xdotool + xsel làm điều đó. (Chà, ít nhất là làm việc cho tôi.)
Riccardo Murri

2
Cần tùy chọn --clearmodifier, nếu không, có một điều kiện chạy đua giữa việc phát hành phím tắt và thực thi xdotool. Các xdotool trong repos 10.04 không được cập nhật cho tùy chọn này, tôi đã phải tự tải xuống và tự xây dựng nó. Tuy nhiên, - bộ giải mã rõ ràng dường như ảnh hưởng đến các công cụ sửa đổi một cách kỳ lạ và cuối cùng tôi không thấy làm thế nào để xdotool hoạt động cho phím tắt trên bàn phím của tôi (mặc dù nó hoạt động rất tốt cho hầu như gõ văn bản).


2

Gọi xdotool click --clearmodifiers 2mô phỏng nhấp vào nút chuột giữa. Điều này hoạt động tốt hơn nhiều so với sử dụng xsel (ít nhất là đối với tôi). Bạn phải định vị chuột trước khi gõ ...


2

Một đề xuất xdotool khác, hoạt động trong Debian Jessie 8.7 (tháng 1 năm 2017):

xdotool click --delay 0 --clearmodifiers 2
  • xdotool xử lý các chuỗi nhiều byte (pe UTF-8), không giống như xvkbd.
  • xdotool clickmô phỏng một nhấp chuột thực tế, vì vậy bạn không cần phải nhấp vào chính mình để dán ở vị trí chuột, như bạn sẽ có nếu bạn sử dụng xdotool typehoặc xvkbd.

Vấn đề duy nhất là --clearmodifierssẽ "nhấn" lại bất kỳ công cụ sửa đổi nào (Ctrl / Alt / Shift / Meta) mà bạn sử dụng sau khi mô phỏng nhấp chuột. Ngay cả với --delay 0(thay vì 12ms), lệnh sẽ mất một chút để thực thi. Nếu bạn nhả các phím trước khi kết thúc, bộ sửa đổi của bạn sẽ được "nhấn" lại và bị kẹt ở đó cho đến khi bạn nhấn và nhả phím thực tế một lần nữa.

Vì vậy, với điều này, bạn phải hơi "chậm" (50ms?) Để phát hành công cụ sửa đổi, nếu bạn đang sử dụng bất kỳ.

Bạn có thể kiểm tra điều này bằng cách thiết lập phím tắt trên bàn phím, sử dụng nó vào trình soạn thảo văn bản, sau đó nhấn một phím (như ahoặc một mũi tên). Chữ cái sẽ xuất hiện bằng chữ thường. Nếu có điều gì khác xảy ra, bạn quá nhanh và công cụ sửa đổi bị kẹt (pe Shift nếu nó ở dạng mũ, Ctrl nếu bạn chọn tất cả văn bản, Alt nếu bạn đã mở menu). Nhấn và phát hành sửa đổi của bạn một lần nữa để thiết lập lại chúng.

Nếu bạn quá nhanh, bạn có thể sử dụng đề xuất của ilkerk:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

Sau đó, bạn phải phát hành chúng trong vòng chưa đầy 300ms và đợi nửa giây để văn bản xuất hiện.

Ngoài ra, sử dụng xdotool typecó nghĩa là bạn chèn văn bản như thể bạn đang gõ, tại vị trí con trỏ văn bản chứ không phải con trỏ chuột. Bạn có thể thay đổi nó thành clicknếu bạn thích hành vi nhấp chuột thông thường.

(đã tạo bài đăng này để người mới không phải ghép các mảnh ghép trong bình luận một lần nữa)


làm việc cho tôi trong Arch Linux ngay bây giờ
MountainX

1

Tôi đã có vấn đề với các giải pháp mà mô phỏng dán các PRIMARYlựa chọn, vì vậy thay vào đó tôi thêm một phím tắt mà bản sao các PRIMARYlựa chọn đếnCLIPBOARD . Sau khi sử dụng phím tắt, tôi dán CLIPBOARDtheo cách thông thường, với Ctrl+V, Ctrl+Shift+Vhoặc Shift+Insert, tùy thuộc vào ứng dụng.

Lệnh sao chép vùng PRIMARYchọn CLIPBOARD

sh -c 'xsel --output --primary | xsel --input --cliboard'

mà tôi liên kết với Ctrl+Insert(lựa chọn tùy ý) trong cài đặt phím tắt Gnome bên dướiSystem Settings -> Devices -> Keyboard

Tóm tắt các vấn đề với các giải pháp khác: Tôi đã cố gắng xsel | xvkbd ...xsel | xdotool ...giải pháp, nhưng thấy họ đã không làm việc rất tốt vì họ mô phỏng cách gõ các PRIMARYkí tự lựa chọn bởi nhân vật, đó là không giống như dán nó với nhấp chuột giữa. Các vấn đề bao gồm: có độ trễ dài trong khi một lựa chọn lớn được chèn một ký tự một lần; nếu bạn muốn hoàn tác "dán", bạn phải hoàn tác nó theo từng ký tự, chậm; nếu bạn đang sử dụng "phím chết", sau đó tất cả mọi thứ được điều sai lầm, ví dụ như "dán" "esản xuất ë; những xvkdbkhông xử lý một cách chính xác các ký tự unicode.

Cảnh báo: Giải pháp này ghi đè lên CLIPBOARDnội dung hiện có , nhưng OP đã yêu cầu các giải pháp bảo tồn CLIPBOARDnội dung hiện có .


Điều này có lưu nội dung clipboard ban đầu và thiết lập lại sau đó không? Hoặc nó có rác nội dung clipboard tạm thời, do đó không thể " không dán vào nội dung clipboard của tôi " trong câu hỏi?
Xen2050

@ Xen2050 có, cái này bỏ qua CLIPBOARD. Tôi sẽ thêm một ghi chú cho câu trả lời.
ntc2

0

Tôi có cùng một vấn đề và tìm kiếm trên internet đã không giúp tôi nhiều. Vấn đề mô phỏng click 2 gây khó chịu như OP đã đề cập.

Vấn đề với đề xuất xdotoolvà xsel ở trên là khi xdotoolbắt đầu "gõ", bạn vẫn đang nhấn một phím khác. Điều đó không phải lúc nào cũng dẫn đến kết quả đầu ra. Ví dụ: nếu bạn liên kết nó với phím "insert" thì xdotoolsẽ gửi các phím trong khi ngón tay của bạn đang nhấn phím "insert" không gây ra gì.

Dưới đây là một cách giải quyết, để liên kết nó với một phím bấm:

sh -c 'sleep 0.3 && xdotool type --clearmodifiers --delay 0  "`xsel`"'

nó không hoàn hảo nhưng làm việc bây giờ bạn có 0,3 giây để hoàn thành lựa chọn nhấn phím (và nhấn phím).

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.