diff --git a/common/rfb/CSecurityTLS.cxx b/common/rfb/CSecurityTLS.cxx
index a8abeeb..30de37e 100644
--- a/common/rfb/CSecurityTLS.cxx
+++ b/common/rfb/CSecurityTLS.cxx
@@ -63,8 +63,8 @@
 
 using namespace rfb;
 
-StringParameter CSecurityTLS::x509ca("x509ca", "X509 CA certificate", "", ConfViewer);
-StringParameter CSecurityTLS::x509crl("x509crl", "X509 CRL file", "", ConfViewer);
+StringParameter CSecurityTLS::X509CA("X509CA", "X509 CA certificate", "", ConfViewer);
+StringParameter CSecurityTLS::X509CRL("X509CRL", "X509 CRL file", "", ConfViewer);
 
 static LogWriter vlog("TLS");
 static LogWriter vlog_raw("RawTLS");
@@ -94,8 +94,8 @@
 CSecurityTLS::CSecurityTLS(bool _anon) : session(0), anon_cred(0),
 						 anon(_anon), fis(0), fos(0)
 {
-  cafile = x509ca.getData();
-  crlfile = x509crl.getData();
+  cafile = X509CA.getData();
+  crlfile = X509CRL.getData();
 }
 
 void CSecurityTLS::setDefaults()
@@ -115,9 +115,9 @@
   delete [] homeDir;
 
  if (!fileexists(caDefault.buf))
-   x509ca.setDefaultStr(strdup(caDefault.buf));
+   X509CA.setDefaultStr(strdup(caDefault.buf));
  if (!fileexists(crlDefault.buf))
-   x509crl.setDefaultStr(strdup(crlDefault.buf));
+   X509CRL.setDefaultStr(strdup(crlDefault.buf));
 }
 
 void CSecurityTLS::shutdown(bool needbye)
diff --git a/common/rfb/CSecurityTLS.h b/common/rfb/CSecurityTLS.h
index c19307e..f5f10e4 100644
--- a/common/rfb/CSecurityTLS.h
+++ b/common/rfb/CSecurityTLS.h
@@ -50,8 +50,8 @@
       { return anon ? "TLS Encryption without VncAuth" : "X509 Encryption without VncAuth"; }
     static void setDefaults();
 
-    static StringParameter x509ca;
-    static StringParameter x509crl;
+    static StringParameter X509CA;
+    static StringParameter X509CRL;
     static UserMsgBox *msg;
 
   protected:
diff --git a/common/rfb/ConnParams.cxx b/common/rfb/ConnParams.cxx
index cc0a768..615f49a 100644
--- a/common/rfb/ConnParams.cxx
+++ b/common/rfb/ConnParams.cxx
@@ -22,7 +22,6 @@
 #include <rdr/OutStream.h>
 #include <rfb/Exception.h>
 #include <rfb/encodings.h>
-#include <rfb/EncodeManager.h>
 #include <rfb/ConnParams.h>
 #include <rfb/util.h>
 
@@ -37,8 +36,7 @@
     supportsSetDesktopSize(false), supportsFence(false),
     supportsContinuousUpdates(false),
     compressLevel(2), qualityLevel(-1), fineQualityLevel(-1),
-    subsampling(subsampleUndefined), name_(0),
-    preferredEncoding_(encodingRaw), verStrPos(0)
+    subsampling(subsampleUndefined), name_(0), verStrPos(0)
 {
   setName("");
 }
@@ -118,7 +116,6 @@
   qualityLevel = -1;
   fineQualityLevel = -1;
   subsampling = subsampleUndefined;
-  preferredEncoding_ = encodingRaw;
 
   encodings_.clear();
   encodings_.insert(encodingRaw);
@@ -184,9 +181,6 @@
         encodings[i] <= pseudoEncodingFineQualityLevel100)
       fineQualityLevel = encodings[i] - pseudoEncodingFineQualityLevel0;
 
-    if (EncodeManager::supported(encodings[i]))
-      preferredEncoding_ = encodings[i];
-
     if (encodings[i] > 0)
       encodings_.insert(encodings[i]);
   }
diff --git a/common/rfb/ConnParams.h b/common/rfb/ConnParams.h
index 625f265..0b8a89c 100644
--- a/common/rfb/ConnParams.h
+++ b/common/rfb/ConnParams.h
@@ -80,7 +80,6 @@
     const Cursor& cursor() { return cursor_; }
     void setCursor(const Cursor& cursor);
 
-    rdr::S32 preferredEncoding() { return preferredEncoding_; }
     bool supportsEncoding(rdr::S32 encoding);
 
     void setEncodings(int nEncodings, const rdr::S32* encodings);
@@ -108,7 +107,6 @@
     PixelFormat pf_;
     char* name_;
     Cursor cursor_;
-    rdr::S32 preferredEncoding_;
     std::set<rdr::S32> encodings_;
     char verStr[13];
     int verStrPos;
diff --git a/common/rfb/EncodeManager.cxx b/common/rfb/EncodeManager.cxx
index 1bd00c7..ca60da4 100644
--- a/common/rfb/EncodeManager.cxx
+++ b/common/rfb/EncodeManager.cxx
@@ -164,7 +164,7 @@
   indexed = indexedRLE = fullColour = encoderRaw;
 
   // Try to respect the client's wishes
-  preferred = conn->cp.preferredEncoding();
+  preferred = conn->getPreferredEncoding();
   switch (preferred) {
   case encodingRRE:
     // Horrible for anything high frequency and/or lots of colours
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx
index 48acf0a..eeaeafe 100644
--- a/common/rfb/SConnection.cxx
+++ b/common/rfb/SConnection.cxx
@@ -26,6 +26,8 @@
 #include <rfb/SMsgWriter.h>
 #include <rfb/SConnection.h>
 #include <rfb/ServerCore.h>
+#include <rfb/encodings.h>
+#include <rfb/EncodeManager.h>
 
 #include <rfb/LogWriter.h>
 
@@ -47,7 +49,8 @@
   : readyForSetColourMapEntries(false),
     is(0), os(0), reader_(0), writer_(0),
     security(0), ssecurity(0), state_(RFBSTATE_UNINITIALISED),
-    reverseConnection(reverseConnection_)
+    reverseConnection(reverseConnection_),
+    preferredEncoding(encodingRaw)
 {
   defaultMajorVersion = 3;
   defaultMinorVersion = 8;
@@ -264,6 +267,21 @@
   os->flush();
 }
 
+void SConnection::setEncodings(int nEncodings, rdr::S32* encodings)
+{
+  int i;
+
+  preferredEncoding = encodingRaw;
+  for (i = 0;i < nEncodings;i++) {
+    if (EncodeManager::supported(encodings[i])) {
+      preferredEncoding = encodings[i];
+      break;
+    }
+  }
+
+  SMsgHandler::setEncodings(nEncodings, encodings);
+}
+
 void SConnection::versionReceived()
 {
 }
diff --git a/common/rfb/SConnection.h b/common/rfb/SConnection.h
index b6ff7cd..7718f4c 100644
--- a/common/rfb/SConnection.h
+++ b/common/rfb/SConnection.h
@@ -70,6 +70,11 @@
     void approveConnection(bool accept, const char* reason=0);
 
 
+    // Overridden from SMsgHandler
+
+    virtual void setEncodings(int nEncodings, rdr::S32* encodings);
+
+
     // Methods to be overridden in a derived class
 
     // versionReceived() indicates that the version number has just been read
@@ -173,6 +178,8 @@
 
     stateEnum state() { return state_; }
 
+    rdr::S32 getPreferredEncoding() { return preferredEncoding; }
+
   protected:
     void setState(stateEnum s) { state_ = s; }
     void writeFakeColourMap(void);
@@ -194,6 +201,7 @@
     SSecurity* ssecurity;
     stateEnum state_;
     bool reverseConnection;
+    rdr::S32 preferredEncoding;
   };
 }
 #endif
diff --git a/common/rfb/SSecurityTLS.cxx b/common/rfb/SSecurityTLS.cxx
index 7a1a41e..a40ec13 100644
--- a/common/rfb/SSecurityTLS.cxx
+++ b/common/rfb/SSecurityTLS.cxx
@@ -39,10 +39,10 @@
 using namespace rfb;
 
 StringParameter SSecurityTLS::X509_CertFile
-("x509cert", "specifies path to the x509 certificate in PEM format", "", ConfServer);
+("X509Cert", "Path to the X509 certificate in PEM format", "", ConfServer);
 
 StringParameter SSecurityTLS::X509_KeyFile
-("x509key", "specifies path to the key of the x509 certificate in PEM format", "", ConfServer);
+("X509Key", "Path to the key of the X509 certificate in PEM format", "", ConfServer);
 
 static LogWriter vlog("TLS");
 static LogWriter vlog_raw("RawTLS");
