summaryrefslogtreecommitdiffstats
path: root/x11vnc/help.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/help.c')
-rw-r--r--x11vnc/help.c186
1 files changed, 145 insertions, 41 deletions
diff --git a/x11vnc/help.c b/x11vnc/help.c
index 5eb80cc..c268b3f 100644
--- a/x11vnc/help.c
+++ b/x11vnc/help.c
@@ -848,6 +848,12 @@ void print_help(int mode) {
" Some degree of cooperation from the person at the\n"
" display is assumed. This is intended for remote\n"
" help-desk or educational usage modes.\n"
+"\n"
+" Note: on some recent (12/2010) X servers and/or\n"
+" desktops, -grabkbd no longer works: it prevents the\n"
+" window manager from resizing windows and similar things.\n"
+" Try -ungrabboth below (might not work.)\n"
+"\n"
"-grabptr As -grabkbd, but for the mouse pointer using\n"
" XGrabPointer(3X11). Unfortunately due to the way the X\n"
" server works, the mouse can still be moved around by the\n"
@@ -857,6 +863,11 @@ void print_help(int mode) {
" act on the local user's input. Again, some degree of\n"
" cooperation from the person at the display is assumed.\n"
"\n"
+"-ungrabboth Whenever there is any input (either keyboard or\n"
+" pointer), ungrab *both* the keyboard and the pointer\n"
+" while injecting the synthetic input. This is to allow\n"
+" window managers, etc. a chance to grab.\n"
+"\n"
"-grabalways Apply both -grabkbd and -grabptr even when no VNC\n"
" viewers are connected. If you only want one of them,\n"
" use the -R remote control to turn the other back on,\n"
@@ -1412,6 +1423,15 @@ void print_help(int mode) {
"\n"
" xauth extract - $DISPLAY\"\n"
"\n"
+" NOTE: As specified in the previous paragraph, you can\n"
+" supply your own WAIT:cmd=... program or script, BUT\n"
+" there are two very useful *BUILT-IN* ones: FINDDISPLAY\n"
+" (alias -find above) and FINDCREATEDISPLAY (alias -create\n"
+" above.) Most people use these instead of creating\n"
+" their own script. Read the following (especially the\n"
+" BUILT-IN modes sections) to see how to configure these\n"
+" two useful builtin -display WAIT: modes.\n"
+"\n"
" In the case of -unixpw (and -unixpw_nis only if x11vnc\n"
" is running as root), then the cmd= command is run\n"
" as the user who just authenticated via the login and\n"
@@ -1443,6 +1463,11 @@ void print_help(int mode) {
" your long \"login:\" line press the Up arrow once\n"
" (before typing anything else).\n"
"\n"
+" Most of these colon options only apply to the builtin\n"
+" FINDDISPLAY and FINDCREATEDISPLAY modes, but note\n"
+" that they are passed to the extrenal command in the\n"
+" environment as well and so could be used.\n"
+"\n"
" In the login panel, press F1 to get a list of the\n"
" available options that you can add after the username.\n"
"\n"
@@ -1476,23 +1501,19 @@ void print_help(int mode) {
" and the user put \"geom=1600x1200\" in his\n"
" ~/.x11vnc_create file.\n"
"\n"
-" To troubleshoot the FINDCREATEDISPLAY mechanism,\n"
-" set the following env. var. to an output log file,\n"
-" e.g -env CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt\n"
-"\n"
" To disable the option setting set the environment\n"
" variable X11VNC_NO_UNIXPW_OPTS=1 before starting x11vnc.\n"
" To set any other options, the user can use the gui\n"
" (x11vnc -gui connect) or the remote control method\n"
" (x11vnc -R opt:val) during his VNC session.\n"
"\n"
-" The combination of -display WAIT:cmd=... and -unixpw\n"
-" allows automatic pairing of an unix authenticated VNC\n"
-" user with his desktop. This could be very useful on\n"
-" SunRays and also any system where multiple users share\n"
-" a given machine. The user does not need to remember\n"
-" special ports or passwords set up for his desktop\n"
-" and VNC.\n"
+" So we see the combination of -display WAIT:cmd=... and\n"
+" -unixpw allows automatic pairing of an unix\n"
+" authenticated VNC user with his desktop. This could\n"
+" be very useful on SunRays and also any system where\n"
+" multiple users share a given machine. The user does\n"
+" not need to remember special ports or passwords set up\n"
+" for his desktop and VNC.\n"
"\n"
" A nice way to use WAIT:cmd=... is out of inetd(8)\n"
" (it automatically forks a new x11vnc for each user).\n"
@@ -1504,13 +1525,15 @@ void print_help(int mode) {
" process that will not switch, but it is only encoding\n"
" and decoding the encrypted stream at that point.\n"
"\n"
-" Automatic Finding of User X Sessions:\n"
+" BUILT-IN modes:\n"
+"\n"
+" -- Automatic Finding of User X Sessions --\n"
"\n"
" As a special case, WAIT:cmd=FINDDISPLAY will run a\n"
" script that works on most Unixes to determine a user's\n"
" DISPLAY variable and xauthority data (see who(1)).\n"
"\n"
-" The option \"-find\" is an alias for this mode.\n"
+" NOTE: The option \"-find\" is an alias for this mode.\n"
"\n"
" To have this default script printed to stdout (e.g. for\n"
" customization) run with WAIT:cmd=FINDDISPLAY-print To\n"
@@ -1553,7 +1576,12 @@ void print_help(int mode) {
" X11VNC_SKIP_DISPLAY=all then all display finding fails\n"
" as if you set X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 (below.)\n"
"\n"
-" Automatic Creation of User X Sessions:\n"
+" On some systems lsof(1) can be very slow. Set the\n"
+" env. var. FIND_DISPLAY_NO_LSOF=1 to skip using lsof to\n"
+" try to find the Linux VT the X server is running on.\n"
+" set FIND_DISPLAY_NO_VT_FIND=1 to avoid looking at all.\n"
+"\n"
+" -- Automatic Creation of User X Sessions --\n"
"\n"
" An interesting option is WAIT:cmd=FINDCREATEDISPLAY\n"
" that is like FINDDISPLAY in that is uses the same method\n"
@@ -1562,13 +1590,19 @@ void print_help(int mode) {
" for the user. This is the only time x11vnc tries to\n"
" actually start up an X server.\n"
"\n"
-" The option \"-create\" is an alias for this mode.\n"
+" NOTE: The option \"-create\" is an alias for this mode.\n"
"\n"
" It will start looking for an open display number at :20\n"
" Override via X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n\n"
" By default 80 X displays are allowed (i.e. going to :99)\n"
" Override via X11VNC_CREATE_MAX_DISPLAYS=n\n"
"\n"
+" For its heuristics, the create display script sets\n"
+" LC_ALL=C so that command output is uniform. By default\n"
+" it will try to restore LC_ALL right before starting the\n"
+" user session. However, if you don't mind it keeping\n"
+" LC_ALL=C set the env. var.: X11VNC_CREATE_LC_ALL_C_OK=1\n"
+"\n"
" By default FINDCREATEDISPLAY will try Xvfb and then\n"
" Xdummy:\n"
"\n"
@@ -1595,6 +1629,10 @@ void print_help(int mode) {
" it to terminate (or kill the X server process if all\n"
" else fails).\n"
"\n"
+" To troubleshoot the FINDCREATEDISPLAY mechanism,\n"
+" set the following env. var. to an output log file,\n"
+" e.g -env CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt\n"
+"\n"
" So this is a somewhat odd mode for x11vnc in that it\n"
" will start up and poll virtual X servers! This can\n"
" be used from, say, inetd(8) to provide a means of\n"
@@ -4075,6 +4113,7 @@ void print_help(int mode) {
"-sb time Time in seconds after NO activity (e.g. screen blank)\n"
" to really throttle down the screen polls (i.e. sleep\n"
" for about 1.5 secs). Use 0 to disable. Default: %d\n"
+" Set the env. var. X11VNC_SB_FACTOR to scale it.\n"
"\n"
"-readtimeout n Set LibVNCServer rfbMaxClientWait to n seconds. On\n"
" slow links that take a long time to paint the first\n"
@@ -4520,18 +4559,19 @@ void print_help(int mode) {
" using the 'console_guess' string printed at startup,\n"
" be sure to indicate the snap: method.\n"
"\n"
-" uinput: If the Linux version appears to be 2.6 or\n"
-" later and the \"uinput\" module appears to be present\n"
-" (modprobe uinput), then the uinput method will be used\n"
-" instead of /dev/ttyN. uinput allows insertion of BOTH\n"
-" keystrokes and mouse input and so it preferred when\n"
-" accessing graphical (e.g. QT-embedded) linux console\n"
-" apps. See -pipeinput UINPUT below for more information\n"
-" on this mode; you will have to use -pipeinput if you\n"
-" want to tweak any UINPUT parameters. You may also want\n"
-" to also use the -nodragging and -cursor none options.\n"
-" Use \"console0\", etc or -pipeinput CONSOLE to force\n"
-" the /dev/ttyN method.\n"
+" uinput: If the Linux version appears to be 2.6\n"
+" or later and the \"uinput\" module appears to be\n"
+" present (modprobe uinput), then the uinput method\n"
+" will be used instead of /dev/ttyN. uinput allows\n"
+" insertion of BOTH keystrokes and mouse input and so it\n"
+" preferred when accessing graphical (e.g. QT-embedded)\n"
+" linux console apps. It also provides more accurate\n"
+" keystroke insertion. See -pipeinput UINPUT below for\n"
+" more information on this mode; you will have to use\n"
+" -pipeinput if you want to tweak any UINPUT parameters.\n"
+" You may also want to also use the -nodragging and\n"
+" -cursor none options. Use \"console0\", etc or\n"
+" -pipeinput CONSOLE to force the /dev/ttyN method.\n"
"\n"
" Note you can change the Linux VT remotely using the\n"
" chvt(1) command to make the one you want be the active\n"
@@ -4571,7 +4611,11 @@ void print_help(int mode) {
" to improve performance in the case of many (e.g. >\n"
" 10) simultaneous VNC viewers, and you try a divide\n"
" and conquer scheme to reduce bandwidth and improve\n"
-" responsiveness.\n"
+" responsiveness. (However, another user found this mode\n"
+" useful to export a demo display through a slow link:\n"
+" then multiple demo viewers connected to the reflecting\n"
+" x11vnc on the fast side of the link, and so avoided\n"
+" all of the demo viewers going through the slow link.)\n"
"\n"
" For example, if there will be 64 simultaneous VNC\n"
" viewers this can lead to a lot of redundant VNC traffic\n"
@@ -4602,6 +4646,13 @@ void print_help(int mode) {
" to \"file:path_to_file\" to indicate a file containing\n"
" the password as its first line.\n"
"\n"
+" To set the pixel format that x11vnc requests as a VNC\n"
+" CLIENT set the env. vars: X11VNC_REFLECT_bitsPerSample\n"
+" X11VNC_REFLECT_samplesPerPixel, and\n"
+" X11VNC_REFLECT_bytesPerPixel; the defaults are 8, 3, 4.\n"
+" 2, 3, 1 would give a low color mode. See the function\n"
+" rfbGetClient() in libvncclient for more info.\n"
+"\n"
" The VNC HOST mode implies -shared. Use -noshared as\n"
" a subsequent cmdline option to disable sharing.\n"
"\n"
@@ -4664,7 +4715,8 @@ void print_help(int mode) {
"\n"
" The UINPUT mode currently only does US keyboards (a\n"
" scan code option may be added), and not all keysyms\n"
-" are supported.\n"
+" are supported. But it is probably more accurate than\n"
+" the \"CONSOLE\" method.\n"
"\n"
" You may want to use the options -cursor none and\n"
" -nodragging in this mode.\n"
@@ -4704,16 +4756,6 @@ void print_help(int mode) {
" cause jerkiness or unexpected behavior with menus, etc.\n"
" Use reset=0 to disable.\n"
"\n"
-" If the uinput device has an absolute pointer (as opposed\n"
-" to a normal mouse that is a relative pointer) you can\n"
-" specify the option \"abs\". Note that a touchpad\n"
-" on a laptop is an absolute device to some degree.\n"
-" This (usually) avoids all the problems with mouse\n"
-" acceleration. If x11vnc has trouble deducing the size\n"
-" of the device, use \"abs=WxH\". Furthermore, if the\n"
-" device is a touchscreen (assumed to have an absolute\n"
-" pointer) use \"touch\" or \"touch=WxH\".\n"
-"\n"
" If you set the env. var X11VNC_UINPUT_THRESHOLDS then\n"
" the thresh=n mode will be enabled. It is currently\n"
" not working well. If |dx| <= thresh and |dy| < thresh\n"
@@ -4723,8 +4765,70 @@ void print_help(int mode) {
" Example:\n"
" -pipeinput UINPUT:accel=4.0 -cursor none\n"
"\n"
-" You can also set the env. var X11VNC_UINPUT_DEBUG=1 or\n"
-" higher to get debugging output for UINPUT mode.\n"
+" If the uinput device has an absolute pointer (as opposed\n"
+" to a normal mouse that is a relative pointer) you can\n"
+" specify the option \"abs\". Note that a touchpad\n"
+" on a laptop is an absolute device to some degree.\n"
+" This (usually) avoids all the problems with mouse\n"
+" acceleration. If x11vnc has trouble deducing the\n"
+" size of the device, use \"abs=WxH\". Furthermore,\n"
+" if the device is a touchscreen (assumed to have an\n"
+" absolute pointer) use \"touch\" or \"touch=WxH\".\n"
+" For touchscreens, when a mouse button is pressed,\n"
+" a pressure increase is injected, and when the button\n"
+" is released a pressure of zero is injected.\n"
+"\n"
+" If touch has been set, use \"touch_always=1\" to\n"
+" indicate whenever the mouse moves with no button\n"
+" pressed, a touch event of zero pressure should be\n"
+" sent anyway. Also use \"btn_touch=1\" to indicate a\n"
+" BTN_TOUCH keystroke press or release should be sent\n"
+" instead of a pressure change. Set \"dragskip=n\" to\n"
+" skip n dragged mouse touches (with pressure applied)\n"
+" before injecting one. To indicate the pressure that\n"
+" should be sent when there is a button click for a\n"
+" touchscreen device, specify pressure=n, e.g. n=5. The\n"
+" default is n=1.\n"
+"\n"
+" If a touch screen is being used (\"touch\" above)\n"
+" and it is having its input processed by tslib, you can\n"
+" specify the tslib calibration file via tslib_cal=<file>.\n"
+" For example, tslib_cal=/etc/pointercal. To get accurate\n"
+" or even usable positioning this is required when tslib\n"
+" is in use.\n"
+"\n"
+" The Linux uinput mechanism can be bypassed and one can\n"
+" write input events DIRECTLY to the devices instead.\n"
+" To do this, specify one or more of the following\n"
+" for the input classes: direct_rel=<device>\n"
+" direct_abs=<device> direct_btn=<device> or\n"
+" direct_key=<device>. The <device> file is usually\n"
+" something like /dev/input/event1 but you can specify\n"
+" any device file or pipe. You must specify each one\n"
+" of the above classes even if they correspond to the\n"
+" same device file (rel/abs and btn are often the same.)\n"
+" Look at the file /proc/bus/input/devices to get an idea\n"
+" what is available and the device filenames. Note:\n"
+" The /dev/input/mouse* devices do not seem to work,\n"
+" use the corresponding /dev/input/event* file instead.\n"
+" Any input class not directly specified as above will be\n"
+" handled via the uinput mechanism. To disable creating a\n"
+" uinput device (and thereby discarding unhandled input),\n"
+" specify \"nouinput\".\n"
+"\n"
+" Examples:\n"
+"\n"
+" -pipeinput UINPUT:direct_abs=/dev/input/event1\n"
+"\n"
+" this was used on a qtmoko Neo freerunner (armel):\n"
+"\n"
+" -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal,\n"
+" direct_abs=/dev/input/event1,nouinput,dragskip=4\n"
+"\n"
+" (where the long line has been split into two.)\n"
+"\n"
+" You can set the env. var X11VNC_UINPUT_DEBUG=1 or higher\n"
+" to get debugging output for UINPUT mode.\n"
"\n"
"-macnodim For the native MacOSX server, disable dimming. \n"
"-macnosleep For the native MacOSX server, disable display sleep.\n"