x2x

x2x(1)                       General Commands Manual                      x2x(1)



NAME
       x2x - X to X connection

SYNTAX
        x2x  <[-to <DISPLAY>] | [-fromwin | -from <DISPLAY>]> [options...]

DESCRIPTION
       x2x allows the keyboard and mouse on one ("from") X display to be used to
       control another ("to") X display.  Since x2x uses the XTEST extension,
       the "to" X display must support XTEST.

       If x2x is built under Cygwin (on Windows XP or Windows 2000) then the
       -fromwin option may be specified to allow the "from" display to be the
       Windows desktop. (The Cygwin build also supports use of an X display for
       the "from" screen). Use of -fromwin sets the default behaviour as if the
       -big -west -capslockhack options had also been given.

       In the default interface, x2x puts a window on the "from" display.  This
       window is labeled with the name of the "to" display.  Keystrokes typed
       into this window go to the window on the "to" display that has the input
       focus.  Clicking on the x2x window causes the mouse on the "from" display
       to control the cursor on the "to" display.  Performing a subsequent
       multiple button click on the "to" display returns control to the "from"
       display.

       If the -fromwin, -north, -south, -east or -west options are specified on
       the command line, x2x starts up with a different interface.  When the
       mouse moves to the top, bottom, east side or west side of the default
       screen on the "from" display, the cursor slides over to the "to" display.
       When the mouse returns to to side of the "to" display that it entered, it
       slides back onto the "from" display.

       Unless the -nosel option is specified, x2x relays X selections from one
       display to the other. (If -fromwin is specified then the X selection is
       relayed to and from the Windows clipboard as text strings).

       Here are a few hints for eXcursion users (based on Intel version
       2.1.309).  First, use the -big option.  Second, in the control panel,
       under mouse, check the box that enables "Automatically Capture Text on
       Button Up."  X selections will then automatically move into the Windows
       clipboard.  As is the case with all X applications running on 2.1.309
       (including x2x), you will need to do an extra mouse click after
       performing the X selection for this operation to work.  x2x is known to
       work poorly with eXcursion running on Windows 95, probably due to the
       Windows 95 task scheduler.  x2x does work well with eXcursion running on
       Windows NT.

       The hints for eXcursion are also valid for Exceed, with the exception
       that X selections work better, as long as you are using x2x version 1.25
       or later.


