linux剪贴板复制文件原理,linux剪贴板原理 您所在的位置:网站首页 linux剪切板日志 linux剪贴板复制文件原理,linux剪贴板原理

linux剪贴板复制文件原理,linux剪贴板原理

2024-04-07 11:04| 来源: 网络整理| 查看: 265

在 X window system中,窗体之间传输数据,使用的是“selection”,也就是常说的“剪贴板”

X window system中支持任意的selection.

其中,最重要的是PRIMARY selection,然后是CLIPBOARD selection,还有已经废弃的CUT_BUFFER(0~7)。

而 X Window 把这种叫做“选择”(selection),有支持两种方式:一种是主(Primary)选择,一种是剪贴板(Clipboard)选择。其实还有一个副(Secondary)选择,但已经过时不用。和 Windows 不同的是,没有一个全局的缓冲区来保存拷贝的信息。其工作方式是这样的:当一个程序中选择了一些东西,它就说“我现在是当前选择的所有者”,这时在另外一个程序中要进行粘贴的话,就向当前选择的所有者发请求,请求获取数据。然后所有者就给请求者发送数据。其中的过程可以认为是进程间通讯。   先说剪贴板选择,其用于菜单的拷贝、粘贴、剪切选项,看上去跟 Windows 的拷贝粘贴方式是一模一样的,只是选择了以后,点击了拷贝(或者快捷键也可以),这时候要声明所有权,然后在内部保存一份需要拷贝的东西。当别的程序粘贴的时候,把保存的东西发送过去。   主选择略微有点不同,当你选择任何东西的时候(鼠标或者键盘),当前程序就声明所有权(不需要明确进行拷贝),并保存一份。当别的程序用鼠标中键(或者左右同时双击来模拟)进行粘贴的时候,把数据发送过去。   所以总结一下,X 内部的实现方式,对于一个程序:   使用鼠标或者键盘选择一段文本:声明主选择(Primary)所有权(可能内部也要保存一份)   拷贝(菜单或者快捷键):内部保存一份,声明剪贴板(Clipboard)所有权   粘贴(菜单或者快捷键):获取剪贴板中的数据,并插入到适当的位置   鼠标中键(或者双键模拟):获取主选择的数据,并插入到适当的位置   另一个程序请求主选择数据:把内部保存的主选择发送出去   另一个程序请求剪贴板数据:把保存的剪贴板数据发送出去   另一个程序声明主选择所有权:丢弃保存的主选择数据   另一个程序声明剪贴板所有权:丢弃保存的剪贴板数据   这只是一个比较简单的描述,实际上的实现要更复杂一些,具体请参考 [ICCCM] 的文档。   X 上绝大部分程序都是支持主选择的,也可以认为缺省就是支持的。有一些对剪贴板的支持不够明显,没有菜单或者快捷键之类的,只能用鼠标进行选择,比如多数的 Terminal Emulator,但提供了快捷键。xterm/rxvt/urxvt/mrxvt 等可以使用“Shift + 鼠标中键”从剪贴板拷贝。Emacs 使用主选择。更多的程序用的是剪贴板。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有