Possible conversations

Clipboard update

Requestor is sending ClipboardItem to replier.

  1. Request: ClipboardUpdateReady
  2. Reply: ClipboardUpdateConfirm
  3. Request: ClipboardUpdateSend
  4. Reply: Confirm

Serial clipboard

Begin serial mode

  1. Request: SerialModeToggle
  2. Reply: Confirm

End serial mode

  1. Request: SerialModeToggle
  2. Reply: Confirm

Add item to serial batch

  1. Request: SerialModeAppendReady
  2. Reply: ClipboardUpdateConfirm

Next step depends on status from reply:

Move to next item in serial batch

  1. Request: SerialModeInfo
  2. Reply: Confirm

Next step depends on status from reply:

Restart serial batch

  1. Request: SerialModeInfo
  2. Reply: ClipboardUpdateConfirm

Next step depends on status from reply:

Copy serial batch

  1. Request: SerialModeInfo
    For each item command ClipboardUpdateSend
  2. Reply: Confirm

Protocol structure

Message header

Length Type Meaning
4 uint32 magic number, identifies correct data format
4 int32 version
4 int32 conversation
4 int32 message type
8 quint64 message length
- QString password

Message types

ClipboardUpdateReady

Length Type Meaning
4 int32 mode (clipboard, selection, both)

ClipboardUpdateConfirm

Length Type Meaning
4 int32 status (continue/abort)
4 int8 meaning of the list below (Accept or Exclude)
- QStringList list of mime types

ClipboardUpdateSend

Length Type Meaning
4 int32 mode (clipboard, selection, both)
- QStringList formats
- QByteArray * formats.size mime data

Confirm

Length Type Meaning
4 int32 status (ok, abort, not exists, not matches, not understood)

SerialModeToggle

Length Type Meaning
8 int64 serial batch ID

SerialModeAppendReady

Length Type Meaning
8 int64 serial batch ID
4 int32 serial batch item count

SerialModeInfo

Length Type Meaning
8 int64 serial batch ID
4 int32 serial batch item count
4 int32 current index