+.B \fImajor mode options\fP:
+.TP 5
+.B \-t
+act as terminal emulator only:
+.I sympathy
+opens the terminal device and outputs into the outer terminal emulator. When sympathy exits the
+device is closed and no process remains. In this mode sympathy behaves like a traditional
+terminal emulator such as cu(1) or minicom(1).
+.TP 5
+.B \-s
+act as server only:
+.I sympathy
+opens the terminal device and renders into an internal frame buffer, listens for clients
+on the socket and logs activity. By default the server will fork into a daemon process
+but can be forced to remain in the foreground with the \-\fBF\fP option.
+.TP 5
+.B \-c\fP or \fB\-r\fP \fIid\fP
+act as client only:
+.I sympathy
+connects to a sympathy server process and injects the history into the outer terminal
+emulator,
+and connects the user with the terminal device. One server process can support multiple
+client processes. This mode can also be used to obtain a dump of the current screen
+in HTML format (see the \-\fBH\fP option). The \-\fPr\fP option connects to a server
+on the socket ~/.sympathy/\fIid\fP or if \fIid\fP is an integer
+~/.sympathy/\fIhost-name\fP.\fIid\fP mimicking the behaviour of screen(1). With the
+\-\fBc\fP option the socket must be specified with the \-\fBk\fP option.
+.TP 5
+.B \fP[\fB \-c \-s \fP]
+act as both client and server:
+.I sympathy
+forks. The child process becomes a server, and the original process becomes a client
+which then connects to the server. This is the default major mode if no other is specified.
+Since the default terminal device is a pseudo-tty, running
+.I sympathy
+with no arguments will start a new shell in a daemonised process and connect to it
+as a client from the original process, mimicking the behaviour of screen(1)
+.TP 5
+.B \-l\fP or \fB\-ls
+show active sockets:
+.I sympathy
+will show active sockets, ones to which a call to connect(2) succeeds,
+in ~/.sympathy. If the socket name begins with the host-name of the machine, and
+the call to connect(2) fails, then socket will be unlinked.
+.TP 5
+.B \-v
+show current version:
+.I sympathy
+will print the the version number of the code it was compiled from.
+.TP 5
+.B \-h
+show help:
+.I sympathy
+will show brief usage instructions
+.PP
+.B \fIterminal_options\fP:
+.TP 5
+.B \-d \fIserialdev\fP
+connect to terminal device \fIserialdev\fP, eg /dev/ttyS0.
+By default
+.I sympathy
+doesn't
+lock the terminal device, but checks periodically for lock files of other processes. If
+sympathy detects another lock file it displays \fBLocked\fP in the status line
+and refuses I/O on the device until the lock file is removed or becomes invalid.
+To lock the device use the \-\fBK\fP option.
+.I Sympathy
+will in addition check that the name of the device does not occur in /proc/cmdline
+as an argument to the \fIconsole\fP kernel parameter.
+The \-\fBd\fP option is incompatible with the \-\fBp\fP option.
+.TP 5
+.B \-p
+connect to a pseudo-tty instead of a terminal device, and fork a login shell in
+it. The \-\fBp\fP option is incompatible with the \-\fBd\fP option. This is the default
+terminal device if none is specified.
+.TP 5
+.B \-K
+lock the terminal device specified in the \-\fBd\fP option.
+.I Sympathy
+generates lock files in a staggering variety of formats and places. For locks
+based on the name of the device sympathy generates lock files for all devices
+with the same major and minor in /dev, /dev/usb and /dev/tts, it uses both normal
+and lower case and replaces occurrences of `/' in the device name with both `.' and `_'.
+.I Sympathy
+also generates locks based on the device major and minor numbers, and for all lock file
+names generates them in any of the following directories that are writable:
+/var/lock/uucp, /var/spool/lock, /var/spool/uucp, /etc/locks, /usr/spool/uucp,
+/var/spool/locks, /usr/spool/lock, /usr/spool/locks, /usr/spool/uucp/LCK, /var/lock.
+Lock files are assumed to be in HDB format.
+.TP 5
+.B \-b \fIbaud-rate\fP
+set the baud\-rate of the terminal device specified in the \-\fBd\fP to
+\fIbaud-rate\fP, if omitted the current baud-rate of the serial port will be
+used.
+.TP 5
+.B \-f
+turn on flow control on the terminal device. This option adds \fICRTSCTS\fP to sympathy's default
+\fIc_cflag\fPs of \fICS8|CREAD|CLOCAL\fP.
+.TP 5
+.B \-L \fIlogfile\fP
+log activity to the file \fIlogfile\fP. If \fIlogfile\fP is `-' then log to \fIstdout\fP. Note
+that logging to \fIstdout\fP only makes sense with the \-\fBF\fP \fIserver_option\fP.
+.TP 5
+.B \-w \fIwidth\fP[x\fIheight\fP]
+set the initialise size of the terminal emulator's frame buffer to be \fIwidth\fP columns
+by \fIheight\fP rows. If \fIheight\fP is omitted it defaults to 24, the default width
+is 80. These values may
+be overridden later by terminal escape sequences. If \-\fBp\fP is also specified
+the pseudo-tty will have its window size set to match.
+.PP
+.B \fIdisplay_options\fP:
+.TP 5
+.B \-u
+attempt to render Unicode characters in the internal frame buffer to the outer terminal
+emulator by using ISO-2202 sequences.
+.I Sympathy
+currently only checks to see if an appropriate character appears in the VT102
+US character set, or in the VT102 `special characters and line drawing' character set.
+If the character appears in neither of these then it will be rendered on the outer
+terminal emulator as a `?'.
+.TP 5
+.B \-H
+render the current state of the internal frame buffer to \fIstdout\fP as HTML, then quit.
+.PP
+.B \fIclient_options\fP:
+.TP 5
+.B \-k \fIsocket\fP
+set the name in the file-system of the socket to which
+.I sympathy
+should connect. This option is \fBmandatory\fP unless the \-\fBs\fP or \-\fBr\fP options
+have also been given. If \-\fBs\fP is given then it will default to the socket which
+the forked server process opens. See the discussion of the \-\fPr\fP option above, for
+information on how
+.I sympathy
+chooses a socket name if \-\fBr\fP is specified.
+.PP
+.B \fIserver_options\fP:
+.TP 5
+.B \-k \fIsocket\fP
+set the name in the file-system of the socket on which
+.I sympathy
+should listen for clients. If this option is omitted
+.I sympathy
+will create a
+socket in ~/.sympathy, creating that directory if necessary, and named
+\fIhost-name\fP.\fIpid\fP where \fIpid\fP is the process id of the
+.I sympathy
+process that created the socket.
+.TP 5
+.B \-F
+tells the
+.I sympathy
+server process not to become a daemon but to remain the the foreground. This option is
+incompatible with the \-\fBc\fP \-\fBs\fP major mode.
+.TP 5
+.B \-n \fInlines\fP
+sets the number of lines of history that the server process stores to \fInlines\fP. When
+a client connects \fInlines\fP of history are injected into the outer terminal emulator
+so that they can be seen when scrolling back. By default the server stores 200 lines of
+history.
+.SH OPERATION
+When
+.I sympathy
+is relaying data to the outer terminal emulator a reverse video status line
+will be visible at the bottom of the screen. The status line shows pertinent
+information. The first item on the line reminds you what the current escape character
+is, the second indicates the terminal device to which
+.I sympathy
+is connected, and the third shows the current baud-rate. Other messages are:
+.TP 5
+.B Flow
+indicates that that RTS/CTS flow control is in operation on the terminal device.
+.TP 5
+.B RTS
+indicates that the terminal device is asserting the RTS line which indicates that
+the local system is ready to accept data from the remote system. If RTS/CTS
+flow control is in operation then the operating system or hardware may
+de-assert RTS even if RTS is shown. See the section on SERIAL PORT THEORY for
+more information.
+.TP 5
+.B CTS
+indicates that the terminal device has detected that the local system's CTS
+line is being asserted, indicating that the remote system is ready to receive
+data from the local system. See the section on SERIAL PORT THEORY for
+more information.
+.TP 5
+.B DTR
+indicates that the terminal device is asserting the DTR line indicating that the local
+system would like the local DCE to establish a connection to the remote
+DCE. See the section on SERIAL PORT THEORY for more information.
+.TP 5
+.B DSR
+indicates that the terminal device has detected that the local system's DSR line is
+being asserted, indicating that the local DCE is ready. See the section on
+SERIAL PORT THEORY for more information.
+.TP 5
+.B CD
+indicates that the terminal device has detected that the local system's CD line is
+being asserted, indicating that the local DCE has a connection to the remote DCE.
+See the section on SERIAL PORT THEORY for more information.
+.TP 5
+.B RI
+indicates that the terminal device has detected that the local system's RI line is
+being asserted, indicating that the DCE has detected a ringing signal or incoming
+connexion.
+.TP 5
+.B n clients
+shows the number of connected client processes. In the \-\fBt\fP major mode, this will
+always be zero.
+.TP 5
+.B Locked
+the terminal device was opened without the \-\fbK\fP flag and another process is
+currently using it. I/O to the device is currently suspended until the process dies
+or removes its lock file.
+.TP 5
+.B n errs
+indicates the number of frames received by the terminal device with errors (indicating
+the wrong parity, baud\-rate or framing). The count resets if no errors are
+detected by the device for 10 seconds.
+.TP 5
+.B try higher
+.I Sympathy
+thinks that you have set the wrong baud\-rate and is unable to determine the correct
+one as the current baud\-rate is lower than the correct baud\-rate. Use the \fBbaud\fP command
+to set a higher baud\-rate (eg 115200) and sympathy will try again.
+.TP 5
+.B try \fIrate\fBb
+.I Sympathy
+thinks that you have set the wrong baud\-rate and thinks that the correct baud\-rate is
+\fIrate\fP. Use the \fBbaud\fP command to change the current baud\-rate.
+.SH COMMANDS
+Commands are entered by sending the escape character, ascii(7) STX, from the outer terminal
+emulator (usually by pressing CTRL\-B), typing the command and pressing return. Whilst the
+command is entered the status line changes to `:' and rudimentary line editing is available.
+Whilst the command is entered the cursor \fBdoes not move\fP but remains where the terminal
+emulator has placed it. Valid commands are:
+.TP 7
+.B ansi
+switch from VT102 behaviour to ANSI behaviour. The most noticeable difference is
+the so called `xn' glitch.
+.TP 7
+.B noansi
+switch from ANSI behaviour to VT102 behaviour.
+.TP 7
+.B baud \fInnnn\fB
+set the current baud\-rate to nnnn
+.TP 7
+.B break
+send the break signal by asserting the TX line for longer than a frame period.
+.TP 7
+.B flow
+enable RTS/CTS flow control
+.TP 7
+.B noflow
+disable RTS/CTS flow control
+.TP 7
+.B hangup
+de-assert DTR for one second.
+.TP 7
+.B quit
+exit this instance of sympathy (disconnect from the server if present)
+.SH CHARACTER ENCODINGS
+For characters between 32 and 126
+.I sympathy
+interprets them as would a VT102 terminal by following the subset of ISO-2202 that
+the VT102 supports. Characters 128 thru 255 are assumed to be in UTF\-8(7), if
+however the UTF\-8 is invalid they will instead be interpreted as characters
+from ISO_8859-1(7). Character 155 (0x9b) when not part of a valid UTF\-8 sequence
+will be interpreted as the one byte CSI character.
+.PP
+For the outer terminal emulator sympathy by default issues the
+ESC % G sequence to select UTF\-8 mode and emits valid UTF-8. If the outer terminal
+does not, however, support UTF\-8 use the \-\fBu\fP switch to force
+.I sympathy
+to use the VT102 subset of ISO-2202.
+.SH LOG FILES
+Log files are made exclusively in the UTF\-8 encoding. Each line in the log file
+starts with the date and time at which the entry was made \- for example:
+.IP
+Feb 27 23:24:42.509440
+.PP
+.I Sympathy
+logs a line to the file whenever the cursor leaves the line. Additionally sympathy
+logs certain other events to the file. When the baud\-rate is changed
+.I sympathy
+writes <baud changed to 19200>. Whenever a modem control line changes state
+.I sympathy
+appends <Modem lines changed: \fI+/-line\fP> to the log. Where \fI+\fP
+indicates that \fIline\fP was asserted and \fI-\fP indicates that it was de-asserted.
+When the terminal device reports receive errors
+.I sympathy
+adds additional information to the log. It reports the character sequence reporting the error
+.IP
+<tty reports error: \\377 \\000 \\000>
+.PP
+the observed frequencies of the different bit periods
+.IP
+<tty_bit_analyse: 0000000001 [0,0,0,0,0,0,110,0,0,80]>
+.PP
+and the conclusions of the baud\-rate guessing algorithm
+.IP
+<tty_analyse: 80 errors, current rate 115200b, suggest 19200b>
+.PP
+Invalid UTF\-8 sequences are also reported
+.IP
+<invalid utf\-8 sequence: \\301>