如何使用 Ctrl-Insert 从 XTerm 复制?

l0b*_*0b0 5 keyboard-shortcuts xterm

在如Firefox应用程序Ctrl-InsertShift-Insert工作一样Ctrl-cCtrl- v(修改二次剪贴板),但在的XTerm他们喜欢工作,共同Ctrl- Shift-cCtrl- -Shiftv

  1. Ctrl-Insert不更改剪贴板,而是;5~在当前提示上逐字打印。
  2. Shift-Insert粘贴剪贴板而不是辅助剪贴板。

我可以解决这个问题.inputrc吗?到处都有两冲程跨平台剪切和粘贴快捷方式会很好。

meu*_*euh 10

xterm 的约定在 Firefox 甚至 Web 发明之前很多年就已经建立,它由应用程序资源控制。这些是从好几个地方,包括像文件合并/usr/share/X11/app-defaults/XTerm,并通过与看到的X11服务器也保持信息xrdb -q。例如,您可以通过在文件中放置以下内容来覆盖这些资源~/.Xdefaults

XTerm*VT100.Translations:       #override\n\
 Shift Ctrl <KeyPress> v: insert-selection(CLIPBOARD)\n\
 Shift Ctrl <KeyPress> c: copy-selection(CLIPBOARD)\n
Run Code Online (Sandbox Code Playgroud)

这绑定ctrl-shift-v到插入剪贴板内容。我不清楚您到底想要什么,因此请查看 函数和 PRIMARY、SECONDARY 和 CUT_BUFFER0 选项的手册页


您大概可以添加(不要忘记前几行的反斜杠):

Shift <Key>Insert: insert-selection(SECONDARY)\n\
Ctrl  <Key>Insert: copy-selection(SECONDARY)\n
Run Code Online (Sandbox Code Playgroud)


Tho*_*key 5

这类似于如何从 xterm (Awesome、Debian、VirtualBox) 复制文本?,包括部分建议答案。

但是:通过后台,xterm接收 X 事件(您可以使用 来查看xev),并以不同的方式处理这些事件:

  • 对于controlinsert,xterm 查看控制键和插入键的事件,并构造一个字符序列以发送到您的应用程序,例如,^[[28;5~
  • shiftinsert处理方式有所不同,因为它是xterm默认translations资源的一部分。这是 X Toolkit 库的一个功能,它在xterm 可以看到事件之前出现。translations资源中,就是这一行:
      Shift 插入:插入选择(SELECT, CUT_BUFFER0) \n\

该资源中的关键字SELECT被 xterm 解释为 PRIMARY 或 CLIPBOARD,具体取决于selectToClipboard资源(或“选择到剪贴板”菜单项)。顺便说一下,CLIPBOARD 不是次要选择。见2.6.1.2。ICCM 中的SECONDARY Selection用于描述次要选择。

selectToClipboard您可以通过将其添加到您的$HOME/.Xdefaults文件(或其他资源文件,甚至使用xrdb)来启用资源:

xterm*selectToClipboard: true
Run Code Online (Sandbox Code Playgroud)

control您还可以使用和shift修饰符(以任一顺序)和键添加翻译insert。改编一下我在另一个问题中的回答:

xterm*VT100.Translations: #override \
                 Shift <Key>Insert:    insert-selection(SELECT) \n\
                 Ctrl <Key>Insert:     copy-selection(SELECT) \n\
                 Ctrl Shift <Key>V:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>C:    copy-selection(SELECT)
Run Code Online (Sandbox Code Playgroud)

X Toolkit 中的翻译解析器可以识别关键字的各种拼写。因此与和Key相同。但这是它知道密钥的唯一方法。KeyPressKeyDownCtrlcontrol

虽然您可以添加controlCcontrolV,但通常不建议这样做,因为这些控制键在您的终端中很有用(默认情况下):

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
Run Code Online (Sandbox Code Playgroud)

进一步阅读: