LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.
New in the 0.9.13 x11vnc release: Improved support for non-X11 touchscreen devices (e.g. handheld or cell phone) via Linux uinput input injection. Additional tuning parameters are added. TSLIB touchscreen calibration is supported. Tested on Qtmoko Neo Freerunner. A tool, misc/uinput.pl, is provided to diagnose uinput behavior on new devices. The env. vars. X11VNC_UINPUT_BUS and X11VNC_UINPUT_VERSION are available if leaving them unset does not work. The Linux uinput non-X11 input injection can now be bypassed: events can be directly written to the /dev/input/event devices specified by the user (direct_abs=..., etc.) A -pipeinput input injection helper script, misc/qt_tslib_inject.pl is provided as a tweakable non-builtin direct input injection method. The list of new uinput parameters for the above two features is: pressure, tslib_cal, touch_always, dragskip, btn_touch; direct_rel, direct_abs, direct_btn, direct_key. The MacOSX native server can now use OpenGL for the screen capture (glReadPixels().) In nearly all cases this is faster than the raw framebuffer capture method. Sadly, it appears that MacOSX 10.7 (Lion) has broken or removed OpenGL screen capture support. Set X11VNC_DEBUG_OPENGL=n to print out more debugging info. There are build and run time flags, X11VNC_MACOSX_NO_DEPRECATED, etc. to disable use of deprecated input injection and screen access interfaces. Cursor shape now works for 64bit binaries. The -unixsock and -unixsockonly options enable listening on a unix socket instead of TCP. This can enable interesting tunnelling modes. X11VNC_INETD_NO_DUP=1 to avoid duping stdin. The -inetd option can now work directly with raw stdio as long as the file descriptor is opened O_RDWR; if it is not then x11vnc's internal helper '-enc none' is used. One can specify X11VNC_NO_SET_ENC=1 to disable. The libvncserver bundled with x11vnc can now handle non AF_INET sockets passed to it, and even non socket file descriptors in some cases. The included SSL enabled Java VNC Viewer now handles Mouse Wheel events. miscellaneous new features and changes: In -reflect mode, the libvncclient connection can now have the pixel format modified via the environment variables X11VNC_REFLECT_bitsPerSample, X11VNC_REFLECT_samplesPerPixel, and X11VNC_REFLECT_bytesPerPixel In -reflect mode, allow -reflect listennofork:port to not do client fork when listening (if available.) Same as X11VNC_REFLECT_NO_FORK=1. In -create mode the following environment variables are added to fine tune the behavior: FIND_DISPLAY_NO_LSOF: do not use lsof(1) to try to determine the Linux VT, FIND_DISPLAY_NO_VT_FIND: do not try to determine the Linux VT at all, X11VNC_CREATE_LC_ALL_C_OK: do not bother undoing the setting LC_ALL=C that the create_display script sets. The performance of the -create script has been improved for large installations (100's of user sessions on one machine.) The -tag option allows you to put an arbitrary string on the x11vnc command line, perhaps to identify it later via ps(1) or pgrep(1). In -unixpw mode, one can now Tab from login: to Password. An environment variable, X11VNC_SB_FACTOR, allows one to scale the -sb screenblank sleep time from the default 2 secs. In -rawfb mode, a bug is fixed in setting the number of bits per pixel. Documented that -grabkbd is no longer working with some/most window managers (it can prevent resizing and menu posting.) The macosx deprecated interface GetMainDevice() call is removed. Compile with -DX11VNC_MACOSX_USE_GETMAINDEVICE if needed for an old macosx version... -unixpw check mode '%stdin2' for two line user than passwd. Fix race condition in tkx11vnc gui where the comm file may be deleted before tail opens it. TKX11VNC_SHOW_LSOF=1 for open file info. Clear some query cases. Fix bug with pointer position when -clip and -scale are both specified. Fix bug with mouse cursor shape in -reflect mode on 64-bit machines. X11VNC_DEBUG_REFLECT=1 env. var. Do not use CopyRect in -reflect mode with -clip active. Fix bug that send CopyRect updates to non-CopyRect clients such as VNC2Go. Also correct copyrect events for clients that support copyrect but ask for partial screen updates. See also X11VNC_DEBUG_COPYRECT=1 and X11VNC_FORCE_COPYRECT=1 For testing and workaround with non-Copyrect clients like old VNC2Go set X11VNC_SKIP_cursor_noshape_updates_clients=1 For -allow modes set X11VNC_DEBUG_ACCESS=1 and also X11VNC_ALLOW_FULLMATCH=1. Unix sockets can also be filtered via -allow.