diff --git a/common/rfb/SecurityClient.cxx b/common/rfb/SecurityClient.cxx
index 4173c74..fe34712 100644
--- a/common/rfb/SecurityClient.cxx
+++ b/common/rfb/SecurityClient.cxx
@@ -43,7 +43,11 @@
 
 StringParameter SecurityClient::secTypes
 ("SecurityTypes",
- "Specify which security scheme to use (None, VncAuth)",
+ "Specify which security scheme to use (None, VncAuth, Plain"
+#ifdef HAVE_GNUTLS
+ ", TLSNone, TLSVnc, TLSPlain, X509None, X509Vnc, X509Plain"
+#endif
+ ")",
 #ifdef HAVE_GNUTLS
  "X509Plain,TLSPlain,X509Vnc,TLSVnc,X509None,TLSNone,VncAuth,None",
 #else
diff --git a/common/rfb/SecurityServer.cxx b/common/rfb/SecurityServer.cxx
index 76ece77..5bd7b2c 100644
--- a/common/rfb/SecurityServer.cxx
+++ b/common/rfb/SecurityServer.cxx
@@ -37,7 +37,11 @@
 
 StringParameter SecurityServer::secTypes
 ("SecurityTypes",
- "Specify which security scheme to use (None, VncAuth)",
+ "Specify which security scheme to use (None, VncAuth, Plain"
+#ifdef HAVE_GNUTLS
+ ", TLSNone, TLSVnc, TLSPlain, X509None, X509Vnc, X509Plain"
+#endif
+ ")",
 #ifdef HAVE_GNUTLS
  "VncAuth,TLSVnc",
 #else
diff --git a/common/rfb/UnixPasswordValidator.cxx b/common/rfb/UnixPasswordValidator.cxx
index 5a3996d..d096079 100644
--- a/common/rfb/UnixPasswordValidator.cxx
+++ b/common/rfb/UnixPasswordValidator.cxx
@@ -31,8 +31,10 @@
 
 using namespace rfb;
 
-static StringParameter pam_service
-  ("pam_service", "service name for pam password validation", "vnc");
+static StringParameter pamService
+  ("PAMService", "Service name for PAM password validation", "vnc");
+AliasParameter pam_service("pam_service", "Alias for PAMService",
+                           &pamService);
 
 int do_pam_auth(const char *service, const char *username,
 	        const char *password);
@@ -42,7 +44,7 @@
 					     const char *password)
 {
 #ifdef HAVE_PAM
-  CharArray service(strDup(pam_service.getData()));
+  CharArray service(strDup(pamService.getData()));
   return do_pam_auth(service.buf, username, password);
 #else
   throw AuthFailureException("PAM not supported");
diff --git a/doc/TODO b/doc/TODO
deleted file mode 100644
index 2069e69..0000000
--- a/doc/TODO
+++ /dev/null
@@ -1,31 +0,0 @@
-
-* When running the UNIX vncviewer on a host with a different byte
-  order than the Xserver, the colors are incorrect. This happens when
-  using color depth 24 ("cutZeros"). Basically, the problem is that 
-  the RGB24_TO_PIXEL32 macro is wrong; we need to swap endianess
-  in this situation. There seems to be something wrong with the local
-  cursor handling as well. 
-
-* Change version strings. 
-
-* Tight encoding support
-
-* Update vncviewer.man: many parameters are currently not documented. 
-
-* When manually changing color level and running against an old server
-  (Xvnc from TightVNC 1.2.9, for example), the user should perhaps be
-  warned that vncviewer might crash. 
-
-* Document the Tight protocol extensions in a text file. 
-
-* All other features from the TightVNC 1.3 series: Filetransfer etc
-
-* Consider adding the toolbar from http://lars.werner.no/vnc/. 
-
-* Implement support for rfbEncodingXCursor. When this is finished, it
-  should be safe to allow dynamic pixel format changes again, as long
-  as we only orders new pixel formats after recieving a framebuffer
-  update with real pixel data. 
-
-* The vncviewer password dialog should probably display the server
-  name in the password dialog windows title. Wish from Gaetano Giunta. 
diff --git a/doc/dev/make_release b/doc/dev/make_release
deleted file mode 100644
index 13956f8..0000000
--- a/doc/dev/make_release
+++ /dev/null
@@ -1,8 +0,0 @@
-Quick overview of steps to make a release.
-
-1. tag the release
-2. go to the correct tags/<tag> directory and run `svn export . tigervnc-<version>`
-3. pack the exported source as ".tar.gz" archive
-4. upload the tarball and binaries built from it to Sourceforge
-5. fill the release_announcement template
-6. send announcement to tigervnc-announce
diff --git a/doc/dev/release_announcement b/doc/dev/release_announcement
deleted file mode 100644
index e867f4e..0000000
--- a/doc/dev/release_announcement
+++ /dev/null
@@ -1,25 +0,0 @@
-TigerVNC <version> is now available.
-
-TigerVNC <version> is the <*1> of TigerVNC <branch>.
-
-Highlights of TigerVNC <version>:
-- this version is better
-- this version is really better
-
-Changes since <previous version>:
-[Bugfix] Bug is now fixed.
-[Enhancement] Enhancement has been added.
-[Documentation] Yes, we really updated documentation.
-
-TigerVNC <version> binaries and source can be downloaded from
-	<link>
-
-Please report bugs to https://sourceforge.net/tracker/?group_id=254363&atid=1126848.
-
----
-TigerVNC team, http://www.tigervnc.com
-
-
-
-*1 - first/second alpha/beta release; first/second release candidate; stable release
-
diff --git a/doc/dev/version_numbers b/doc/dev/version_numbers
deleted file mode 100644
index 543aba0..0000000
--- a/doc/dev/version_numbers
+++ /dev/null
@@ -1,6 +0,0 @@
-Files written below contain release numbers which should be changed during
-release process.
-
-CMakeLists.txt
-java/CMakeLists.txt
-unix/xserver/hw/vnc/xvnc.cc
diff --git a/doc/ft-protocol-problems.txt b/doc/ft-protocol-problems.txt
deleted file mode 100644
index b0198fb..0000000
--- a/doc/ft-protocol-problems.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Peter Rosin <peda@lysator.liu.se>
-To: vnc-tight-list@lists.sourceforge.net
-Date: Thu, 25 Sep 2008 10:21:07 +0200
-Message-ID: <48DB49F3.6030609@lysator.liu.se>
-Subject: Problems with timestamps in file transfers.
-
-Hi list!
-
-I'm writing some VNC client software that supports the the file
-transfer extensions described in the rfbtight.tex document in
-the svn repo. However, when I communicate with a TightVNC server
-version 1.3.9 (WinVNC.exe) I get strange data for the modification
-times of the files.
-
-Specifically, in the FileListData message, I have understood
-that directories are encoded as <size ~0, mod-time 0>. For
-regular files I get the expected size, but the mod-time is
-always 0xffffffe7 (-25) which seem totally bogus.
-
-The next problem is more disturbing since you will get interop
-problems if you fix it. In the last FileDownloadData message
-(the one with raw-length = compressed-length = 0), the mod-time
-is transmitted in little-endian byte order (at least my TightVNC
-server does so). Since it's more problems fixing this than
-documenting it, I think this endianness issue should be recorded
-in the rfbtight.tex file.
-
-(However, when you use FileUploadData you should transmit
-  the mod-time in the expected big-endian network byte order.)
-
-Cheers,
-Peter
-
-==================================================================
-
diff --git a/doc/keyboard-test.txt b/doc/keyboard-test.txt
new file mode 100644
index 0000000..2d2b2b6
--- /dev/null
+++ b/doc/keyboard-test.txt
@@ -0,0 +1,107 @@
+Test protocol for keyboard handling
+===================================
+
+Platform specific tests/issues are marked with [].
+
+Client
+------
+
+- Normal symbols:
+
+  - ASCII characters
+  - Latin 1 character
+  - Unicode BMP characters
+  - Unicode non-BMP characters
+
+- Dead keys:
+
+  - Grave
+  - Acute
+  - Circumflex
+  - Tilde
+  - Macron
+  - Breve
+  - Dot above
+  - Diaeresis
+  - Ring above
+  - Double acute
+  - Caron
+  - Cedilla
+  - Ogonek
+  - Ypogegrammeni
+  - Katakana voiced mark
+  - Katakana semi-voiced mark
+  - Dialytika tonos
+  - FIXME: Many more that we currently probably don't support
+
+  - No composition on client
+
+- Modifiers:
+
+  - CapsLock, NumLock (sent but ignored by server)
+  - Shift, Ctrl
+  - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win)
+  - Left/right identification (FIXME: broken for Shift on Win)
+  - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac]
+  - Meta and Hyper sends Super [X11]
+
+  - CapsLock, Shift and AltGr affect symbol lookup
+  - NumLock affects symbol lookup [Win, X11]
+  - Ctrl does not affect symbol lookup
+  - Shift inverts NumLock behaviour [X11]
+  - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
+  - CtrlL+AltR fake release [Win]
+  - Ctrl+Alt+any (note behaviour above though)
+  - Ctrl+AltGr+any (FIXME: broken on Win)
+  - "Shift press, A press, Shift release, A release" should not send "a release"
+
+- Numpad:
+
+  - Numpad specific symbols are sent
+  - Affected by NumLock
+  - Decimal key should send Decimal for layouts with . as a symbol, and
+    Separator for layouts with , as a symbol
+
+- Multimedia keys:
+
+  - Back, Forward, Refresh, Stop
+  - HomePage, Search, Favourites
+  - Mail, Calculator
+  - Volume up, down, mute
+  - Media next, previous, stop, play
+  - Sleep
+  - FIXME: probably more keys exist
+
+- Non-character keys:
+
+  - F1-F24
+  - Tab, Space, Backspace, Return
+  - LeftTab sends Tab
+  - Esc, PrntScrn, ScrollLock, Pause
+  - Insert, Delete, Home, End, PageUp, PageDown
+  - Arrow keys
+  - Menu
+
+- French layout (AZERTY and inverted shift behaviour for many keys)
+
+- Key repeat should not send repeated release events
+
+- Keys are released on loss of focus
+
+- Local layout changes are respected
+
+- Local input methods are disabled/enabled with focus
+
+- System keys should be grabbed in full screen
+
+  The exact keys depends on the system and configuration, but it
+  is usually variants of these:
+
+  - Alt+Tab
+  - Super (and Super+other)
+  - Multimedia keys
+  - Ctrl+Alt+Delete
+  - Ctrl+Esc
+  - F8-F12
+
+- Virtual keyboard (as much of the above as is possible)
diff --git a/doc/realvnc-internals.txt b/doc/realvnc-internals.txt
deleted file mode 100644
index 16975ac..0000000
--- a/doc/realvnc-internals.txt
+++ /dev/null
@@ -1,389 +0,0 @@
-
-The RealVNC code base is mostly undocumented. Rather than adding
-comments to the actual source files, documentation is keept in
-separate files in this directory. This is done because we want to make
-as few changes to the RealVNC sources as possible.
-
-
-
-Files
-=====
-(t) means only in TigerVNC. 
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-Xregion/Xregion.h
-Xregion/region.h
-jpeg/jchuff.h			B(t)			B(t)
-jpeg/jconfig.h			B(t)			B(t)
-jpeg/jdct.h			B(t)			B(t)
-jpeg/jdhuff.h			B(t)			B(t)
-jpeg/jerror.h			B(t)			B(t)
-jpeg/jinclude.h			B(t)			B(t)
-jpeg/jmemsys.h			B(t)			B(t)
-jpeg/jmorecfg.h			B(t)			B(t)
-jpeg/jpegint.h			B(t)			B(t)
-jpeg/jpeglib.h			B(t)			B(t)
-jpeg/jversion.h			B(t)			B(t)
-logmessages/messages.h
-network/Socket.h
-network/TcpSocket.cxx
-network/TcpSocket.h
-network/msvcwarning.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-rdr/Exception.cxx
-rdr/Exception.h
-rdr/FdInStream.cxx
-rdr/FdInStream.h
-rdr/FdOutStream.cxx
-rdr/FdOutStream.h
-rdr/FixedMemOutStream.h
-rdr/HexInStream.cxx
-rdr/HexInStream.h
-rdr/HexOutStream.cxx
-rdr/HexOutStream.h
-rdr/InStream.cxx
-rdr/InStream.h
-rdr/MemInStream.h
-rdr/MemOutStream.h
-rdr/NullOutStream.cxx
-rdr/NullOutStream.h
-rdr/OutStream.h
-rdr/RandomStream.cxx
-rdr/RandomStream.h
-rdr/SubstitutingInStream.h
-rdr/ZlibInStream.cxx
-rdr/ZlibInStream.h
-rdr/ZlibOutStream.cxx
-rdr/ZlibOutStream.h
-rdr/msvcwarning.h
-rdr/types.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-rfb/win32/Threading_win32.cxx
-rfb/win32/Threading_win32.h
-rfb/win32/msvcwarning.h
-rfb/win32/util_win32.h
-rfb/Blacklist.cxx
-rfb/Blacklist.h
-rfb/CConnection.cxx
-rfb/CConnection.h
-rfb/CMsgHandler.cxx
-rfb/CMsgHandler.h
-rfb/CMsgReader.h
-rfb/CMsgReaderV3.cxx
-rfb/CMsgReaderV3.h
-rfb/CMsgWriter.cxx
-rfb/CMsgWriter.h
-rfb/CMsgWriterV3.cxx
-rfb/CMsgWriterV3.h
-rfb/CSecurity.h
-rfb/CSecurityNone.h
-rfb/CSecurityVncAuth.cxx
-rfb/CSecurityVncAuth.h
-rfb/ColourCube.h
-rfb/ColourMap.h
-rfb/ComparingUpdateTracker.cxx
-rfb/ComparingUpdateTracker.h
-rfb/Configuration.cxx
-rfb/Configuration.h
-rfb/ConnParams.cxx		B			B
-rfb/ConnParams.h		B			B
-rfb/Cursor.cxx
-rfb/Cursor.h
-rfb/Decoder.cxx
-rfb/Decoder.h
-rfb/Encoder.cxx
-rfb/Encoder.h
-rfb/Exception.h
-rfb/HTTPServer.cxx
-rfb/HTTPServer.h
-rfb/HextileDecoder.cxx
-rfb/HextileDecoder.h
-rfb/HextileEncoder.cxx
-rfb/HextileEncoder.h
-rfb/Hostname.h
-rfb/ImageGetter.h
-rfb/LogWriter.cxx
-rfb/LogWriter.h
-rfb/Logger.cxx
-rfb/Logger.h
-rfb/Logger_file.cxx
-rfb/Logger_file.h
-rfb/Logger_stdio.cxx
-rfb/Logger_stdio.h
-rfb/Pixel.h
-rfb/PixelBuffer.cxx
-rfb/PixelBuffer.h
-rfb/PixelFormat.cxx
-rfb/PixelFormat.h
-rfb/RREDecoder.cxx
-rfb/RREDecoder.h
-rfb/RREEncoder.cxx
-rfb/RREEncoder.h
-rfb/RawDecoder.cxx
-rfb/RawDecoder.h
-rfb/RawEncoder.cxx
-rfb/RawEncoder.h
-rfb/Rect.h
-rfb/Region.cxx
-rfb/Region.h
-rfb/SConnection.cxx
-rfb/SConnection.h
-rfb/SDesktop.h
-rfb/SMsgHandler.cxx
-rfb/SMsgHandler.h
-rfb/SMsgReader.cxx
-rfb/SMsgReader.h
-rfb/SMsgReaderV3.cxx
-rfb/SMsgReaderV3.h
-rfb/SMsgWriter.cxx
-rfb/SMsgWriter.h
-rfb/SMsgWriterV3.h
-rfb/SSecurity.h
-rfb/SSecurityFactoryStandard.cxx
-rfb/SSecurityFactoryStandard.h
-rfb/SSecurityNone.h
-rfb/SSecurityVncAuth.cxx
-rfb/SSecurityVncAuth.h
-rfb/ServerCore.cxx
-rfb/ServerCore.h
-rfb/Threading.h
-rfb/TransImageGetter.cxx
-rfb/TransImageGetter.h
-rfb/TrueColourMap.h
-rfb/UpdateTracker.cxx
-rfb/UpdateTracker.h
-rfb/UserPasswdGetter.h
-rfb/VNCSConnectionST.cxx
-rfb/VNCSConnectionST.h
-rfb/VNCServer.h
-rfb/VNCServerST.cxx
-rfb/VNCServerST.h
-rfb/ZRLEDecoder.cxx
-rfb/ZRLEDecoder.h
-rfb/ZRLEEncoder.cxx
-rfb/ZRLEEncoder.h
-rfb/d3des.h
-rfb/encodings.cxx
-rfb/encodings.h
-rfb/hextileConstants.h
-rfb/hextileDecode.h
-rfb/hextileEncode.h
-rfb/keysymdef.h
-rfb/msgTypes.h
-rfb/msvcwarning.h
-rfb/rreDecode.h
-rfb/rreEncode.h
-rfb/SMsgWriterV3.cxx
-rfb/transInitTempl.h
-rfb/transTempl.h
-rfb/util.cxx
-rfb/util.h
-rfb/vncAuth.cxx
-rfb/vncAuth.h
-rfb/zrleDecode.h
-rfb/zrleEncode.h
-rfb/secTypes.cxx
-rfb/CMsgReader.cxx
-rfb/TightDecoder.cxx
-rfb/tightDecode.h
-rfb/TightDecoder.h
-rfb/secTypes.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-rfb_win32/AboutDialog.cxx
-rfb_win32/AboutDialog.h
-rfb_win32/CKeyboard.cxx
-rfb_win32/CKeyboard.h
-rfb_win32/CPointer.cxx
-rfb_win32/CPointer.h
-rfb_win32/CleanDesktop.cxx
-rfb_win32/CleanDesktop.h
-rfb_win32/Clipboard.cxx
-rfb_win32/Clipboard.h
-rfb_win32/CurrentUser.cxx
-rfb_win32/CurrentUser.h
-rfb_win32/DIBSectionBuffer.cxx
-rfb_win32/DIBSectionBuffer.h
-rfb_win32/DeviceFrameBuffer.cxx
-rfb_win32/DeviceFrameBuffer.h
-rfb_win32/Dialog.cxx
-rfb_win32/Dialog.h
-rfb_win32/IntervalTimer.h
-rfb_win32/LaunchProcess.cxx
-rfb_win32/LaunchProcess.h
-rfb_win32/MsgWindow.cxx
-rfb_win32/MsgWindow.h
-rfb_win32/OSVersion.cxx
-rfb_win32/OSVersion.h
-rfb_win32/RegConfig.cxx
-rfb_win32/RegConfig.h
-rfb_win32/Registry.cxx
-rfb_win32/Registry.h
-rfb_win32/SDisplay.cxx
-rfb_win32/SDisplay.h
-rfb_win32/SInput.cxx
-rfb_win32/SInput.h
-rfb_win32/Security.h
-rfb_win32/Service.cxx
-rfb_win32/Service.h
-rfb_win32/SocketManager.cxx
-rfb_win32/SocketManager.h
-rfb_win32/TCharArray.cxx
-rfb_win32/TCharArray.h
-rfb_win32/TrayIcon.h
-rfb_win32/WMCursor.cxx
-rfb_win32/WMCursor.h
-rfb_win32/WMHooks.cxx
-rfb_win32/WMHooks.h
-rfb_win32/WMNotifier.cxx
-rfb_win32/WMNotifier.h
-rfb_win32/WMPoller.cxx
-rfb_win32/WMPoller.h
-rfb_win32/WMShatter.cxx
-rfb_win32/WMShatter.h
-rfb_win32/WMWindowCopyRect.cxx
-rfb_win32/WMWindowCopyRect.h
-rfb_win32/Win32Util.cxx
-rfb_win32/Win32Util.h
-rfb_win32/keymap.h
-rfb_win32/msvcwarning.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-tx/TXButton.h
-tx/TXCheckbox.h
-tx/TXDialog.h
-tx/TXEntry.h
-tx/TXImage.cxx
-tx/TXImage.h
-tx/TXLabel.h
-tx/TXMenu.cxx
-tx/TXMenu.h
-tx/TXMsgBox.h
-tx/TXScrollbar.cxx
-tx/TXScrollbar.h
-tx/TXViewport.cxx
-tx/TXViewport.h
-tx/TXWindow.cxx
-tx/TXWindow.h
-tx/Timer.cxx
-tx/Timer.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-vncconfig/Authentication.h
-vncconfig/Connections.h
-vncconfig/Desktop.h
-vncconfig/Hooking.h
-vncconfig/Inputs.h
-vncconfig/Legacy.cxx
-vncconfig/Legacy.h
-vncconfig/Sharing.h
-vncconfig/resource.h
-vncconfig/vncconfig.cxx
-vncconfig_unix/vncExt.h
-vncconfig_unix/vncconfig.cxx
-vncmkdepend/def.h
-vncmkdepend/ifparser.h
-vncpasswd/vncpasswd.cxx
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-vncviewer/CViewManager.cxx
-vncviewer/CViewManager.h
-vncviewer/CViewOptions.cxx		C		W
-vncviewer/CViewOptions.h		C		W
-vncviewer/ConnectingDialog.h
-vncviewer/ConnectionDialog.cxx
-vncviewer/ConnectionDialog.h
-vncviewer/InfoDialog.cxx
-vncviewer/InfoDialog.h
-vncviewer/MRU.h
-vncviewer/OptionsDialog.cxx
-vncviewer/OptionsDialog.h
-vncviewer/UserPasswdDialog.cxx
-vncviewer/UserPasswdDialog.h
-vncviewer/buildTime.cxx
-vncviewer/cview.cxx			C		W
-vncviewer/cview.h
-vncviewer/msvcwarning.h
-vncviewer/resource.h
-vncviewer/vncviewer.cxx
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-vncviewer_unix/AboutDialog.h
-vncviewer_unix/CConn.cxx
-vncviewer_unix/CConn.h
-vncviewer_unix/DesktopWindow.cxx
-vncviewer_unix/DesktopWindow.h
-vncviewer_unix/InfoDialog.h
-vncviewer_unix/OptionsDialog.h
-vncviewer_unix/PasswdDialog.h
-vncviewer_unix/ServerDialog.h
-vncviewer_unix/parameters.h
-vncviewer_unix/vncviewer.cxx
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-winvnc/AddNewClientDialog.h
-winvnc/JavaViewer.cxx
-winvnc/JavaViewer.h
-winvnc/QueryConnectDialog.cxx
-winvnc/QueryConnectDialog.h
-winvnc/STrayIcon.cxx
-winvnc/STrayIcon.h
-winvnc/VNCServerService.cxx
-winvnc/VNCServerService.h
-winvnc/VNCServerWin32.cxx
-winvnc/VNCServerWin32.h
-winvnc/buildTime.cxx
-winvnc/msvcwarning.h
-winvnc/resource.h
-winvnc/winvnc.cxx
-wm_hooks/msvcwarning.h
-wm_hooks/resource.h
-wm_hooks/wm_hooks.cxx
-wm_hooks/wm_hooks.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-x0vncserver/Image.cxx
-x0vncserver/Image.h
-x0vncserver/x0vncserver.cxx
-xc/programs/Xserver/vnc/RegionHelper.h
-xc/programs/Xserver/vnc/XserverDesktop.h
-xc/programs/Xserver/vnc/vncExtInit.h
-xc/programs/Xserver/vnc/vncHooks.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-zlib/deflate.h
-zlib/infblock.h
-zlib/infcodes.h
-zlib/inffast.h
-zlib/inffixed.h
-zlib/inftrees.h
-zlib/infutil.h
-zlib/trees.h
-zlib/zconf.h
-zlib/zlib.h
-zlib/zutil.h
-
-Name				Server/Client/Both	Windows/UNIX/Both
--------------------------------------------------------------------------
-rfbplayer/FbsInputStream.cxx
-rfbplayer/FbsInputStream.h
-rfbplayer/RfbProto.cxx
-rfbplayer/RfbProto.h
-rfbplayer/buildTime.cxx
-rfbplayer/resource.h
-rfbplayer/rfbplayer.cxx
-rfbplayer/rfbplayer.h
-rfbplayer/utils.h
diff --git a/doc/registered-codes.txt b/doc/registered-codes.txt
deleted file mode 100644
index ed97a06..0000000
--- a/doc/registered-codes.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-[Vendor=TGHT]
-Title: TightVNC
-Web: http://www.tightvnc.com/
-
-[Vendor=STDV]
-Title: RealVNC
-Web: http://www.realvnc.com/
-
-[Vendor=TRDV]
-Title: TridiaVNC
-Web: http://www.tridiavnc.com/
-
-[Vendor=GGI_]
-Title: General Graphics Interface Project
-Web: http://www.ggi-project.org/
-
-[Tunneling=0]
-Vendor: TGHT
-Signature: NOTUNNEL
-Abbrev: NoTunelling
-Description: No tunneling
-
-[Auth=1]
-Vendor: STDV
-Signature: NOAUTH__
-Abbrev: AuthNone
-Description: No authentication
-
-[Auth=2]
-Vendor: STDV
-Signature: VNCAUTH_
-Abbrev: AuthVNC
-Description: Standard VNC Authentication
-
-[Auth=129]
-Vendor: THGT
-Signature: ULGNAUTH
-Abbrev: AuthUnixLogin
-Description: Unix Login Authentication
-Notes: Not used in public versions
-
-[Auth=130]
-Vendor: THGT
-Signature: XTRNAUTH
-Abbrev: AuthExternal
-Description: External Authentication
-Notes: Not used in public versions
-
-[ServerMessageRange=130..149]
-Vendor: THGT
-Description: TightVNC File Transfers
-
-[ServerMessage=150]
-Vendor: THGT
-Signature: CUS_EOCU
-Abbrev: EndOfContinuousUpdates
-Description: End Of Continuous Updates
-
-[ServerMessage=253]
-Vendor: GGI_
-Signature: GII_SERV
-
-[ClientMessageRange=130..150]
-Vendor: THGT
-Description: TightVNC File Transfers
-
-[ClientMessage=150]
-Vendor: THGT
-Signature: CUC_ENCU
-Abbrev: EnableContinuousUpdates
-Description: Enable/Disable Continuous Updates
-
-[ClientMessage=151]
-Vendor: THGT
-Signature: VRECTSEL
-Abbrev: VideoRectangleSelection
-Description: Video Rectangle Selection
-
-[ClientMessage=253]
-Vendor: GGI_
-Signature: GII_CLNT
-
-[EncodingRange=0xFFFFFF00..0xFFFFFFFF]
-AltNotation: -256..-1
-AltNotation: 4294967040..4294967295
-Vendor: TGHT
-Description: TightVNC-Specific Pseudo-Encodings
-
-[Encoding=0xFFFFFECF]
-AltNotation: -305
-AltNotation: 4294966991
-Vendor: GGI_
-Signature: GII_____
-
diff --git a/doc/requirements.txt b/doc/requirements.txt
deleted file mode 100644
index 4957be3..0000000
--- a/doc/requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-
-- The UNIX version requires snprintf(). 
diff --git a/doc/rfbtight.odt b/doc/rfbtight.odt
deleted file mode 100644
index 3630481..0000000
--- a/doc/rfbtight.odt
+++ /dev/null
Binary files differ
diff --git a/doc/rfbtight.tex b/doc/rfbtight.tex
deleted file mode 100644
index 088ab60..0000000
--- a/doc/rfbtight.tex
+++ /dev/null
@@ -1,1121 +0,0 @@
-\documentclass[a4paper]{article}
-\usepackage{geometry}
-\geometry{verbose,a4paper,tmargin=20mm,bmargin=20mm,lmargin=30mm,rmargin=30mm}
-\setlength{\parindent}{0pt}
-\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex}
-
-\newcommand{\typestr}[1]{\textit{#1}}
-\newcommand{\literal}[1]{\textit{\textbf{#1}}}
-
-\begin{document}
-
-\title{TightVNC Extensions to the RFB~Protocol
-       \thanks{This document refers to RFB protocol versions 3.3, 3.7}}
-\author{Constantin Kaplinsky\\
-        TightVNC Group}
-\date{Revision 1 --- July, 2006}
-\maketitle
-
-\tableofcontents
-
-\newpage
-\section{Overview}
-This document describes various extensions to the RFB protocol used in
-the TightVNC distribution and in other software compatible with
-TightVNC. Only differences from the stardard RFB protocol are
-discussed. The original RFB protocol specification (protocol versions
-3.3, 3.7, 3.8) can be obtained here:
-\begin{center}
-\texttt{http://www.realvnc.com/docs/rfbproto.pdf}
-\end{center}
-
-At the moment of writing this document, TightVNC supports RFB protocol
-version 3.3 (all TightVNC versions) and 3.7 (TightVNC 1.3.x). It does
-not use the version 3.8 of the protocol, and it's not safe to assume
-that the TightVNC-specific changes to the protocol 3.7 initialization
-procedure can be used with the protocol 3.8. However, all encodings,
-pseudo-encodings and protocol messages described in this document can
-be safely used with the protocol 3.8.
-% (pseudo-)encodings: 3.3+, messages: 3.7+ with sec-type == Tight
-
-TightVNC introduces the following protocol changes:
-\begin{itemize}
-\item extended protocol initialization procedure,
-\item new encodings,
-\item new pseudo-encodings,
-\item new protocol messages.
-\end{itemize}
-
-\newpage
-\section{Protocol initialization}
-
-\subsection{Protocol version 3.3}
-\subsection{Protocol version 3.7}
-
-\newpage
-\section{Encodings}
-\subsection{Tight}
-\begin{verbatim}
-Encoding type:     7
-Name signature:    "TIGHT___"
-Vendor signature:  "TGHT"
-\end{verbatim}
-Tight encoding provides efficient compression for pixel data.
-
-The first byte of each Tight-encoded rectangle is a
-\typestr{compression-control} byte:
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8 &   & \typestr{compression-control} \\ \hline
-\end{tabular}
-
-\begin{quote}
-The least significant four bits of \typestr{compression-control} byte
-inform the client which zlib compression streams should be reset
-before decoding the rectangle. Each bit is independent and corresponds
-to a separate zlib stream that should be reset:
-
-\begin{tabular}{l|l}
-\hline
-Bit & Description    \\
-\hline
-0   & if 1: reset stream 0 \\
-1   & if 1: reset stream 1 \\
-2   & if 1: reset stream 2 \\
-3   & if 1: reset stream 4 \\
-\hline
-\end{tabular}
-
-One of three possible compression methods are supported in Tight
-encoding. These are \literal{BasicCompression},
-\literal{FillCompression} and \literal{JpegCompression}. If the bit 7 (the
-most significant bit) of \typestr{compression-control} byte is 0, then
-the compression type is \literal{BasicCompression}. In that case, bits
-7-4 (the most significant four bits) of \typestr{compression-control}
-should be interpreted as follows:
-
-\begin{tabular}{l|c|l}
-\hline
-Bits & Binary value & Description \\
-\hline
-5-4 & 00  & \literal{UseStream0} \\
-    & 01  & \literal{UseStream1} \\
-    & 10  & \literal{UseStream2} \\
-    & 11  & \literal{UseStream3} \\
-\hline
-6   & 0   & --- \\
-    & 1   & \literal{ReadFilterId} \\
-\hline
-7   & 0   & \literal{BasicCompression} \\
-\hline
-\end{tabular}
-
-Otherwise, if the bit 7 of \typestr{compression-control} is set to 1,
-then the compression method is either \literal{FillCompression} or
-\literal{JpegCompression}, depending on other bits of the same byte:
-
-\begin{tabular}{l|c|l}
-\hline
-Bits & Binary value & Description \\
-\hline
-7-4 & 1000 & \literal{FillCompression} \\
-    & 1001 & \literal{JpegCompression} \\
-    & any other & invalid \\
-\hline
-\end{tabular}
-
-Note: \literal{JpegCompression} may only be used when
-\typestr{bits-per-pixel} is either 16 or 32.
-
-\end{quote}
-
-The data following the \typestr{compression-control} byte depends on
-the compression method.
-
-\subsubsection*{\literal{FillCompression}}
-
--- If the compression type is "fill", then the only pixel value follows, in
- client pixel format (see NOTE 1). This value applies to all pixels of the
- rectangle.
-
-\subsubsection*{\literal{JpegCompression}}
-
--- If the compression type is "jpeg", the following data stream looks like
- this:
-
-   1..3 bytes:  data size (N) in compact representation;
-   N bytes:     JPEG image.
-
- Data size is compactly represented in one, two or three bytes, according
- to the following scheme:
-
-  0xxxxxxx                    (for values 0..127)
-  1xxxxxxx 0yyyyyyy           (for values 128..16383)
-  1xxxxxxx 1yyyyyyy zzzzzzzz  (for values 16384..4194303)
-
- Here each character denotes one bit, xxxxxxx are the least significant 7
- bits of the value (bits 0-6), yyyyyyy are bits 7-13, and zzzzzzzz are the
- most significant 8 bits (bits 14-21). For example, decimal value 10000
- should be represented as two bytes: binary 10010000 01001110, or
- hexadecimal 90 4E.
-
-\subsubsection*{\literal{BasicCompression}}
-
--- If the compression type is "basic" and bit 6 of the compression control
- byte was set to 1, then the next (second) byte specifies "filter id" which
- tells the decoder what filter type was used by the encoder to pre-process
- pixel data before the compression. The "filter id" byte can be one of the
- following:
-
-   0:  no filter ("copy" filter);
-   1:  "palette" filter;
-   2:  "gradient" filter.
-
--- If bit 6 of the compression control byte is set to 0 (no "filter id"
- byte), or if the filter id is 0, then raw pixel values in the client
- format (see NOTE 1) will be compressed. See below details on the
- compression.
-
--- The "gradient" filter pre-processes pixel data with a simple algorithm
- which converts each color component to a difference between a "predicted"
- intensity and the actual intensity. Such a technique does not affect
- uncompressed data size, but helps to compress photo-like images better. 
- Pseudo-code for converting intensities to differences is the following:
-
-   P[i,j] := V[i-1,j] + V[i,j-1] - V[i-1,j-1];
-   if (P[i,j] < 0) then P[i,j] := 0;
-   if (P[i,j] > MAX) then P[i,j] := MAX;
-   D[i,j] := V[i,j] - P[i,j];
-
- Here V[i,j] is the intensity of a color component for a pixel at
- coordinates (i,j). MAX is the maximum value of intensity for a color
- component.
-
--- The "palette" filter converts true-color pixel data to indexed colors
- and a palette which can consist of 2..256 colors. If the number of colors
- is 2, then each pixel is encoded in 1 bit, otherwise 8 bits is used to
- encode one pixel. 1-bit encoding is performed such way that the most
- significant bits correspond to the leftmost pixels, and each raw of pixels
- is aligned to the byte boundary. When "palette" filter is used, the
- palette is sent before the pixel data. The palette begins with an unsigned
- byte which value is the number of colors in the palette minus 1 (i.e. 1
- means 2 colors, 255 means 256 colors in the palette). Then follows the
- palette itself which consist of pixel values in client pixel format (see
- NOTE 1).
-
--- The pixel data is compressed using the zlib library. But if the data
- size after applying the filter but before the compression is less then 12,
- then the data is sent as is, uncompressed. Four separate zlib streams
- (0..3) can be used and the decoder should read the actual stream id from
- the compression control byte (see NOTE 2).
-
- If the compression is not used, then the pixel data is sent as is,
- otherwise the data stream looks like this:
-
-   1..3 bytes:  data size (N) in compact representation;
-   N bytes:     zlib-compressed data.
-
- Data size is compactly represented in one, two or three bytes, just like
- in the "jpeg" compression method (see above).
-
--- NOTE 1. If the color depth is 24, and all three color components are
- 8-bit wide, then one pixel in Tight encoding is always represented by
- three bytes, where the first byte is red component, the second byte is
- green component, and the third byte is blue component of the pixel color
- value. This applies to colors in palettes as well.
-
--- NOTE 2. The decoder must reset compression streams' states before
- decoding the rectangle, if some of bits 0,1,2,3 in the compression control
- byte are set to 1. Note that the decoder must reset zlib streams even if
- the compression type is "fill" or "jpeg".
-
--- NOTE 3. The "gradient" filter and "jpeg" compression may be used only
- when bits-per-pixel value is either 16 or 32, not 8.
-
--- NOTE 4. The width of any Tight-encoded rectangle cannot exceed 2048
- pixels. If a rectangle is wider, it must be split into several rectangles
- and each one should be encoded separately.
-
-\newpage
-\section{Pseudo-encodings}
-\subsection{NewFBSize}
-\begin{verbatim}
-Encoding type:     0xFFFFFF21
-Name signature:    "NEWFBSIZ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The NewFBSize pseudo-encoding is used to transmit information about
-framebuffer size changes from server to client.
-
-This pseudo-encoding was introduced in TightVNC, and was adopted for
-use in RealVNC 4 (see the DesktopSize pseudo-encoding in the RFB 3.7+
-specification). However, there is known incompatibility between
-TightVNC and RealVNC in the way the server sends information about new
-framebuffer size. TightVNC implementation requires that a NewFBSize
-``rectangle'' must be the last one in a framebuffer update, while
-RealVNC does not make such a requirement. As a result, TightVNC
-viewers may incorrectly interpret the data stream received from
-RealVNC 4 servers.
-
-Hopefully, this incompatibility will be fixed in future versions of
-TightVNC. Ideally, the server should send NewFBSize ``rectangles''
-according to the TightVNC rules (with valid rectangle counter in the
-FramebufferUpdate header), while the client should interpet it in
-accordance to the DesktopSize pseudo-encoding description from
-RealVNC's official RFB specification.
-
-Below is the complete specification of the NewFBSize pseudo-encoding,
-as it was introduced in TightVNC:
-
-\subsubsection*{
-\begin{center}
-      Handling framebuffer size changes in the RFB protocol v.3\\
-                 Technical Specification, revision 3
-\end{center}
-}
-
-\begin{quote}
-The following pseudo-encoding is used to transmit information about
-framebuffer size changes from server to client:
-
-\begin{center}
-\texttt{\#define rfbEncodingNewFBSize 0xFFFFFF21}
-\end{center}
-
-A client supporting variable framebuffer size should send this
-pseudo-encoding number in the encodings list within the SetEncodings
-RFB message.
-
-After a client informed the server about this capability, the server
-may send a special rectangle within the FramebufferUpdate RFB message,
-where the header contains encoding-type field set to the
-rfbEncodingNewFBSize value. Fields width and height in this rectangle
-header should be interpreted as new framebuffer size, fields
-x-position and y-position are currently not used and should be set to
-zero values by the server. Unlike true rectangle in framebuffer
-updates, this one should not include any pixel data. This rectangle
-must always be the last one in a FramebufferUpdate message, and a
-client should treat it similarly to the LastRect marker, that is, it
-should not expect more rectangles in this update, even if the
-number-of-rectangles field in the FramebufferUpdate message header
-exceeds current number of rectangles.
-
-Immediately after receiving such a special rectangle, a client should
-change its framebuffer size accordingly, and should interpret all
-following framebuffer updates in context of the new framebuffer size.
-
-Changing framebuffer size invalidates framebuffer contents, so the
-server should mark all the framebuffer contents as changed.
-
-FIXME: Allow zero-size framebuffer?
-\end{quote}
-
-\subsection{RichCursor}
-\subsection{XCursor}
-\subsection{PointerPos}
-\subsection{CompressLevel}
-\subsection{QualityLevel}
-
-\subsection{LastRect}
-\begin{verbatim}
-Encoding type:     0xFFFFFF20
-Name signature:    "LASTRECT"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-\typestr{LastRect} enables \typestr{FramebufferUpdate} messages that
-include less rectangles than was specified in the message header. For
-example, VNC server can send a big conter like 0xFFFF as
-\typestr{number-of-rectangles}, then arbitrary number of rectangles and
-pseudo-rectangles (less than 0xFFFF). Finally, it sends
-\typestr{LastRect} pseudo-rectangle which marks the end of current
-\typestr{FramebufferUpdate} message.
-
-The fields
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height} are not used and should be filled with zero values.
-
-To enable this pseudo-encoding, the client specifies
-\typestr{LastRect} in the \typestr{SetEncodings} message. From that
-moment, the server may use \typestr{LastRect} pseudo-encoding in some
-of the framebuffer updates it will send.
-
-% For each message, describe its place in the message sequence.
-
-\newpage
-\section{Protocol messages, file transfers (client to server)}
-
-\subsection{FileListRequest}
-\begin{verbatim}
-Message type:      130
-Name signature:    "FTC_LSRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileListRequest} message to obtain the list
-of files in a particular directory. The server is expected to respond
-with exactly one \typestr{FileListData} message.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 130 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & do not compress file list data \\
-    & 0001..1001      & use compression level 1..9 \\
-    & 1010 or greater & invalid \\
-\hline
-4   & 0   & list of files and directories requested \\
-    & 1   & list of directories only requested \\
-\hline
-\end{tabular}
-
-The client can request compression only if enabled via the server's
-\typestr{FileEnableCompression} message. Otherwise, bits 3-0 of
-\typestr{flags} must be all zeroes (for no compression). See more
-details in the specification for the \typestr{FileEnableCompression}
-message.
-
-% Add a note that specifying compression levels is not fatal here.
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path,
-except for the root (highest level) directory which is denoted with a
-single slash. Note that Windows-style path like
-``\verb|c:\Program Files\TightVNC|'' should be sent as
-``\verb|/c:/Program Files/TightVNC|''.
-
-\newpage
-\subsection{FileDownloadRequest}
-\begin{verbatim}
-Message type:      131
-Name signature:    "FTC_DNRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileDownloadRequest} message to start
-downloading (receiving) a particular file from the server.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 131 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{filename-length} \\
-4 & U32 &     & \typestr{initial-offset} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & do not compress file data \\
-    & 0001..1001      & use compression level 1..9 \\
-    & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-% \typestr{initial-offset}
-% do not use compression when not enabled by the server
-
-After the client sends \typestr{FileDownloadRequest}, the server is
-expected to respond with one of the following:
-
-\begin{itemize}
-
-\item \typestr{FileLastRequestFailed} message, if there was an error
-opening file on the server side.
-
-\item Arbitrary number (including zero) of \typestr{FileDownloadData}
-messages with file data, and then one more \typestr{FileDownloadData}
-message with \typestr{raw-length} and \typestr{compressed-length}
-fields set to zero. This is the normal scenario when there was no
-error and download was not interrupted.
-
-\item Arbitrary number (including zero) of \typestr{FileDownloadData}
-messages with file data, and then one \typestr{FileDownloadFailed}
-message. This happens when the server cannot complete file download
-for some reason.
-
-\item \dots
-
-\end{itemize}
-
-% Can FileDownloadFailed go first? -- probably yes.
-% How zero-size files are transmitted?
-% How to detect the beginning of the next file, when previous
-%   download was cancelled with FileDownloadCancel?
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\subsection{FileUploadRequest}
-\begin{verbatim}
-Message type:      132
-Name signature:    "FTC_UPRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileUploadRequest} message to start
-uploading (sending) a particular file to the server.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 132 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{filename-length} \\
-4 & U32 &     & \typestr{initial-offset} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & file data is expected to be uncompressed \\
-    & 0001..1001      & expected compression level (1..9) \\
-    & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-% \typestr{initial-offset}
-% do not use compression when not enabled by the server
-
-Normally, the server does not respond to this message, so the client
-can start sending \typestr{FileUploadData} messages immediately.
-However, the server may send \typestr{FileUploadCancel} to make the
-client cancel current upload. The client can cancel current upload by
-sending \typestr{FileUploadFailed} message.
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\subsection{FileUploadData}
-\begin{verbatim}
-Message type:      133
-Name signature:    "FTC_UPDT"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client uses \typestr{FileUploadData} message to send each
-successive portion of file data, as a part of file upload procedure.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 133 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{raw-length} \\
-2 & U16 &     & \typestr{compressed-length} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-data} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & file data is not compressed \\
-    & 0001..1001      & compression level used (1..9) \\
-    & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-Last message per file (both \typestr{raw-length} and
-\typestr{compressed-length} are set to zeroes):
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 133 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &   0 & \typestr{raw-length} \\
-2 & U16 &   0 & \typestr{compressed-length} \\
-4 & U32 &     & \typestr{modification-time} \\
-\hline\end{tabular}
-
-% do not use compression when not enabled by the server
-% data is compressed with zlib
-% format of the modification-time
-
-\newpage
-\subsection{FileDownloadCancel}
-\begin{verbatim}
-Message type:      134
-Name signature:    "FTC_DNCN"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileDownloadCancel} message to make the
-server break current download operation.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 134 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileUploadFailed}
-\begin{verbatim}
-Message type:      135
-Name signature:    "FTC_UPFL"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client sends \typestr{FileUploadFailed} message to notify the
-server that current upload operation will not be completed.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 135 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileCreateDirRequest}
-\begin{verbatim}
-Message type:      136
-Name signature:    "FTC_FCDR"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-\typestr{FileCreateDirRequest} message requests the server to create a
-new directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 136 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path.
-Note that Windows-style path like
-``\verb|c:\Temp\MyNewDir|'' should be sent as
-``\verb|/c:/Temp/MyNewDir|''.
-
-% All components of the path except the last one should exist in the
-% server's file system?
-
-\newpage
-\subsection{FileDirSizeRequest}
-\begin{verbatim}
-Message type:      137
-Name signature:    "FTC_DSRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The client can send \typestr{FileDirSizeRequest} message to inquire
-about the total size of all files within a particular directory on the
-server (including files in sub-directories).
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 137 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{dirname-length} \\
-\typestr{dirname-length} & U8 array & & \typestr{dirname-string} \\
-\hline\end{tabular}
-
-The \typestr{dirname-string} should be an absolute path represented in
-Unix-style format: it should start with a forward slash
-(``\verb|/|''), path components should be separated also with forward
-slashes. There should be no trailing slash at the end of the path,
-except for the root (highest level) directory which is denoted with a
-single slash. Note that Windows-style path like
-``\verb|c:\Program Files\TightVNC|'' should be sent as
-``\verb|/c:/Program Files/TightVNC|''.
-
-\newpage
-\subsection{FileRenameRequest}
-\begin{verbatim}
-Message type:      138
-Name signature:    "FTC_RNRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-\typestr{FileRenameRequest} message requests the server to rename the
-specified file or directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 138 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{old-name-length} \\
-2 & U16 &     & \typestr{new-name-length} \\
-\typestr{old-name-length} & U8 array & & \typestr{old-name-string} \\
-\typestr{new-name-length} & U8 array & & \typestr{new-name-string} \\
-\hline\end{tabular}
-
-Both \typestr{old-name-string} and \typestr{new-name-string} should be
-file names with complete absolute paths and should be represented in
-Unix-style format: the strings should start with forward slashes
-(``\verb|/|''), path components should be separated also with forward
-slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-% All components of two paths except the last one should be the same?
-
-\newpage
-\subsection{FileDeleteRequest}
-\begin{verbatim}
-Message type:      139
-Name signature:    "FTC_RMRQ"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-\typestr{FileDeleteRequest} message requests the server to delete the
-specified file or directory.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 139 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{filename-length} \\
-\typestr{filename-length} & U8 array & & \typestr{filename-string} \\
-\hline\end{tabular}
-
-The \typestr{filename-string} should be a file name with complete
-absolute path represented in Unix-style format: it should start with a
-forward slash (``\verb|/|''), path components should be separated also
-with forward slashes. For example, Windows-style file name
-``\verb|c:\Temp\Report.doc|'' should be sent as
-``\verb|/c:/Temp/Report.doc|''.
-
-\newpage
-\section{Protocol messages, file transfers (server to client)}
-
-\subsection{FileListData}
-\begin{verbatim}
-Message type:      130
-Name signature:    "FTS_LSDT"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileListData} message in response to
-\typestr{FileListRequest} client message. \typestr{FileListData}
-message lists files and sub-directories in a particular directory, and
-includes information about file sizes and last modification times.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 130 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{number-of-files} \\
-2 & U16 &     & \typestr{raw-length} \\
-2 & U16 &     & \typestr{compressed-length} \\
-8 $\times$ \typestr{number-of-files} & U32 array & & \typestr{file-properties-data} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-names-data} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & file list data is not compressed \\
-    & 0001..1001      & compression level used (1..9) \\
-    & 1010 or greater & invalid \\
-\hline
-4   & 0   & list of files and directories requested \\
-    & 1   & list of directories only requested \\
-\hline
-5   & 0   & success \\
-    & 1   & non-existent or inaccessible directory requested \\
-\hline
-\end{tabular}
-
-In the \typestr{flags} byte:
-
-\begin{itemize}
-\item bit 4 duplicates the same bit from the corresponding
-  \typestr{FileListRequest} message;
-\item if bit 5 is set to 1, then \typestr{number-of-files},
-  \typestr{raw-length} and \typestr{compressed-length} all should be
-  set to zero values. In that case, \typestr{file-properties-data} and
-  \typestr{file-names-data} should be empty;
-\item compression bits (bits 3-0) should be set only if compression
-  was requested by the client in the corresponding
-  \typestr{FileListRequest} message.
-\end{itemize}
-
-\typestr{File-properties-data} array is sent as
-\typestr{number-of-files} repetitions of the following structure:
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-4 & U32 &  & \typestr{file-size} \\
-4 & U32 &  & \typestr{modification-time} \\
-\hline\end{tabular}
-
-In that structure, \typestr{file-size} is specified in bytes,
-\typestr{modification-time} is an offset is seconds since the Epoch
-(00:00:00 UTC, January 1, 1970).
-
-\typestr{File-names-data} is a sequence of file and directory names
-found in the requested directory. Names do not include paths.
-Each individual record is terminated with a zero byte. The
-\typestr{file-names-data} list should include
-\typestr{number-of-files} individual records. If compression is
-enabled (bits 3-0 of \typestr{flags} designate a valid compression
-level), then \typestr{file-names-data} is compressed using zlib
-library.
-
-% the number-of-files may be 0; in that case ...
-% how directories should be ditinguished
-% what about symbolic links etc.
-% describe raw-length and compressed-length
-
-\newpage
-\subsection{FileDownloadData}
-\begin{verbatim}
-Message type:      131
-Name signature:    "FTS_DNDT"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server uses \typestr{FileDownloadData} message to send each
-successive portion of file data, as a part of file download procedure.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 131 & \typestr{message-type} \\
-1 & U8  &     & \typestr{flags} \\
-2 & U16 &     & \typestr{raw-length} \\
-2 & U16 &     & \typestr{compressed-length} \\
-\typestr{compressed-length} & U8 array & & \typestr{file-data} \\
-\hline\end{tabular}
-
-Last message per file (both \typestr{raw-length} and
-\typestr{compressed-length} are set to zeroes):
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 131 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &   0 & \typestr{raw-length} \\
-2 & U16 &   0 & \typestr{compressed-length} \\
-4 & U32 &     & \typestr{modification-time} \\
-\hline\end{tabular}
-
-The \typestr{flags} byte has the following format:
-
-\begin{tabular}{l|l|l}
-\hline
-Bits & Binary value   & Description \\ \hline
-3-0 & 0000            & file data is not compressed \\
-    & 0001..1001      & compression level used (1..9) \\
-    & 1010 or greater & invalid \\
-\hline
-\end{tabular}
-
-Compression should be used only if it was requested by the client in
-corresponding \typestr{FileListRequest} message.
-
-% data is compressed with zlib
-% format of the modification-time
-
-\newpage
-\subsection{FileUploadCancel}
-\begin{verbatim}
-Message type:      132
-Name signature:    "FTS_UPCN"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileUploadCancel} message to make the client
-break current upload operation.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 132 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileDownloadFailed}
-\begin{verbatim}
-Message type:      133
-Name signature:    "FTS_DNFL"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileDownloadFailed} message to notify the
-client that current download operation will not be completed.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 133 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileDirSizeData}
-\begin{verbatim}
-Message type:      134
-Name signature:    "FTS_DSDT"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileDirSizeData} message in response to
-\typestr{FileDirSizeRequest} client message. \typestr{FileDirSizeData}
-message returns total size of all files within the requested directory
-on the server (including files in sub-directories). The size in bytes
-is returned as an unsigned 48-bit value.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 134 & \typestr{message-type} \\
-1 &     &     & \typestr{padding} \\
-2 & U16 &     & \typestr{dir-size-high-bits} \\
-4 & U32 &     & \typestr{dir-size-low-bits} \\
-\hline\end{tabular}
-
-\newpage
-\subsection{FileLastRequestFailed}
-\begin{verbatim}
-Message type:      135
-Name signature:    "FTS_RQFL"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{FileLastRequestFailed} message if it cannot
-execute an operation requested by the client. It can be sent in
-response to the following client messages:
-\typestr{FileDownloadRequest}, \typestr{FileCreateDirRequest},
-\typestr{FileRenameRequest}, \typestr{FileDeleteRequest}.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 135 & \typestr{message-type} \\
-1 & U8  &     & \typestr{message-type-of-request} \\
-2 & U16 &     & \typestr{reason-length} \\
-\typestr{reason-length} & U8 array & & \typestr{reason-string} \\
-\hline\end{tabular}
-
-% reason-string may be empty
-
-\newpage
-\subsection{FileEnableCompression}
-\begin{verbatim}
-Message type:      137
-Name signature:    "FTS_CMPR"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-This message controls compression in file transfer operations.
-\typestr{Enable-flag} is non-zero (true) if the client should be
-allowed to request and use compression for file transfers, or zero
-(false) otherwise.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 137 & \typestr{message-type} \\
-1 & U8  &     & \typestr{enable-flag} \\
-\hline\end{tabular}
-
-\typestr{FileEnableCompression} message controls how clients send the
-following messages:
-
-\begin{itemize}
-\item \typestr{FileListRequest}
-\item \typestr{FileDownloadRequest}
-\item \typestr{FileUploadRequest}
-\item \typestr{FileUploadData}
-\end{itemize}
-
-If the client did not receive a \typestr{FileEnableCompression}
-message from the server, or the most recent
-\typestr{FileEnableCompression} message included \typestr{enable-flag}
-set to false, then it must specify zero as compression level in the
-messages listed above and, most importantly, may not compress file
-data on uploading files.
-
-Otherwise, if the most recent \typestr{FileEnableCompression} message
-included non-zero \typestr{enable-flag}, then the client is allowed to
-request non-zero compression level and may send compressed data in
-\typestr{FileUploadData} messages.
-
-This message should not have effect on file transfers that are already
-in progress.
-
-\begin{quote}
-Note: this message was introduced to preserve compatibility with
-servers that do not support compression in file transfers. Old servers
-expect uncompressed data in \typestr{FileUploadData} messages but new
-clients might send it compressed. Using
-\typestr{FileEnableCompression} message makes sure the client will
-never compress upload data unless enabled explicitly by the server.
-\end{quote}
-
-\newpage
-\section{Protocol messages (client to server)}
-
-\subsection{EnableContinuousUpdates}
-\begin{verbatim}
-Message type:      150
-Name signature:    "CUC_ENCU"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-This message either enables continuous updates for the specified
-pixels, or disables continuous updates completely.
-
-If \typestr{enable-flag} is set to true (non-zero), continuous updates
-are enabled for the framebuffer area specified by
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height}.
-
-If \typestr{enable-flag} is set to false (zero), continuous updates
-are to be completely disabled. In this case, the values of
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height} are not used.
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 150 & \typestr{message-type} \\
-1 & U8  &     & \typestr{enable-flag} \\
-2 & U16 &     & \typestr{x-position} \\
-2 & U16 &     & \typestr{y-position} \\
-2 & U16 &     & \typestr{width} \\
-2 & U16 &     & \typestr{height} \\
-\hline\end{tabular}
-
-Normally, the server would send \typestr{FramebufferUpdate} messages
-only in response to corresponding \typestr{FramebufferUpdateRequest}
-messages received from the client. In contrast, when continuous
-updates are in effect, the server is allowed to send a
-\typestr{FramebufferUpdate} message at any time, not waiting for
-client requests.
-
-Initially, contunuous updates are disabled since they violate the
-original RFB protocol. To enable this mode, the client sends an
-\typestr{EnableContinuousUpdates} message with non-zero
-\typestr{enable-flag}. On receiving such a message, the server
-immediately enables continuous updates for the area specified by
-\typestr{x-position}, \typestr{y-position}, \typestr{width} and
-\typestr{height}. The server will not send updates for pixels outside
-of this area.
-
-If continuous updates are already in effect, the client may always
-change the coordinates of currently updated area by sending another
-\typestr{EnableContinuousUpdates} message with non-zero
-\typestr{enable-flag}. On receiving each next message, the server
-discards old coordinates and re-enables continuous updates for the
-newly specified area.
-
-If \typestr{enable-flag} is set to zero, the server should disable
-continuous updates completely and respond with an
-\typestr{EndOfContinuousUpdates} message. After the client has
-received an \typestr{EndOfContinuousUpdates}, it can be sure that
-there will be no more updates without prior update requests.
-
-The client may send a message with zero \typestr{enable-flag} even if
-continuous updates were disabled already. In response, the server
-should send an \typestr{EndOfContinuousUpdates} each time it is asked
-to disable continuous updates. This behavior may be useful for
-protocol synchronization purposes.
-
-While continuous updates are in effect, the server completely ignores
-incremental update requests (\typestr{FramebufferUpdateRequest} with
-\typestr{incremental} flag set to non-zero). Such requests are ignored
-regardless of the coordinates specified within the request. Thus, it's
-not possible to request an incremental update for pixels outside of
-current continuously updated area.
-
-Non-incremental update requests (\typestr{FramebufferUpdateRequest}
-with \typestr{incremental} flag set to zero) should work as usual.
-That is, in response to such requests, the server should send the
-entire contents of the specified area as soon as possible.
-
-FIXME: Respect incremental update requests?
-
-FIXME: Decide how to handle framebuffer size changes.
-
-FIXME: Decide how to change pixel format while continuously updating.
-
-See also:
-\begin{itemize}
-\item \typestr{EndOfContinuousUpdates} server-to-client message.
-\end{itemize}
-
-\newpage
-\section{Protocol messages (server to client)}
-
-\subsection{EndOfContinuousUpdates}
-\begin{verbatim}
-Message type:      150
-Name signature:    "CUS_EOCU"
-Vendor signature:  "TGHT"
-\end{verbatim}
-
-The server sends \typestr{EndOfContinuousUpdates} message in response
-to each \typestr{EnableContinuousUpdates} message if and only if its
-\typestr{enable-flag} was set to false (zero).
-
-\begin{tabular}{l|lc|l} \hline
-No.\ of bytes & Type & [Value] & Description \\ \hline
-1 & U8  & 150 & \typestr{message-type} \\
-\hline\end{tabular}
-
-The message informs the client that it should not expect unsolicited
-framebuffer updates any more. In other words, after this message,
-there will be no framebuffer updates with no corresponding update
-requests received from the client.
-
-Note that this message should be sent each time the client is asking
-to disable continuous updates, even if continuous updates were not
-previously enabled.
-
-FIXME: Allow unsolicited EndOfContinuousUpdates messages?
-
-See also:
-\begin{itemize}
-\item \typestr{EnableContinuousUpdates} client-to-server message.
-\end{itemize}
-
-\end{document}
diff --git a/unix/vncconfig/vncconfig.man b/unix/vncconfig/vncconfig.man
index 10a487a..6695be3 100644
--- a/unix/vncconfig/vncconfig.man
+++ b/unix/vncconfig/vncconfig.man
@@ -1,4 +1,4 @@
-.TH vncconfig 1 "17 Apr 2006" "TigerVNC" "Virtual Network Computing"
+.TH vncconfig 1 "" "TigerVNC" "Virtual Network Computing"
 .SH NAME
 vncconfig \- configure and control a VNC server
 .SH SYNOPSIS
@@ -64,26 +64,26 @@
 server). \fIhost\fP is the host where the listening viewer is running. If it's
 not listening on the default port of 5500, you can specify \fIhost:port\fP
 instead.
-
+.
 .TP
 .B \-disconnect
 This causes Xvnc to disconnect from all viewers so that the VNC desktop is not
 displayed anywhere.
-
+.
 .TP
 [\fB-set\fP] \fIXvnc-param\fP=\fIvalue\fP
 Sets an Xvnc parameter to the given value.  Note that some of Xvnc's parameters
 are read only once at startup so that changing them in this way may not have
 any effect.
-
+.
 .TP
 .B \-list
 Lists all the parameters supported by Xvnc.
-
+.
 .TP
 .B \-get \fIXvnc-param\fP
 Prints the current value of the given Xvnc parameter.
-
+.
 .TP
 .B \-desc \fIXvnc-param\fP
 Prints a short description of the given Xvnc parameter.
@@ -102,11 +102,11 @@
 .TP
 .B \-display \fIXdisplay\fP
 Specifies the Xvnc server to control.
-
+.
 .TP
 .B \-nowin
 When run as a "helper" app, don't put up a window.
-
+.
 .TP
 .B \-iconic
 When run as a "helper" app, make the window iconified at startup.
@@ -120,9 +120,10 @@
 http://www.tigervnc.org
 
 .SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
 
 VNC was originally developed by the RealVNC team while at Olivetti
 Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/vncpasswd/vncpasswd.man b/unix/vncpasswd/vncpasswd.man
