linux - 是由 xlib 实现的剪贴板还是由单独的应用程序实现

标签 linux clipboard x11 xlib icccm

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/

相关文章:

linux - execl找不到命令怎么办?

c# - Gtk# 剪贴板复制/剪切/粘贴文件

java - 选择并复制虚拟 SWT 表中的所有项目

java.lang.InternalError : Can't connect to X11 window server for JVisualVM profiling session 错误

c++ - XTestFakeButtonEvent 和 XSendEvent 之间的区别

rust - 如何使用 glutin 进行窗口覆盖重定向?

c++ - 因为一行不相关的代码,速度差别这么大

linux - 我想在 Bash 脚本中使用 sed 删除日志文件中 'var' 变量中包含的字符串模式

linux - 从具有一些隐藏目录的目录创建 iso

javascript - 我怎样才能让这段代码在 IE 中运行?