OPTIONS
       Either the -to option or the -from option (or both) must be specified.

       -to display

              Indicates the ("to") display that is remotely controlled by the
              "from" display.  Default is equivalent to the default display.

       -from display

              Indicates the ("from") display that remotely controls the "to"
              display.  Default is equivalent to the default display.

       -fromwin

              Available when x2x is built in the Cygwin environment. This option
              indicates the ("from") display should be the Windows desktop. In
              this case the "to" display must be specified with the -to option.
              Setting this option forces -big and sets the default to -west
              -capslockhack

              The -fromwin option works best when Windows is configured for
              focus-follows-mouse also known as X Mouse. This can be set using
              TweakUI for Windows XP (on the Mouse/X-Mouse panel) or the
              XMouse2000 program for Windows 2000. If Windows is set for its
              default behaviour x2x will attempt to get the keyboard and mouse
              focus but may not succeed. (The Windows XP TweakUI has a
              General/Focus option that can be unchecked to allow applications
              to steal the focus.) If it fails the first try, x2x tries quite
              hard to get the focus!

              If the "to" display supports mouse buttons 4 and 5 then mouse
              wheel events on the Windows side are translated to clicks of
              buttons 4 and 5 on the X display. This matches with XFree86
              servers using Option "ZAxisMapping" "4 5".

              A link may be created on the Windows desktop to conveniently
              launch x2x. Assuming cygwin is installed to C:\cygwin and x2x.exe
              is in /usr/X11R6/bin then the link properties should be set to:

              Target:
              C:\cygwin\usr\X11R6\bin\run.exe /usr/X11R6/bin/x2x -fromwin -to somewhere:0.0 -east

              Start In: C:\cygwin\usr\X11R6\bin

              The "Start In" option is important to allow DLLs to be loaded and
              C:\cygwin\bin must be on the Windows PATH to allow other DLLs to
              be loaded. (If either of these are incorrect, launching the
              application tends to silently fail.)

              There are two magic key combinations activated by -fromwin:

              RightAlt-Home: Forces the focus back to Windows without needing
              the mouse to be moved. Useful when some popup window on the
              Windows side grabs the mouse!

              RightAlt-End: Exit x2x

       -north

              Slide off the north side of the "to" display onto the "from"
              display.

       -south

              Slide off the south side of the "to" display onto the "from"
              display.

       -east

              Slide off the east side of the "to" display onto the "from"
              display.

       -west

              Slide off the west side of the "to" display onto the "from"
              display.

       -font fontname

              The font used in the x2x window. (Overridden by -east or -west.)

       -geometry specification

              The X geometry specification for the x2x window.  (Overridden by
              -north, -south, -east or -west.)

       -wait

              Tells x2x to poll the "to" and "from" displays at startup until
              they are ready.  Useful for login scripts.

       -big

              Workaround for a bug in the cursor grab implementations of at
              least one X server.  Put a big window over the "from" display in
              order to force the X server to track the cursor. (This option is
              forced by the -fromwin option).

       -buttonblock

              If this option is enabled with -north, -south, -east or -west, the
              cursor will not slide back onto the "from" display when one or
              more mouse buttons are pressed.

       -buttonmap button# "KeySym ..."

              Map a mouse button to one or more keyboard events on the "to"
              display.  This is useful if you have a mouse with more buttons
              than the remote X server can handle (e.g. a wheel mouse on a PC,
              merged with a Sun/Sparc OpenWindows display).

       -nomouse

              Don't capture the mouse.  (Overridden by -north, -south, -east or
              -west.)

       -nopointermap

              Since x2x uses XTEST, which sends input at a lower level than the
              pointer button mapping, x2x needs to understand the "to" display's
              button mapping and do appropriate conversion.  Use this option to
              turn off the pointer button conversion.

       -nosel

              Don't relay the X selection between displays.

       -noautoup

              Normally, the autoup feature in x2x automatically lifts up all
              keys and mouse buttons when it removes the cursor from the "from"
              display.  Note: the autoup feature changes the state of lock
              functions like Caps Lock.  The state of the lock function may not
              correspond to the state of the keyboard LEDs!  To disable this
              feature, use the -noautoup command line option.

       -resurface

              Ugly hack to work-around window manager ugliness.  The -north,
              -south, -east and -west modes actually put a small window on the
              side of the "from" display.  This option causes this window to
              resurface itself if another window ever obscures it.  This option
              can cause really nasty behavior if another application tries to do
              the same thing.  Useful for login scripts.

       -win-output

              Makes the small window ("trigger window") on the side of the
              "from" display an InputOutput window instead of an InputOnly
              window. Visibility notification events are never generated for
              InputOnly window, therefore -resurface would not work for
              InputOnly window. Use -win-output together with -resurface.

       -win-transparent

              Makes the small window ("trigger window") transparent. Use with
              -win-output option.

       -struts

              Advertise struts in _NET_WM_STRUT

              Once upon a time, the trigger window was a regular window and
              could be arbitrarily stacked. If obscured it would stop working.
              Later the trigger window became a dock, to be treated specially by
              the window manager. The EWMH spec suggests placing docks over all
              other windows... but some window managers place docks below before
              unmapping them. XMonad is one such window manager. In this case we
              would like to advertise struts - reserved space along screen edges
              that is not normally obscured. However this should not happen if
              the dock is already above all windows. And thus the new '-struts'
              settings is born, which uses the '_NET_WM_STRUT' property.

              Note that this is a less hacky alternative to '-resurface'.

       -capslockhack

              Ugly hack to work-around the situation in which the "to" Xserver
              doesn't seem to honor the state of the CapsLock on the "from"
              Xserver. This is the default when the -fromwin option is given
              (although the hack used is slightly less ugly).

       -nocapslockhack

              Disable the -capslockhack behaviour. Used to change the default
              behaviour after the -fromwin option is specified.

       -clipcheck

              Check that clipboard entries are regular strings (XA_STRING)
              before forwarding to Windows. Enabling this is safer but may
              prevent copying with certain setups (eg from emacs under
              KDE/XFree).

       -shadow display

              Also sends mouse movements and keystrokes to this display.  Useful
              for demos.  Amaze your friends: specify multiple shadows.

       -sticky sticky-key

              This option is primarily for "lock" keys like Caps_Lock.  If a
              lock key only seems to work on every other press, try this option.
              The sticky option prevents autoup for the specified key.  Look in
              /usr/include/X11/keysymdef.h for a list of valid names of keys
              (remove the leading XK_).

       -singlesticky

              Some X servers generate both a key down and a key up when a lock
              key is toggled.  Some X servers generate a key down when a lock
              key is activated and a key up only when it is deactivated.  This
              option will allow an X server with the former behavior to control
              one with the latter behavior.  Use this if Caps_Lock lock is
              behaving like shift.

       -label label

              Override the label of the control window (useful when running over
              ssh).  The label is the text displayed within the control window.

       -title title

              Override the title of the control window (useful when running over
              ssh).

       -copyright

              Prints the full copyright for the x2x code.

       -noscale

              This option turns off the mouse scaling.  In some circumstances,
              the remote screen is so different in physical size or resolution
              that the normal mouse scaling applied by x2x distorts the mouse
              movement so much as to be practially unusable.  Note: this is only
              useful if the remote screen is lower resolution than the local
              screen and also causes the remote mouse pointer to warp around
              when it hits the edges.

       -completeregionleft

              Describes leftmost coordinate of complete rectangle region in
              from-display.  If from-display is configured with multiple
              monitors and they have different resolution, few regions that does
              not belongs to any monitor becomes dead space that mouse cannot
              move in.  In the case, the dead space can be mapped to legal
              region of to-display.  If complete region in from-display is
              specified, X2X maps only complete region to to-display and avoid
              the dead, but legal regions.

       -completeregionright

              Describes rightmost coordinate of complete rectangle region in
              from-display.

       -completeregionup

              Describes uppermost coordinate of complete rectangle region in
              from-display.

       -completeregionlow

              Describes lowermost coordinate of complete rectangle region in
              from-display.