index 27c04fe..e9250fd 100644
--- a/unix/vncpasswd/vncpasswd.man
+++ b/unix/vncpasswd/vncpasswd.man
@@ -1,4 +1,4 @@
-.TH vncpasswd 1 "09 Jul 2010" "TigerVNC" "Virtual Network Computing"
+.TH vncpasswd 1 "" "TigerVNC" "Virtual Network Computing"
 .SH NAME
 vncpasswd \- change the VNC password
 .SH SYNOPSIS
@@ -47,13 +47,10 @@
 http://www.tigervnc.org
 
 .SH AUTHORS
-Tristan Richardson, RealVNC Ltd.
-.br
-Antoine Martin
-.br
-D. R. Commander
+Tristan Richardson, RealVNC Ltd., Antoine Martin, D. R. Commander and others.
 
 VNC was originally developed by the RealVNC team while at Olivetti
 Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/vncserver.man b/unix/vncserver.man
index 7654380..04a060e 100644
--- a/unix/vncserver.man
+++ b/unix/vncserver.man
@@ -1,4 +1,4 @@
-.TH vncserver 1 "13 Mar 2011" "TigerVNC" "Virtual Network Computing"
+.TH vncserver 1 "" "TigerVNC" "Virtual Network Computing"
 .SH NAME
 vncserver \- start or stop a VNC server
 .SH SYNOPSIS
