在像 Firefox 这样的应用程序中Ctrl-Insert和Shift- 的Insert工作方式类似于Ctrl-c和Ctrl- v(修改中学剪贴板),但在 XTerm 中却是这样不是工作就像共同点Ctrl——Shift和——cCtrlShiftv:
- Ctrl-Insert不更改剪贴板,而是
;5~
在当前提示符上逐字打印。 - Shift-Insert粘贴基本的剪贴板而不是辅助剪贴板。
我可以解决这个问题吗.inputrc
或者其他什么?最好有二冲程跨平台剪切和粘贴快捷方式到处。
答案1
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
这绑定ctrl-shift-v到插入剪贴板内容。我不清楚你到底想要什么,所以检查一下手册页 用于功能以及 PRIMARY、SECONDARY 和 CUT_BUFFER0 选择。
您大概可以添加(不要忘记前面几行的反斜杠):
Shift <Key>Insert: insert-selection(SECONDARY)\n\
Ctrl <Key>Insert: copy-selection(SECONDARY)\n
答案2
这类似于如何从 xterm(Awesome、Debian、VirtualBox)复制文本?,包括部分建议答案。
但是:通过后台,xterm
接收 X 事件(您可以使用 来查看xev
),并以不同的方式处理这些事件:
- 对于controlinsert,xterm 查看控制键和插入键的事件,并构造一个字符序列以发送到您的应用程序,例如,
^[[28;5~
- shiftinsert处理方式有所不同,因为它是默认
translations
资源对于 xterm。这是 X Toolkit 库的一个功能,它来自前xterm 可以看到事件。在里面translations
资源,就是这一行:
Shift 插入:插入选择(SELECT, CUT_BUFFER0) \n\
这SELECT
此资源中的关键字被 xterm 解释为 PRIMARY 或 CLIPBOARD,具体取决于资源selectToClipboard
(或选择到剪贴板菜单项)。顺便说一下,CLIPBOARD 不是次要选择。看2.6.1.2。二次选择在 ICCM 中了解二次选择的描述。
您可以启用selectToClipboard
资源,将其添加到您的$HOME/.Xdefaults
文件(或其他资源文件,甚至使用xrdb
):
xterm*selectToClipboard: true
您还可以使用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)
X Toolkit 中的翻译解析器可以识别关键字的各种拼写。因此与和Key
相同。但这是它知道密钥的唯一方法。KeyPress
KeyDown
Ctrl
control
当你可以添加controlC和controlV,通常不建议这样做,因为这些控制键在您的终端中很有用(默认情况下):
$ 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
进一步阅读:
- 为什么我无法从其他程序中选择/粘贴?(xterm 常见问题解答)
- 第 10 章翻译管理(X Toolkit 内联 - C 语言接口)
- 附录 B. 转换表语法(X Toolkit 内联 - C 语言接口)