RFM (Remote Framebuffer Macro) file format version 1.0

FBS (FrameBuffer Stream) file format version 1.0


Authors:
Tim Waugh <twaugh@redhat.com>
Jens Wagner <jwagner@hexonet.de>


RFM (Remote Framebuffer Macro) file format version 1.0

RFM is a human readable scripting language used to send messages to an RFB Server.

file ::= version password? shared? default-delay? line*
version ::= 'RFM 001.000\n'
password ::= 'password ' string '\n'
string ::= '"' char* '"' | "'" char* "'"
char ::= '\\' | '\"' | '\'' | [^\\\n]
shared ::= 'shared\n'
default-delay ::= 'default ' delay '\n'
delay ::= 'delay ' time
time ::= number 's'
       | number 'ms'
number ::= [0-9]+
line ::= command ' ' comment? '\n'
       | comment? '\n'
command ::= key delay?
          | press delay?
          | type delay?
          | pointer delay?
          | button delay?
          | cut
key ::= 'key ' keysym ' up'
      | 'key ' keysym ' down'
keysym ::= keysymname | '0x' [0-9a-fA-F]{2} | '0x' [0-9a-fA-F]{4}
keysymname ::= [A-Za-z0-9_]+
press ::= 'press ' keysym
type ::= 'type ' string
pointer ::= 'pointer ' delta ' ' delta
          | 'pointer ' number ' ' number
delta ::= '+' number
        | '-' number
button ::= 'button ' number ' up'
         | 'button ' number ' down'
click ::= 'click ' number
cut ::= 'cut\n' base64-data
comment ::= ' '* '#' [^\n]*

The <password> block may contain a password string that the client could use to authenticate.
If <shared> is used, the client will initiate a shared session.
<default-delay> is the amount of time to wait after a command line has been executed.
The <delay> command which follows some commands overwrites the default value.
The <key> command is used to set the state of a key (up or down).
The <press> command is an abbreviation for key down followed by key up.
The <type> command executes a press command for each character contained in the string.
The <pointer> command is used to set the position of the mouse.
The <button> command is used to set the state of a mouse button.
The <click> command is an abbreviation for button down followed by button up.
<base64-data> is any number of lines in base64 [RFC2045] format, terminated by '\n' or <comment>. It's used to perform a clipboard transfer to the server.



FBS (FrameBuffer Stream) file format version 1.0

FBS is a binary video streaming format used to record and playback RFB sessions.

file ::= version data+
version ::= 'FBS 001.000\n'
data ::= length raw timestamp
length ::= CARD32
raw ::= CARD32+
timestamp ::= CARD32

<CARD32> is a 32 bit datatype for unsigned numbers. Byte order is big endian.
<length> contains the number of bytes in <raw> that are actual data of the stream.
<raw> contains part of the data send from the server to the client, padded to a multiple of 32 bits and following [RFB 3.3] while matching some special preconditions:
- The authentication message send by the server is always 1 (no authentication needed).
- All framebuffer updates use the pixel format given in the server init message.
- All encodings defined in [RFB 3.3] are supported.
<timestamp> is the time in milliseconds since the first data block, the timestamp of the first data block is always 0, the last timestamp gives hint how long it does take to play the file.


[RFB 3.3] Tristan Richardson, Kenneth R. Wood: The RFB Protocol, Version 3.3, January 1998
[RFC2045] N. Freed, N. Borenstein: Multipurpose Internet Mail Extensions (MIME) Part One, November 1996


last changed: 2000/06/12