Authors:
Tim Waugh <twaugh@redhat.com>
Jens Wagner <jwagner@hexonet.de>
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.
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