@@ -19,6 +19,8 @@
 .RI [ Xvnc-options... ]
 .br
 .BI "vncserver \-kill :" display#
+.br
+.BI "vncserver \-list"
 .SH DESCRIPTION
 .B vncserver
 is used to start a VNC (Virtual Network Computing) desktop.
@@ -54,24 +56,24 @@
 change it with this option.  The desktop name option is passed to the xstartup
 script via the $VNCDESKTOP environment variable, which allows you to run a
 different set of applications depending on the name of the desktop.
-
+.
 .TP
 .B \-geometry \fIwidth\fPx\fIheight\fP
 Specify the size of the VNC desktop to be created. Default is 1024x768. 
-
+.
 .TP
 .B \-depth \fIdepth\fP
 Specify the pixel depth (in bits) of the VNC desktop to be created. Default is
 24.  Other possible values are 8, 15 and 16 - anything else is likely to cause
 strange behaviour by applications.
-
+.
 .TP
 .B \-pixelformat \fIformat\fP
 Specify pixel format for Xvnc to use (BGRnnn or RGBnnn).  The default for
 depth 8 is BGR233 (meaning the most significant two bits represent blue, the
 next three green, and the least significant three represent red), the default
 for depth 16 is RGB565, and the default for depth 24 is RGB888.
