diff options
Diffstat (limited to 'x11vnc/help.c')
-rw-r--r-- | x11vnc/help.c | 186 |
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" |