EXAMPLES
       Calling the system whose keyboard is to be used "primary" and the other
       system "secondary", you need to specify either -from primary-x-display or
       -to secondary-x-display.  The x2x program can be run on either system.
       The easiest way to maintain security is to tunnel an X connection over
       ssh.  Since x2x can be run on either computer, it can be invoked in
       either of the following ways, where we assume the local display on each
       system is :0.

       run indirectly on secondary:

              primary $ ssh -X secondary x2x -to :0 -east

       run indirectly on primary:

              secondary $ ssh -X primary x2x -from :0 -west

       run directly indirectly on primary:

              primary $ ssh -A secondary env DISPLAY=:0.0 ssh -X primary x2x
              -from :0 -east

       If your primary display is configured with several monitors having
       different resolutions, -completeregion(left|up|right|low) options can be
       helpful.  suppose that you have two monitors connected to the primary
       system and the resolution of the left-side monitor is 300x300 while the
       right-side one is 400x400.  Also, you aligned these two monitors to be
       vertically centric.  Therefore, your primary system has virtually 700x400
       resolution.

       The left monitor covers (0,50,300,350) of the virtual total resolution
       while the right monitor covers (300,0,700,400). The four numbers each
       represent left, top, right, and bottom. Also, you have two dead spaces:
       (0,0,300,50) and (0,350,300,400). Thus, the complete square region for
       this configuration would be (0,50,700,350).

       If no explicit description is provided, the x2x recognizes the virtual
       total resolution (0,0,700,400) only. As a consequence, the dead space
       region cannot be reached in the secondary system.  You can solve this
       problem by teaching x2x that the real complete square region for the
       secondary system (0,50,700,350) using the
       -comptereregion(left|up|right|low) options as below:

              -completeregionleft 0 -completeregionup 50 -completeregionright
              700 -completeregionlow 350


SEE ALSO
       The synergy program ⟨http://synergy-project.org⟩ has similar
       functionality to that of x2x, supports multiple platforms, and when I try
       to use it my X session crashes.

       There is a nice Linux Journal article on x2x ⟨http://
       www.linuxjournal.com/content/share-keyboardmouse-between-multiple-
       computers-x2x⟩.

AUTHOR
       David Chaiken <chaiken@pa.dec.com>
       Mark Hayter (-fromwin code, thanks to the WinVNC sources)
       Addition of -north and -south options by Charles Briscoe-Smith
       <cpbs@debian.org>.
       Current maintaner is Mikhail Gusarov <dottedmag@dottedmag.net>

BUGS
       This software is experimental!  Heaven help you if your network
       connection should go down.  Caveat hacker.  TANSTAAFL.

       The x2x repository and issue tracker ⟨http://github.com/dottedmag/x2x⟩
       has moved to github.

       When using the -fromwin option if the Ctrl-Alt-Del keysequence is used
       while the mouse is forwarded to the X display then the Ctrl and Alt key
       press events are reported to x2x and forwarded but no other key events
       are generated. Thus if the Ctrl-Alt-Del sequence is used to manually lock
       the Windows display when the display is unlocked the mouse will still be
       forwarded to the X screen and the X server will believe Ctrl and Alt are
       still pressed. Pressing and releasing Ctrl and Alt should restore correct
       operation, as should returning the mouse to the Windows display (or using
       the RightAlt-Home magic key sequence).

       If you have trouble with some keys not working, try setting the keymaps
       on both systems to be the same using setxkbmap.  If that's not enough,
       make sure that the output of setxkbmap -query is identical on both
       machines.


LAWYERESE
       Copyright (c) 1997 Digital Equipment Corporation.  All rights reserved.

       By downloading, installing, using, modifying or distributing this
       software, you agree to the following:

       1. CONDITIONS. Subject to the following conditions, you may download,
       install, use, modify and distribute this software in source and binary
       forms:

       a) Any source code, binary code and associated documentation (including
       the online manual) used, modified or distributed must reproduce and
       retain the above copyright notice, this list of conditions and the
       following disclaimer.

       b) No right is granted to use any trade name, trademark or logo of
       Digital Equipment Corporation.  Neither the "Digital Equipment
       Corporation" name nor any trademark or logo of Digital Equipment
       Corporation may be used to endorse or promote products derived from this
       software without the prior written permission of Digital Equipment
       Corporation.

       2.  DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY DIGITAL "AS IS" AND ANY
       EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
       DISCLAIMED.IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY DIRECT, INDIRECT,
       INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
       DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
       THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
       THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       Windows 95 and Windows NT are trademarks of Microsoft Corporation.
       Exceed is a trademark of Hummingbird Communications Ltd.



                                                                          x2x(1)