-
+.
 .TP
 .B \-cc 3
 As an alternative to the default TrueColor visual, this allows you to run an
@@ -80,7 +82,7 @@
 work on such a display.  Values other than 3 (PseudoColor) and 4 (TrueColor)
 for the \-cc option may result in strange behaviour, and PseudoColor desktops
 must have an 8-bit depth.
-
+.
 .TP
 .B \-kill :\fIdisplay#\fP
 This kills a VNC desktop previously started with vncserver.  It does this by
@@ -90,7 +92,7 @@
 option ignores anything preceding the first colon (":") in the display
 argument.  Thus, you can invoke "vncserver \-kill $DISPLAY", for example at the
 end of your xstartup file after a particular application exits.
-
+.
 .TP
 .B \-fp \fIfont-path\fP
 If the vncserver script detects that the X Font Server (XFS) is running, it
@@ -106,19 +108,23 @@
 .B \-fp
 argument allows you to override the above fallback logic and specify a font
 path for Xvnc to use.
-
+.
 .TP
 .B \-fg
 Runs Xvnc as a foreground process.  This has two effects: (1) The VNC server
 can be aborted with CTRL-C, and (2) the VNC server will exit as soon as the
 user logs out of the window manager in the VNC session.  This may be necessary
 when launching TigerVNC from within certain grid computing environments.
-
+.
 .TP
 .B \-autokill
 Automatically kill Xvnc whenever the xstartup script exits.  In most cases,
 this has the effect of terminating Xvnc when the user logs out of the window
 manager.
+.
+.TP
+.B \-list
+Lists all VNC desktops started by vncserver.
 
 .SH FILES
 Several VNC-related files are found in the directory $HOME/.vnc:
@@ -148,11 +154,10 @@
 http://www.tigervnc.org
 
 .SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
-.br
-D. R. Commander
+Tristan Richardson, RealVNC Ltd., D. R. Commander and others.
 
 VNC was originally developed by the RealVNC team while at Olivetti
 Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/x0vncserver/Geometry.cxx b/unix/x0vncserver/Geometry.cxx
index 94e2df6..adc72c3 100644
--- a/unix/x0vncserver/Geometry.cxx
+++ b/unix/x0vncserver/Geometry.cxx
@@ -32,11 +32,6 @@
   "If the argument is empty, full screen is shown to VNC clients.",
   "");
 
-StringParameter Geometry::m_videoAreaParam("VideoArea",
-  "Screen area to be handled as video. "
-  "Format is <width>x<height>+<offset_x>+<offset_y>.",
-  "");
-
 Geometry::Geometry(int fullWidth, int fullHeight)
   : m_fullWidth(fullWidth),
     m_fullHeight(fullHeight),
@@ -58,25 +53,6 @@
   // Everything went good so far.
   vlog.info("Desktop geometry is set to %dx%d+%d+%d",
             width(), height(), offsetLeft(), offsetTop());
-
-  // Handle the VideoArea parameter, save the result in m_videoRect.
-  // Note that we log absolute coordinates but save relative ones.
-  param = m_videoAreaParam.getData();
-  bool videoAreaSpecified = (strlen(param) > 0);
-  if (videoAreaSpecified) {
-    Rect absVideoRect = parseString(param);
-    if (!absVideoRect.is_empty()) {
-      vlog.info("Video area set to %dx%d+%d+%d",
-                absVideoRect.width(), absVideoRect.height(),
-                absVideoRect.tl.x, absVideoRect.tl.y);
-      Point base(-offsetLeft(), -offsetTop());
-      m_videoRect = absVideoRect.translate(base);
-    } else {
-      vlog.info("Video area was not set");
-      m_videoRect.clear();
-    }
-  }
-  delete[] param;
 }
 
 Rect Geometry::parseString(const char *arg) const
diff --git a/unix/x0vncserver/Geometry.h b/unix/x0vncserver/Geometry.h
index 69ab687..9caeeba 100644
--- a/unix/x0vncserver/Geometry.h
+++ b/unix/x0vncserver/Geometry.h
@@ -45,25 +45,16 @@
   // Return the same information as a Rect structure.
   const Rect& getRect() const { return m_rect; }
 
-  // Return coordinates of the video rectangle if one was set with the
-  // "VideoArea" parameter. The coordinates are relative to the whole
-  // rectangle as returned by getRect(). In other words, the
-  // coordinate (0, 0) corresponds to the top left corner of the
-  // rectangle shown to RFB clients.
-  const Rect& getVideoRect() const { return m_videoRect; }
-
 protected:
   // Parse a string, extract size and coordinates,
   // and return that rectangle clipped to m_rect.
   Rect parseString(const char *arg) const;
 
   static StringParameter m_geometryParam;
-  static StringParameter m_videoAreaParam;
 
   int m_fullWidth;
   int m_fullHeight;
   Rect m_rect;
-  Rect m_videoRect;
 };
 
 #endif // __GEOMETRY_H__
diff --git a/unix/x0vncserver/x0vncserver.man b/unix/x0vncserver/x0vncserver.man
index e98030e..87fedf3 100644
--- a/unix/x0vncserver/x0vncserver.man
+++ b/unix/x0vncserver/x0vncserver.man
@@ -1,4 +1,4 @@
-.TH X0VNCSERVER 1 "Dec 23, 2008" "TigerVNC" "TigerVNC Manual"
+.TH X0VNCSERVER 1 "" "TigerVNC" "TigerVNC Manual"
 .SH NAME
 x0vncserver \- TigerVNC Server for X displays
 .SH SYNOPSIS
@@ -12,6 +12,11 @@
 TigerVNC or compatible viewers.  Unlike \fBXvnc\fP(1), it does not create a
 virtual display.  Instead, it just shares an existing X server (typically,
 that one connected to the physical screen).
+
+XDamage will be used if the existing X server supports it. Otherwise
+.B x0vncserver
+will fall back to polling the screen for changes.
+
 .SH OPTIONS
 .B x0vncserver
 interprets the command line as a list of parameters with optional values.
