ICCCM 定义了三种选择 1) 小学 2) 中学 3) 剪贴板。但是在 xlib 中,xatom.h 只定义了 XA_PRIMARY 和 XA_SECONDARY 但剪贴板没有这样的原子。所以我怀疑剪贴板是由 xlib 实现的还是必须由像 primary 和 secondary 这样的单独应用程序实现?
如果它必须由单独的应用程序实现,那么不同的应用程序将如何与剪贴板交互,例如从一个应用程序的窗口复制并粘贴到另一个应用程序的窗口……?不同应用程序如何共享公共(public)缓冲区?有人可以帮助在 linux 中实际实现剪贴板吗?我经历过这个 link .但是我找不到很多关于实现的信息。
最佳答案
bash $ xlsatoms | fgrep CLIPBOARD
231 CLIPBOARD
bash $ fgrep -r XA_CLIPBOARD /usr/include/X11
/usr/include/X11/Xmu/Atoms.h: _XA_CLIPBOARD,
/usr/include/X11/Xmu/Atoms.h:#define XA_CLIPBOARD(d) XmuInternAtom(d, _XA_CLIPBOARD)
所以我们有一个原子,这没问题。您也可以只按名称实习。
CLIPBOARD 选择的实现方式与其他选择完全相同。唯一的区别是声明选择所有权的时刻。对于 PRIMARY,它在用户选择某物时断言;对于 CLIPBOARD,这是用户剪切或复制的时间。
关于linux - 是由 xlib 实现的剪贴板还是由单独的应用程序实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762302/