版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

  1. XSetSelectionOwner

    till OnSelectionClear

  2. XConvertSelection

    while SelectionNotify

    XChangeProperty target/anyproperty

  3. XSetSelectionOwner

    while OnSelectionRequest target

  4. XSendEvent target

    while OnSelectionRequest anyproperty

  5. XSendEvent anyproperty

    最终window XGetWindowProperty from ClipBoardManager

在收到SelectionClear事件时,将所以复制的内容都XConvertSelection到自己这个窗口上,包括TARGET和所有类型的内容,并且可以取出来想到的类型数据保存,再通过XSetSelectionOwner将当前窗口重新设置为owner。在收到SelectionRequest事件时,按需要返回TARGET类型和对应类型的内容。在收到SelectionClear事件时,将所以复制的内容都XConvertSelection到自己这个窗口上,包括TARGETS 和所有类型的内容,并且可以取出来想到的类型数据保存,再通过XSetSelectionOwner将当前窗口重新设置为owner。在收到SelectionRequest事件时,按需要返回TARGET类型和对应类型的内容。

即可以实现,实时获取剪贴板数据和更新自定义数据到剪贴板,具体在我们的实现中就是将复制的内容传给Android,并且在Android复制后,将内容写进UTF8_STRING属性,清除其他属性,实现Android和Linux的剪贴板同步。

现在还只实现了在Xserver内的所有类型复制,Xserver和Android的剪贴板只实现了文本同步,实际上文件复制同步只是对不同类型的复制内容的处理实现罢了。