@@ -21,13 +26,16 @@
 .PP
 There are several forms of specifying parameters in the command line (here we
 use `\fISomeParameter\fP' as an example parameter name):
+
 .TP
 .B -\fISomeParameter\fP
 Enable the parameter, turn the feature on.  This form can be used with
 parameters that simply enable or disable some feature.
+.
 .TP
 .B -\fISomeParameter\fP=0
 Disable the parameter, turn the feature off.
+.
 .TP
 .B -\fISomeParameter\fP=\fIvalue\fP
 Assign the specified \fIvalue\fP to the parameter.  The leading dash can be
@@ -35,15 +43,19 @@
 .PP
 Parameter names are case-insensitive, their order in the command line can be
 arbitrary.
+
 .SH PARAMETERS
+
 .TP
 .B display
 The X display name.  If not specified, it defaults to the value of the
 DISPLAY environment variable.
+.
 .TP
 .B rfbport
 TCP port to listen for incoming VNC connections (RFB protocol).  The default
 port is 5900.
+.
 .TP
 .B Log
 Specifies which log output should be directed to which target logger, and the
@@ -51,6 +63,7 @@
 Default is \fB*:stderr:30\fP (log everything to stderr, set log level to 30).
 Log level should be a value between 0 and 100, higher levels produce more
 output.
+.
 .TP
 .B HostsFile
 This parameter allows to specify a file name with IP access control rules.
@@ -63,64 +76,103 @@
 \fINetmask\fP is optional and can be specified either in dotted format
 (e.g. /255.255.255.0), or as a single number of bits (e.g. /24).  Default is
 to accept connections from any IP address.
+.
 .TP
 .B SecurityTypes
 Specify which security scheme to use for incoming connections.  Valid values
-are \fBNone\fP and \fBVncAuth\fP.  Default is \fBVncAuth\fP.
+are a comma separated list of \fBNone\fP, \fBVncAuth\fP, \fBPlain\fP,
+\fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP, \fBX509None\fP, \fBX509Vnc\fP
+and \fBX509Plain\fP. Default is \fBVncAuth,TLSVnc\fP.
+.
 .TP
-.B PasswordFile
+.B rfbauth, PasswordFile
 Password file for VNC authentication.  There is no default, you should
 specify the password file explicitly.  Password file should be created with
 the \fBvncpasswd\fP(1) utility.
+.
 .TP
 .B Password
 Obfuscated binary encoding of the password which clients must supply to
 access the server.  Using this parameter is insecure, use \fBPasswordFile\fP
 parameter instead.
+.
+.TP
+.B PlainUsers
+A comma separated list of user names that are allowed to authenticate via
+any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
+to allow any user to authenticate using this security type. Default is to
+deny all users.
+.
+.TP
+.B pam_service, PAMService
+PAM service name to use when authentication users using any of the "Plain"
+security types. Default is \fBvnc\fP.
+.
+.TP
+.B X509Cert
+Path to a X509 certificate in PEM format to be used for all X509 based
+security types (X509None, X509Vnc, etc.).
+.
+.TP
+.B X509Key
+Private key counter part to the certificate given in \fBX509Cert\fP. Must
+also be in PEM format.
+.
 .TP
 .B BlacklistThreshold
 The number of unauthenticated connection attempts allowed from any individual
 host before that host is black-listed.  Default is 5.
+.
 .TP
 .B BlacklistTimeout
 The initial timeout applied when a host is first black-listed.  The host
 cannot re-attempt a connection until the timeout expires.  Default is 10.
+.
 .TP
 .B QueryConnect
 Prompt the local user to accept or reject incoming connections.  Default is
 off.
+.
 .TP
 .B QueryConnectTimeout
 Number of seconds to show the Accept Connection dialog before rejecting the
 connection.  Default is 10.
+.
 .TP
 .B AlwaysShared
 Always treat incoming connections as shared, regardless of the
 client-specified setting.  Default is off.
+.
 .TP
 .B NeverShared
 Never treat incoming connections as shared, regardless of the
 client-specified setting.  Default is off.
+.
 .TP
 .B DisconnectClients
 Disconnect existing clients if an incoming connection is non-shared.  If
 combined with \fBNeverShared\fP then new connections will be refused while
 there is a client active.  Default is on.
+.
 .TP
 .B AcceptKeyEvents
 Accept key press and release events from clients.  Default is on.
+.
 .TP
 .B AcceptPointerEvents
 Accept pointer events from clients.  Default is on.
+.
 .TP
 .B RemapKeys
 Comma-separated list of incoming keysyms to remap.  Mappings are expressed as
 two hex values, prefixed by \fB0x\fP, and separated by \fB->\fP (`dash' and
 `greater than' characters).
+.
 .TP
 .B Protocol3.3
 Always use RFB protocol version 3.3 for backwards compatibility with
 badly-behaved clients.  Default is off.
+.
 .TP
 .B Geometry
 This option specifies the screen area that will be shown to VNC clients.  The
@@ -130,102 +182,106 @@
 right and/or from the bottom of the screen.  Offsets are optional, +0+0 is
 assumed by default (top left corner).  If the argument is empty, full screen
 is shown to VNC clients (this is the default).
+.
 .TP
 .B MaxProcessorUsage
 Maximum percentage of CPU time to be consumed when polling the
 screen.  Default is 35.
+.
 .TP
 .B PollingCycle
 Milliseconds per one polling cycle.  Actual interval may be dynamically
 adjusted to satisfy \fBMaxProcessorUsage\fP setting.  Default is 30.
+.
 .TP
-.B VideoArea
-This option specifies the screen area that will be handled as video.  The
-format is
-.B \fIwidth\fPx\fIheight\fP+\fIxoffset\fP+\fIyoffset\fP
-, where `+' signs can be replaced with `\-' signs to specify offsets from the
-right and/or from the bottom of the screen.  Offsets are optional, +0+0 is
-assumed by default (top left corner).  Video area is not checked for actual
-changes, it is assumed to be changing continuously and is sent in each screen
-update.  Normally, video area is compressed with JPEG (if allowed by the
-client).  Note that this setting can be overriden by TigerVNC clients
-supporting VideoRectangleSelection protocol extension.  In other words,
-clients may choose video selection themselves, but if they do not, then the
-\fBVideoArea\fP parameter will take effect.  If the argument is empty, no
-video area is set (this is the default).
+.B DeferUpdate
+x0vncserver uses a "deferred update" mechanism which enhances performance in
+many cases. After any change to the framebuffer, x0vncserver waits for this
+number of milliseconds (default 1) before sending an update to any waiting
+clients. This means that more changes tend to get coalesced together in a
+single update. Setting it to 0 results in the same behaviour as earlier
+versions of x0vncserver, where the first change to the framebuffer causes an
+immediate update to any waiting clients.
+.
 .TP
-.B VideoPriority
-Specify the priority of sending video updates.  \fBx0vncserver\fP can be
-instructed to treat certain rectangular part of the screen as a video area
-and handle it in a special way for improved performance (see documentation on
-the \fBVideoArea\fP parameter).  \fBVideoPriority\fP value controls how often
-video area will be sent to clients as compared to the rest of the screen.
-The priority must be an integer between 0 and 8, and the default value is 2.
-
-\fBVideoPriority\fP set to 1 gives the same priority both to video and to
-other pixels.  Higher values give more priority to video.  For example, the
-value 5 specifies that the rate of sending video will be five times higher
-than the rate of updating the rest of the screen.  If \fBVideoPriority\fP is
-set to 0, it gives equal priority to video and other updates (just like the
-value 1) and also disables special encoding for video data.  In other words,
-\fBVideoPriority\fP video area will be sent as a part of other screen
-contents.
+.B AlwaysSetDeferUpdateTimer
+Keep delaying sending the screen update to the client(s) each time the
+screen is updated. Otherwise the delay is from the first update. Default
+is off.
+.
 .TP
 .B CompareFB
-Perform pixel comparison on framebuffer to reduce unnecessary updates.
-Default is on.
+Perform pixel comparison on framebuffer to reduce unnecessary updates. Can
+be either \fB0\fP (off), \fB1\fP (always) or \fB2\fP (auto). Default is
+\fB2\fP.
+.
 .TP
 .B UseSHM
 Use MIT-SHM extension if available.  Using that extension accelerates reading
 the screen.  Default is on.
+.
 .TP
 .B OverlayMode
 Use overlay mode in IRIX or Solaris (does not have effect in other systems).
 This enables system-specific access to complete full-color version of the
 screen (the default X visual often provides 256 colors).  Also, in overlay
 mode, \fBx0vncserver\fP can show correct mouse cursor.  Default is on.
-.TP
-.B UseHardwareJPEG
-Use hardware-accelerated JPEG compressor for video if available.
-\fBx0vncserver\fP can be instructed to treat certain rectangular part of the
-screen as a video area and handle it in a special way for improved
-performance.  If the client supports Tight encoding and JPEG compression,
-such video areas will be sent as JPEG-encoded rectangles.  And if this option
-is on, compression will be hardware-accelerated (currently, supported only in
-SGI/IRIX equipped with appropriate hardware).  Default is on.
+.
 .TP
 .B ZlibLevel
 Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
 Acceptable values are between 0 and 9.  Default is to use the standard
 compression level provided by the \fBzlib\fP(3) compression library.
+.
 .TP
 .B ImprovedHextile
 Use improved compression algorithm for Hextile encoding which achieves better
 compression ratios by the cost of using slightly more CPU time.  Default is
 on.
+.
 .TP
 .B IdleTimeout
 The number of seconds after which an idle VNC connection will be dropped
 (zero means no timeout).  Default is 0.
+.
 .TP
 .B MaxDisconnectionTime
 Terminate when no client has been connected for \fIN\fP seconds.  Default is
 0.
+.
 .TP
 .B MaxConnectionTime
 Terminate when a client has been connected for \fIN\fP seconds.  Default is
 0.
+.
 .TP
 .B MaxIdleTime
 Terminate after \fIN\fP seconds of user inactivity.  Default is 0.
+.
 .TP
 .B ClientWaitTimeMillis
 The number of milliseconds to wait for a client which is no longer
 responding.  Default is 20000.
+.
+.TP
+.B AcceptCutText
+.TQ
+.B SendCutText
+.TQ
+.B MaxCutText
+Currently unused.
+
 .SH SEE ALSO
 .BR Xvnc (1),
 .BR vncpasswd (1),
 .br
 http://www.tigervnc.org/
+
 .SH AUTHOR
-This manual page was written by Constantin Kaplinsky.
+Constantin Kaplinsky and others.
+
+VNC was originally developed by the RealVNC team while at Olivetti
+Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/unix/xserver/hw/vnc/Xvnc.man b/unix/xserver/hw/vnc/Xvnc.man
index 356925d..18957bf 100644
--- a/unix/xserver/hw/vnc/Xvnc.man
+++ b/unix/xserver/hw/vnc/Xvnc.man
@@ -1,4 +1,4 @@
-.TH Xvnc 1 "17 Apr 2006" "TigerVNC" "Virtual Network Computing"
+.TH Xvnc 1 "" "TigerVNC" "Virtual Network Computing"
 .SH NAME
 Xvnc \- the X VNC server 
 .SH SYNOPSIS
@@ -33,38 +33,29 @@
 .TP
 .B \-geometry \fIwidth\fPx\fIheight\fP
 Specify the size of the desktop to be created. Default is 1024x768.
-
+.
 .TP
 .B \-depth \fIdepth\fP
 Specify the pixel depth in bits of the desktop to be created. Default is 24,
 other possible values are 8, 15, and 16 - anything else is likely to cause
 strange behaviour by applications.
-
+.
 .TP
 .B \-pixelformat \fIformat\fP
 Specify pixel format for server to use (BGRnnn or RGBnnn).  The default for
 depth 8 is BGR233 (meaning the most significant two bits represent blue, the
 next three green, and the least significant three represent red), the default
 for depth 16 is RGB565 and for depth 24 is RGB888.
-
+.
 .TP
 .B \-interface \fIIP address\fP or \-i \fIIP address\fP
 Listen on interface. By default Xvnc listens on all available interfaces.
-
-.TP
-.B \-cc 3
-As an alternative to the default TrueColor visual, this allows you to run an
-Xvnc server with a PseudoColor visual (i.e. one which uses a color map or
-palette), which can be useful for running some old X applications which only
-work on such a display.  Values other than 3 (PseudoColor) and 4 (TrueColor)
-for the \-cc option may result in strange behaviour, and PseudoColor desktops
-must be 8 bits deep (i.e. \fB-depth 8\fP).
-
+.
 .TP
 .B \-inetd 
 This significantly changes Xvnc's behaviour so that it can be launched from
 inetd.  See the section below on usage with inetd.
-
+.
 .TP
 .B \-help
 List all the options and parameters
@@ -84,13 +75,13 @@
 .B \-desktop \fIdesktop-name\fP
 Each desktop has a name which may be displayed by the viewer. It defaults to
 "x11".
-
+.
 .TP
 .B \-rfbport \fIport\fP
 Specifies the TCP port on which Xvnc listens for connections from viewers (the
 protocol used in VNC is called RFB - "remote framebuffer").  The default is
 5900 plus the display number.
-
+.
 .TP
 .B \-rfbwait \fItime\fP, \-ClientWaitTimeMillis \fItime\fP
 
@@ -98,7 +89,7 @@
 necessary because Xvnc is single-threaded and sometimes blocks until the viewer
 has finished sending or receiving a message - note that this does not mean an
 update will be aborted after this time.  Default is 20000 (20 seconds).
-
+.
 .TP
 .B \-httpd \fIdirectory\fP
 Run a mini-HTTP server which serves files from the given directory.  Normally
@@ -106,20 +97,20 @@
 with a .vnc extension will have certain substitutions made so that a single
 installation of the Java VNC viewer can be served by separate instances of
 Xvnc.
-
+.
 .TP
 .B \-httpPort \fIport\fP
 Specifies the port on which the mini-HTTP server runs.  Default is 5800 plus
 the display number.
-
+.
 .TP
 .B \-rfbauth \fIpasswd-file\fP, \-PasswordFile \fIpasswd-file\fP
 Specifies the file containing the password used to authenticate viewers.  The
 file is accessed each time a connection comes in, so it can be changed on the
 fly via \fBvncpasswd\fP(1).
-
+.
 .TP
-.B \-deferUpdate \fItime\fP
+.B \-DeferUpdate \fItime\fP
 Xvnc uses a "deferred update" mechanism which enhances performance in many
 cases. After any change to the framebuffer, Xvnc waits for this number of
 milliseconds (default 1) before sending an update to any waiting clients. This
@@ -127,64 +118,139 @@
 update. Setting it to 0 results in the same behaviour as earlier versions of
 Xvnc, where the first change to the framebuffer causes an immediate update to
 any waiting clients.
-
+.
+.TP
+.B \-AlwaysSetDeferUpdateTimer
+Keep delaying sending the screen update to the client(s) each time the
+screen is updated. Otherwise the delay is from the first update. Default
+is off.
+.
 .TP
 .B \-SendCutText
 Send clipboard changes to clients (default is on).  Note that you must also run
 \fBvncconfig\fP(1) to get the clipboard to work.
-
+.
 .TP
 .B \-AcceptCutText
 Accept clipboard updates from clients (default is on).  Note that you must also
 run \fBvncconfig\fP(1) to get the clipboard to work.
-
+.
+.TP
+.B \-MaxCutText \fIbytes\fP
+The maximum size of a clipboard update that will be accepted from a client.
+Default is \fB262144\fP.
+.
 .TP
 .B \-AcceptPointerEvents
 Accept pointer press and release events from clients (default is on).
-
+.
 .TP
 .B \-AcceptKeyEvents
 Accept key press and release events from clients (default is on).
-
+.
 .TP
 .B \-DisconnectClients
 Disconnect existing clients if an incoming connection is non-shared (default is
 on). If \fBDisconnectClients\fP is false, then a new non-shared connection will
 be refused while there is a client active.  When combined with
 \fBNeverShared\fP this means only one client is allowed at a time.
-
+.
 .TP
 .B \-NeverShared
 Never treat incoming connections as shared, regardless of the client-specified
 setting (default is off).
-
+.
 .TP
 .B \-AlwaysShared
 Always treat incoming connections as shared, regardless of the client-specified
 setting (default is off).
-
+.
 .TP
 .B \-Protocol3.3
 Always use protocol version 3.3 for backwards compatibility with badly-behaved
 clients (default is off).
-
+.
 .TP
 .B \-CompareFB
 Perform pixel comparison on framebuffer to reduce unnecessary updates (default
 is on).
-
+.
+.TP
+.B \-ZlibLevel
+Zlib compression level for ZRLE encoding (it does not affect Tight encoding).
+Acceptable values are between 0 and 9.  Default is to use the standard
+compression level provided by the \fBzlib\fP(3) compression library.
+.
+.TP
+.B \-ImprovedHextile
+Use improved compression algorithm for Hextile encoding which achieves better
+compression ratios by the cost of using slightly more CPU time.  Default is
+on.
+.
 .TP
 .B \-SecurityTypes \fIsec-types\fP
-Specify which security schemes to use separated by commas.  At present only
-"None" and "VncAuth" are supported.  The default is "VncAuth" - note that if
-you want a server which does not require a password, you must set this
-parameter to "None".
-
+Specify which security scheme to use for incoming connections.  Valid values
+are a comma separated list of \fBNone\fP, \fBVncAuth\fP, \fBPlain\fP,
+\fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP, \fBX509None\fP, \fBX509Vnc\fP
+and \fBX509Plain\fP. Default is \fBVncAuth,TLSVnc\fP.
+.
+.TP
+.B \-Password \fIpassword\fP
+Obfuscated binary encoding of the password which clients must supply to
+access the server.  Using this parameter is insecure, use \fBPasswordFile\fP
+parameter instead.
+.
+.TP
+.B \-PlainUsers \fIuser-list\fP
+A comma separated list of user names that are allowed to authenticate via
+any of the "Plain" security types (Plain, TLSPlain, etc.). Specify \fB*\fP
+to allow any user to authenticate using this security type. Default is to
+deny all users.
+.
+.TP
+.B \-pam_service \fIname\fP, \-PAMService \fIname\fP
+PAM service name to use when authentication users using any of the "Plain"
+security types. Default is \fBvnc\fP.
+.
+.TP
+.B \-X509Cert \fIpath\fP
+Path to a X509 certificate in PEM format to be used for all X509 based
+security types (X509None, X509Vnc, etc.).
+.
+.TP
+.B \-X509Key \fIpath\fP
+Private key counter part to the certificate given in \fBX509Cert\fP. Must
+also be in PEM format.
+.
+.TP
+.B \-BlacklistThreshold \fIcount\fP
+The number of unauthenticated connection attempts allowed from any individual
+host before that host is black-listed.  Default is 5.
+.
+.TP
+.B \-BlacklistTimeout \fIseconds\fP
+The initial timeout applied when a host is first black-listed.  The host
+cannot re-attempt a connection until the timeout expires.  Default is 10.
+.
 .TP
 .B \-IdleTimeout \fIseconds\fP
 The number of seconds after which an idle VNC connection will be dropped
 (default is 0, which means that idle connections will never be dropped).
-
+.
+.TP
+.B \-MaxDisconnectionTime \fIseconds\fP
+Terminate when no client has been connected for \fIN\fP seconds.  Default is
+0.
+.
+.TP
+.B \-MaxConnectionTime \fIseconds\fP
+Terminate when a client has been connected for \fIN\fP seconds.  Default is
+0.
+.
+.TP
+.B \-MaxIdleTime \fIseconds\fP
+Terminate after \fIN\fP seconds of user inactivity.  Default is 0.
+.
 .TP
 .B \-QueryConnect
 Prompts the user of the desktop to explicitly accept or reject incoming
@@ -195,21 +261,25 @@
 QueryConnect to be supported by the \fBvnc.so\fP(1) module or
 \fBXvnc\fP(1) program.  The \fBx0vncserver\fP(1) program does not require
 \fBvncconfig\fP(1) to be running.
-
+.
+.TP
+.B \-QueryConnectTimeout \fIseconds\fP
+Number of seconds to show the Accept Connection dialog before rejecting the
+connection.  Default is \fB10\fP.
+.
 .TP
 .B \-localhost
 Only allow connections from the same machine. Useful if you use SSH and want to
-stop non-SSH connections from any other hosts. See the guide to using VNC with
-SSH on the web site.
-
+stop non-SSH connections from any other hosts.
+.
 .TP
-.B \-log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
+.B \-Log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
 Configures the debug log settings.  \fIdest\fP can currently be \fBstderr\fP or
 \fBstdout\fP, and \fIlevel\fP is between 0 and 100, 100 meaning most verbose
 output.  \fIlogname\fP is usually \fB*\fP meaning all, but you can target a
 specific source file if you know the name of its "LogWriter".  Default is
 \fB*:stderr:30\fP.
-
+.
 .TP
 .B \-RemapKeys \fImapping
 Sets up a keyboard mapping.
@@ -223,6 +293,13 @@
 is a hexadecimal keysym. For example, to exchange the " and @ symbols you would specify the following:
 .IP "" 10
 RemapKeys=0x22<>0x40
+.
+.TP
+.B \-AvoidShiftNumLock
+Key affected by NumLock often require a fake Shift to be inserted in order
+for the correct symbol to be generated. Turning on this option avoids these
+extra fake Shift events but may result in a slightly different symbol
+(e.g. a Return instead of a keypad Enter).
 
 .SH USAGE WITH INETD
 By configuring the \fBinetd\fP(1) service appropriately, Xvnc can be launched
@@ -280,9 +357,10 @@
 http://www.tigervnc.org
 
 .SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
 
 VNC was originally developed by the RealVNC team while at Olivetti
 Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
diff --git a/vncviewer/OptionsDialog.cxx b/vncviewer/OptionsDialog.cxx
index e21f2dd..b9752aa 100644
--- a/vncviewer/OptionsDialog.cxx
+++ b/vncviewer/OptionsDialog.cxx
@@ -252,8 +252,8 @@
     }
   }
 
