剪贴板如何工作?

剪贴板如何工作?

从深层次上讲,如何将内容复制到剪贴板?是否有文件存储我复制的文本或图像?

我发现剪贴板的内存位置这个问题从未得到解答。我还发现了很多关于 xclip 的引用。我目前没有安装 xclip,但我的剪贴板工作正常——例如,我可以从 Firefox 复制某些内容并将其粘贴到终端中,没有任何问题。所以,显然一定有事情发生在与 xclip 不同的层面上。那是什么?它是如何工作的?

答案1

X 处理剪贴板,您可以在此处阅读相关内容。 https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt

X11 剪贴板(称为选择)在 ICCCM 中定义。 https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html

引用上面的链接。

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

基本的

次要

剪贴板

这些选择都存储在内存中,不会写入磁盘。

值得一读的是X 选择、剪切缓冲区和 Kill Ringhttps://www.jwz.org/doc/x-cut-and-paste.html

另一篇值得一读的是编写跨平台剪贴板库 https://jtanx.github.io/2016/08/19/a-cross-platform-clipboard-library/

如果您对如何在语法上与 X11 选择进行交互感兴趣,那么一定要查看 GitHub 上的 xclip 源代码。https://github.com/astrand/xclip

相关内容