主要选择和剪贴板缓冲区有什么区别?

r00*_*004 40 x11 clipboard

我正在Linux中的 Webkit 浏览器领域进行调整,我经常遇到术语“主要选择”和“剪贴板选择或缓冲区”。

  • 我想了解它们是什么以及它们有什么区别?
  • 拖放粘贴适用于何处?
  • 什么是工作xclip在这个问题到底是什么?

Run*_*ium 42

它们是Selection AtomsX Atoms 的一部分

客户间通信协定手册的X状态:

可以有任意数量的选择,每个都由一个原子命名。然而,为了符合客户端间的约定,客户端只需要处理这三个选择:

  • 基本的
  • 中学
  • 剪贴板

简而言之:

  • PRIMARY selection 通常由例如终端在选择文本并通过按鼠标中键粘贴它时使用。正如所选文本在主剪贴板中一样,没有发生任何明确的复制操作。快速复制是它的一个好名字。(不限于终端仿真器,但作为示例。)
  • CLIPBOARD主要与MS Windows 风格的剪贴板操作结合使用。选择+复制。数据驻留在缓冲区中

在这里阅读更多。

早在 2008 年,WebKit添加了对 PRIMARY 的支持。

xclip,这是一个用于 X 选择(剪贴板)的命令行界面(工具),传统上将数据添加到主剪贴板。可选地,可以通过-clipboard给定参数的选项选择使用哪一个。


更正:拖放位于Xdnd规范上还有一个 Wikipedia 条目。它使用XdndSelection并且不应干扰 PRIMARY。

该协议至少由 Qt 和 GTK 实现。

  • 中学呢? (19认同)
  • @emisilva:那是次要的(双关缩进)。不。(不幸的是)很少使用。如果您想了解更多超出答案的链接,也许可以快速深入了解 [Charles Lindsey](https://en.wikipedia.org/wiki/Charles_H._Lindsey) 争取 [次要选择](http:/ /www.cs.man.ac.uk/~chl/secondary-selection.html) 是你喜欢的 :) 你也可以用 [Emacs](https://www.gnu.org/savannah-checkouts/gnu) 进行测试/emacs/manual/html_node/emacs/Secondary-Selection.html) – 但你的 WindowManager 可能会把事情搞砸...... (12认同)

n00*_*00b 5

FWIW,在 Debian (Kali) 上,以下是不同的选择如何对应于各种“粘贴选项”:

echo primary | xclip -sel p
echo secondary | xclip -sel s
echo clipboard | xclip -sel c

# Ctrl + Shift + v: clipboard
# Middle click: primary
# Paste selection: (Shift + Insert): primary

# with the -o option, xclip outputs the specified "selection"
# to stdout:

xclip -o -sel p
# stdout output: "primary"

xclip -o -sel s
# stdout output: "secondary"

xclip -o -sel c
# stdout output: "clipboard"
Run Code Online (Sandbox Code Playgroud)

就我而言,我在 VMWare 虚拟机中执行此操作。主机操作系统使用/查看/接收的选择是主要的。

如果您不想使用多个选择,则可以使用 xclip 别名来同时使用主要选择和剪贴板选择,如下所示:

剪辑

  • 为什么你使用屏幕截图来获取代码? (4认同)