-  caInput->value(CSecurityTLS::x509ca);
-  crlInput->value(CSecurityTLS::x509crl);
+  caInput->value(CSecurityTLS::X509CA);
+  crlInput->value(CSecurityTLS::X509CRL);
 
   handleX509(encX509Checkbox, this);
 #endif
@@ -368,8 +368,8 @@
 
   SecurityClient::secTypes.setParam(security.ToString());
 
-  CSecurityTLS::x509ca.setParam(caInput->value());
-  CSecurityTLS::x509crl.setParam(crlInput->value());
+  CSecurityTLS::X509CA.setParam(caInput->value());
+  CSecurityTLS::X509CRL.setParam(crlInput->value());
 #endif
 
   /* Input */
diff --git a/vncviewer/parameters.cxx b/vncviewer/parameters.cxx
index 68ddee1..b7b33b5 100644
--- a/vncviewer/parameters.cxx
+++ b/vncviewer/parameters.cxx
@@ -144,8 +144,8 @@
 
 VoidParameter* parameterArray[] = {
 #ifdef HAVE_GNUTLS
-  &CSecurityTLS::x509ca,
-  &CSecurityTLS::x509crl,
+  &CSecurityTLS::X509CA,
+  &CSecurityTLS::X509CRL,
 #endif // HAVE_GNUTLS
   &SecurityClient::secTypes,
   &dotWhenNoCursor,
diff --git a/vncviewer/vncviewer.man b/vncviewer/vncviewer.man
index f8796da..5dd3b45 100644
--- a/vncviewer/vncviewer.man
+++ b/vncviewer/vncviewer.man
@@ -1,4 +1,4 @@
-.TH vncviewer 1 "05 May 2004" "TigerVNC" "Virtual Network Computing"
+.TH vncviewer 1 "" "TigerVNC" "Virtual Network Computing"
 .SH NAME
 vncviewer \- VNC viewer for X
 .SH SYNOPSIS
@@ -81,9 +81,6 @@
 screen is bigger, you can scroll by bumping the mouse against the edge of the
 screen.
 
-Unfortunately this mode doesn't work completely with all window managers, since
-it breaks the X window management conventions.
-
 .SH OPTIONS (PARAMETERS)
 You can get a list of parameters by giving \fB\-h\fP as a command-line option
 to vncviewer.  Parameters can be turned on with -\fIparam\fP or off with
@@ -99,11 +96,11 @@
 .TP
 .B \-display \fIXdisplay\fP
 Specifies the X display on which the VNC viewer window should appear.
-
+.
 .TP
 .B \-geometry \fIgeometry\fP
 Standard X position and sizing specification.
-
+.
 .TP
 .B \-listen \fI[port]\fP
 Causes vncviewer to listen on the given port (default 5500) for reverse
@@ -111,51 +108,99 @@
 using the 'Add New Client' menu option or the '\-connect' command-line option.
 Xvnc supports reverse connections with a helper program called
 .B vncconfig.
-
+.
 .TP
-.B \-passwd \fIpassword-file\fP
+.B \-SecurityTypes \fIsec-types\fP
+Specify which security schemes to attempt to use when authenticating with
+the server.  Valid values are a comma separated list of \fBNone\fP,
+\fBVncAuth\fP, \fBPlain\fP, \fBTLSNone\fP, \fBTLSVnc\fP, \fBTLSPlain\fP,
+\fBX509None\fP, \fBX509Vnc\fP and \fBX509Plain\fP. Default is to attempt
+every supported scheme. 
+.
+.TP
+.B \-passwd, \-PasswordFile \fIpassword-file\fP
 If you are on a filesystem which gives you access to the password file used by
 the server, you can specify it here to avoid typing it in.  It will usually be
 "~/.vnc/passwd".
-
+.
+.TP
+.B \-X509CA \fIpath\fP
+Path to CA certificate to use when authenticating remote servers using any
+of the X509 security schemes (X509None, X509Vnc, etc.). Must be in PEM
+format. Default is \fB$HOME/.vnc/x509_ca.pem\fP, if it exists.
+.
+.TP
+.B \-X509CRL \fIpath\fP
+Path to certificate revocation list to use in conjunction with
+\fB-X509CA\fP. Must also be in PEM format. Default is
+\fB$HOME/.vnc/x509_crl.pem\fP, if it exists.
+.
 .TP
 .B \-Shared
 When you make a connection to a VNC server, all other existing connections are
 normally closed.  This option requests that they be left open, allowing you to
 share the desktop with someone already using it.
-
+.
 .TP
 .B \-ViewOnly
 Specifies that no keyboard or mouse events should be sent to the server.
 Useful if you want to view a desktop without interfering; often needs to be
 combined with
 .B \-Shared.
-
+.
+.TP
+.B \-AcceptClipboard
+Accept clipboard changes from the server. Default is on.
+.
+.TP
+.B \-SendClipboard
+Send clipboard changes to the server. Default is on.
+.
+.TP
+.B \-SendPrimary
+Send the primary selection and cut buffer to the server as well as the
+clipboard selection. Default is on.
+.
 .TP
 .B \-Maximize
 Maximize viewer window. 
-
+.
 .TP
 .B \-FullScreen
 Start in full-screen mode.
-
+.
+.TP
+.B \-FullScreenAllMonitors
+Use all local monitors and not just the current one when switching to
+full-screen mode.
+.
+.TP
+.B \-FullscreenSystemKeys
+Pass special keys (like Alt+Tab) directly to the server when in full-screen
+mode.
+.
 .TP
 .B \-DesktopSize \fIwidth\fPx\fIheight\fP
 Instead of keeping the existing remote screen size, the client will attempt to
 switch to the specified since when connecting. If the server does not support
 the SetDesktopSize message then the screen will retain the original size.
-
+.
+.TP
+.B \-RemoteResize
+Dynamically resize the remote desktop size as the size of the local client
+window changes. Note that this may not work with all VNC servers.
+.
 .TP
 .B \-AutoSelect
 Use automatic selection of encoding and pixel format (default is on).  Normally
 the viewer tests the speed of the connection to the server and chooses the
 encoding and pixel format appropriately.  Turn it off with \fB-AutoSelect=0\fP.
-
+.
 .TP
 .B \-FullColor, \-FullColour
 Tells the VNC server to send full-color pixels in the best format for this
 display.  This is default. 
-
+.
 .TP
 .B \-LowColorLevel, \-LowColourLevel \fIlevel\fP
 Selects the reduced color level to use on slow links.  \fIlevel\fP can range
@@ -163,40 +208,53 @@
 256 colors. Note that decision if reduced color level is used is made by
 vncviewer. If you would like to force vncviewer to use reduced color level
 use \fB-AutoSelect=0\fP parameter.
-
+.
 .TP
 .B \-PreferredEncoding \fIencoding\fP
 This option specifies the preferred encoding to use from one of "Tight", "ZRLE",
 "hextile" or "raw".
-
+.
 .TP
-.B -UseLocalCursor
-Render the mouse cursor locally if the server supports it (default is on).
-This can make the interactive performance feel much better over slow links.
-
+.B \-NoJpeg
+Disable lossy JPEG compression in Tight encoding. Default is off.
+.
 .TP
-.B \-WMDecorationWidth \fIw\fP, \-WMDecorationHeight \fIh\fP
-The total width and height taken up by window manager decorations.  This is
-used to calculate the maximum size of the VNC viewer window.  Default is
-width 6, height 24.
-
+.B \-QualityLevel \fIlevel\fP
+JPEG quality level. 0 = Low, 9 = High. May be adjusted automatically if
+\fB-AutoSelect\fP is turned on. Default is 8.
+.
 .TP
-.B \-log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
+.B \-CompressLevel \fIlevel\fP
+Use specified lossless compression level. 0 = Low, 6 = High. Default is 2.
+.
+.TP
+.B \-CustomCompressLevel
+Use custom compression level. Default if \fBCompressLevel\fP is specified.
+.
+.TP
+.B \-DotWhenNoCursor
+Show the dot cursor when the server sends an invisible cursor. Default is off.
+.
+.TP
+.B \-PointerEventInterval \fItime\fP
+Time in milliseconds to rate-limit successive pointer events. Default is
+to send events immediately.
+.
+.TP
+.B \-Log \fIlogname\fP:\fIdest\fP:\fIlevel\fP
 Configures the debug log settings.  \fIdest\fP can currently be \fBstderr\fP or
 \fBstdout\fP, and \fIlevel\fP is between 0 and 100, 100 meaning most verbose
 output.  \fIlogname\fP is usually \fB*\fP meaning all, but you can target a
 specific source file if you know the name of its "LogWriter".  Default is
 \fB*:stderr:30\fP.
-
+.
 .TP
 .B \-MenuKey \fIkeysym-name\fP
-This option specifies the key which brings up the popup menu.  The key is
-specified as an X11 keysym name (these can be obtained by removing the XK_
-prefix from the entries in "/usr/include/X11/keysymdef.h" - the currently 
-implemented list is: F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Pause, 
+This option specifies the key which brings up the popup menu. The currently
+supported list is: F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Pause,
 Print, Scroll_Lock, Escape, Insert, Delete, Home, Page_Up, Page_Down).
 Default is F8.
-
+.
 .TP
 \fB\-via\fR \fIgateway\fR
 Automatically create encrypted TCP tunnel to the \fIgateway\fR machine
@@ -214,6 +272,17 @@
 host, the port number on the remote host, and the gateway machine
 respectively.
 
+.SH FILES
+.TP
+$HOME/.vnc/default.tigervnc
+Default configuration options.
+.TP
+$HOME/.vnc/x509_ca.pem
+Default CA certificate for authenticating servers.
+.TP
+$HOME/.vnc/x509_crl.pem
+Default certificate revocation list.
+
 .SH SEE ALSO
 .BR Xvnc (1),
 .BR vncpasswd (1),
@@ -223,9 +292,10 @@
 http://www.tigervnc.org
 
 .SH AUTHOR
-Tristan Richardson, RealVNC Ltd.
+Tristan Richardson, RealVNC Ltd. and others.
 
 VNC was originally developed by the RealVNC team while at Olivetti
 Research Ltd / AT&T Laboratories Cambridge.  TightVNC additions were
-implemented by Constantin Kaplinsky. Many other people participated in
-development, testing and support.
+implemented by Constantin Kaplinsky. Many other people have since
+participated in development, testing and support. This manual is part
+of the TigerVNC software suite.
