您提到的所有应用程序都是gtk+
应用程序,因此很容易回答“ 为什么 ...”,因为在所有 gtk+
应用程序中(一个除外),都从CLIPBOARD中粘贴Shift+ Insert,即等价于Ctrl+ V。快捷方式在gtkentry.c
(第2022行)和gtktextview.c
(第1506 行)中进行了硬编码:
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
"paste-clipboard", 0);
它也记录在《GTK + 3参考手册》下GtkEntry
:
The “paste-clipboard” signal
void
user_function (GtkEntry *entry,
gpointer user_data)
The ::paste-clipboard signal is a keybinding signal which gets emitted
to paste the contents of the clipboard into the text view.
The default bindings for this signal are Ctrl-v and Shift-Insert.
据我所知,这样做是为了与其他DE(请参阅参考资料中KDE
的Qt
键绑定QTextEdit Class
)和Windows OS 1保持一致。
该唯一的例外是gnome-terminal
。经过长时间的讨论,开发人员决定(为了与其他终端保持一致),在中gnome-terminal
,Shift+ Insert应该从PRIMARY粘贴,而Ctrl+ Shift+ V应该从CLIPBOARD粘贴(尽管您可以选择自定义一些快捷方式)。
至于如何使用键盘快捷键粘贴选择内容……没有直接的方法。
最简单的方法是为运行的脚本分配快捷方式xdotool click 2
(模拟单击鼠标中键)。尽管此方法有效(并且应与所有或大多数DE和工具包一起使用),但仅当鼠标光标实际上位于文本输入框上方时,它才有效,否则它将失败。
另一个相对简单的方法是通过Gnome Accessibility(如果您的系统上可用)。它还需要一个小键盘。转到Universal Access
>> Pointing & Clicking
并启用Mouse Keys
。确保NumLock
关闭。然后,您可以使用数字键盘键移动光标并单击。要模拟鼠标中键单击,请按(然后释放)*(星号),然后按5(这是一个简短的指南)。此解决方案似乎总是在gtk+
环境中工作。缺点是它需要Gnome Accessibility
一个小键盘。另外,您无法自定义快捷方式。
在gnome-bugzilla上提出了一个有趣的解决方案(错误643391)。(2018年更新:问题现在已移至此处。)它需要修补一些源文件并在中设置配置选项~/.config/gtk-3.0/gtk.css
(或~/.gtkrc-2.0
针对gtk+
2个应用程序)。我没有亲自尝试过,但反馈是肯定的。
理想情况下,您将修补源文件并定义"paste-selection"
信号,然后将Shift+ 绑定Insert到"paste-selection"
而不是"paste-clipboard"
。Andy的代码(附在上面的错误报告中)可以作为操作方法的指南。即使那样,它也只会影响gtk+
应用程序(我不是一个KDE/Qt
家伙,所以我不知道如何更改Qt
应用程序的行为)。
1 :(更不用说IBM的CUA)