Đặt lại CTRL-ALT- [C | V] thành CTRL-SHIFT- [C | V] trong URxvt> = 9,20


16

Kể từ URxvt9.20, văn bản có thể được sao chép vào bảng tạm với Ctrl+ Alt+ C(và cũng được dán từ Ctrl+ Alt+ V).

Nhưng, tôi đã sử dụng những ràng buộc này cho một điều khác.

Vậy làm thế nào tôi có thể rebind, trong URxvt> = 9,20 nó thành Ctrl+ Shift+ C(và Ctrl+ Shift+ Vđể dán)?


câu hỏi liên quan trên SO stackoverflow.com/questions/43305190/ từ
anarcat

Câu trả lời:


22

Phần mở rộng eval được vận chuyển với rxvt-unicode có các hành động paste_clipboard và select_to_clipboard cho điều này, có thể được liên kết với bất kỳ keyym nào (xem tại đây ).

Trong .Xresourcesphần thêm của bạn :

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard

Để tắt các phím bấm trước đó, bạn cũng cần:

URxvt.keysym.Control-Meta-c: builtin-string:
URxvt.keysym.Control-Meta-v: builtin-string:

Bạn có thể tải lại tệp với:

xrdb -load .Xresources

Bạn sẽ cần phải khởi động lại rxvt để những thay đổi có hiệu lực.


1
điều này hoàn toàn không hoạt động cho đến khi tôi cũng thêm hoặc chỉnh sửa nó để .Xresources: URxvt.perl-ext-common: default #also tắt keycaps theo câu trả lời này: unix.stackexchange.com/a/444777/8827
marinara

2

Mã thực hiện hai ràng buộc như thế này:

  if (ctrl && meta && (keysym == XK_c || keysym == XK_v))
    { 
      if (keysym == XK_v)
        selection_request (ev.time, Sel_Clipboard);
      else if (selection.len > 0)
        { 
          free (selection.clip_text);
          selection.clip_text = rxvt_wcsdup (selection.text, selection.len);
          selection.clip_len = selection.len;
          selection_grab (CurrentTime, true);
        }

      return;
    }

Bạn không thể sử dụng keysymtài nguyên để khởi động lại một cái gì đó khác, vì điều đó chỉ ánh xạ tới các chuỗi (không có sửa đổi như controlalt).

Tuy nhiên, bạn có thể sử dụng tiện ích mở rộng Perl, có các phương thức để làm việc với các lựa chọn. Nhưng bạn phải viết một kịch bản Perl để gắn kết chúng lại với nhau.


1

Để sử dụng tiện ích mở rộng ( paste_clipboardselection_to_clipboard ) được đề cập trong câu trả lời của @ Enno, bạn có thể thêm phần sau vào .Xresourcestệp của mình :

URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard

Chính nó, điều này không thực sự trả lời câu hỏi. Bạn có thể cải thiện nó bằng cách mô tả cách sử dụng .Xresourcestệp để liên kết các khóa, vì câu trả lời của Enno không có.
G-Man nói 'Phục hồi Monica'

1

Tất cả các câu trả lời hiện có xử lý nửa sau của câu hỏi (cách thêm các phím bấm cho các thao tác trong bảng tạm vào các khóa mới), nhưng không trả lời nửa đầu (làm thế nào để giải phóng các phím bấm gốc).

Câu trả lời là chỉ cần ràng buộc họ với builtin-string:(nếu bạn muốn họ được gửi nguyên văn; nếu không, với hành động mong muốn). Tức là trong.Xresources :

URxvt.keysym.C-M-c: builtin-string:

Hoặc, trên dòng lệnh:

-keysym.C-M-c builtin-string:
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.