Updates for Version 1.1.3.

This commit is contained in:
crs 2004-03-28 20:01:16 +00:00
parent 8d0a2fa043
commit 3c29242208
10 changed files with 932 additions and 502 deletions

View File

@ -1,4 +1,6 @@
Synergy Authors
===============
Chris Schoeneman <crs23@bigfoot.com>
Chris Schoeneman <crs23@bigfoot.com> -- creator, maintainer, X11, Win32
Ryan Breen <ryan@ryanbreen.com> -- Mac OS X port
Guido Poschta <moolder@gmx.net> -- Windows installer

49
COPYING
View File

@ -2,14 +2,14 @@ Synergy is copyright (C) 2002 Chris Schoeneman.
Synergy is distributed under the following license.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@ -59,7 +59,7 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@ -258,26 +258,29 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE
IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS

830
ChangeLog
View File

@ -1,3 +1,833 @@
2004/03/28 14:53:01 crs
lib/platform/CXWindowsKeyState.cpp
Added ISO_Level3_Shift as a synonym for Mode_switch. I've no idea
if this will work as hoped but I've seen documentation that XFree
4.3 uses ISO_Level3_Shift rather than Mode_switch.
----------
2004/03/28 14:07:58 crs
lib/platform/CMSWindowsDesks.cpp
lib/platform/CMSWindowsKeyState.cpp
lib/platform/CMSWindowsKeyState.h
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/platform/CSynergyHook.cpp
lib/platform/CSynergyHook.h
lib/synergy/CKeyState.h
Fixed keyboard handling on windows 95 family.
----------
2004/03/28 14:07:37 crs
lib/platform/Makefile.am
Updated makefile to reflect renaming of platform files for win32.
----------
2004/03/28 14:06:40 crs
lib/platform/CMSWindowsScreenSaver.cpp
Fixed windows 95 family screen saver stuff.
----------
2004/03/28 14:05:52 crs
lib/client/CServerProxy.cpp
Changed debug logging of key IDs to use hex.
----------
2004/03/28 14:05:31 crs
cmd/launcher/CAutoStart.cpp
cmd/launcher/launcher.rc
cmd/launcher/resource.h
lib/arch/CArchDaemonWindows.cpp
Fixed bugs in installing per-user startup programs on windows 95
family.
----------
2004/03/26 20:59:26 crs
lib/platform/CMSWindowsDesks.cpp
lib/platform/CMSWindowsDesks.h
lib/platform/CMSWindowsDesktop.cpp
lib/platform/CMSWindowsDesktop.h
lib/platform/CMSWindowsKeyMapper.cpp
lib/platform/CMSWindowsKeyMapper.h
lib/platform/CMSWindowsKeyState.cpp
lib/platform/CMSWindowsKeyState.h
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/platform/CSynergyHook.cpp
lib/platform/CXWindowsKeyState.cpp
lib/platform/CXWindowsKeyState.h
lib/platform/CXWindowsScreen.cpp
lib/platform/CXWindowsScreen.h
lib/platform/platform.dsp
lib/server/CServer.cpp
lib/server/CServer.h
lib/synergy/CKeyState.cpp
lib/synergy/CKeyState.h
lib/synergy/CPlatformScreen.cpp
lib/synergy/CPlatformScreen.h
lib/synergy/CScreen.cpp
lib/synergy/IKeyState.h
lib/synergy/IPlatformScreen.h
lib/synergy/ISecondaryScreen.h
lib/synergy/libsynergy.dsp
Converted win32 to new keyboard state tracking design. Also
changed locking to screen so that keys no longer count (only
mouse buttons and scroll lock toggled on). This is to deal
with the unreliability of key event reporting which can leave
us locked to a screen with no key physically pressed. The
result of this is that clients get key repeats and releases
without the corresponding key press. CKeyState handles this
by discarding repeat/release events on keys it hasn't seen go
down. Also made a few other minor fixes to win32 keyboard
handling.
----------
2004/03/26 20:59:21 crs
lib/arch/CArchMiscWindows.cpp
Fixed handling of reading strings from the registry. This was
broken when support for binary data was added. The terminating
NUL was included in the string as a character (that's in addition
to the terminating NUL added by std::string).
----------
2004/03/21 20:01:41 crs
lib/client/CClient.cpp
lib/platform/CXWindowsKeyMapper.cpp
lib/platform/CXWindowsKeyMapper.h
lib/platform/CXWindowsKeyState.cpp
lib/platform/CXWindowsKeyState.h
lib/platform/CXWindowsScreen.cpp
lib/platform/CXWindowsScreen.h
lib/platform/Makefile.am
lib/server/CPrimaryClient.cpp
lib/synergy/CKeyState.cpp
lib/synergy/CKeyState.h
lib/synergy/CPlatformScreen.cpp
lib/synergy/CPlatformScreen.h
lib/synergy/CScreen.cpp
lib/synergy/CScreen.h
lib/synergy/IKeyState.cpp
lib/synergy/IKeyState.h
lib/synergy/IPlatformScreen.h
lib/synergy/IPrimaryScreen.cpp
lib/synergy/IPrimaryScreen.h
lib/synergy/ISecondaryScreen.h
lib/synergy/Makefile.am
Checkpoint. Converted X11 to new keyboard state tracking design.
This new design is simpler. For keyboard support, clients need only
implement 4 virtual methods on a class derived from CKeyState and
one trivial method in the class derived from CPlatformScreen, which
is now the superclass of platform screens instead of IPlatformScreen.
Keyboard methods have been removed from IPlatformScreen, IPrimaryScreen
and ISecondaryScreen. Also, all keyboard state tracking is now in
exactly one place (the CKeyState subclass) rather than in CScreen,
the platform screen, and the key mapper. Still need to convert Win32.
----------
2004/03/17 20:59:25 crs
lib/platform/CMSWindowsKeyMapper.cpp
lib/platform/CMSWindowsKeyMapper.h
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/synergy/CScreen.cpp
lib/synergy/CScreen.h
lib/synergy/IKeyState.h
lib/synergy/libsynergy.dsp
Updated keyboard handling on win32. Still needs some work to
avoid shadowing key state in multiple places. Also got locked
to screen and reported key appeared to be wrong.
----------
2004/03/14 17:55:53 crs
lib/platform/CXWindowsKeyMapper.cpp
lib/platform/CXWindowsScreen.cpp
lib/platform/CXWindowsScreen.h
lib/synergy/CScreen.cpp
lib/synergy/CScreen.h
lib/synergy/IKeyState.h
lib/synergy/IPlatformScreen.cpp
lib/synergy/IPlatformScreen.h
lib/synergy/IPrimaryScreen.cpp
lib/synergy/IPrimaryScreen.h
lib/synergy/Makefile.am
Changed how key state is tracked on X11. Now updating key state
on every key press and release so we don't have to updateKeys()
in isLockedToScreen(). However, if any key appears to be down
we still call updateKeys() to double check that it's really down.
If not we note the spurious lock and don't lock to the screen.
----------
2004/03/14 17:50:37 crs
lib/io/IStream.h
Fixed doxygen formatting error.
----------
2004/03/13 19:01:27 crs
lib/platform/CMSWindowsScreen.cpp
Improved handling of active window on win32. Synergy no longer
takes activation so the previously active window doesn't pop to
the top of the window stack when it regains activation. One
drawback of this is that the mouse cursor isn't shown when
a window (other than synergy's) is activated. However, synergy
does detect mouse motion as before and shows the cursor when it
sees any.
----------
2004/03/13 18:58:20 crs
lib/platform/CMSWindowsScreen.h
Fixed error in previous submit.
----------
2004/03/13 17:16:24 crs
lib/client/CClient.cpp
lib/client/CClient.h
lib/client/CServerProxy.cpp
lib/client/CServerProxy.h
Fixed handling of handshake complete. Was posting an event for it
but making direct calls for other messages from the server. This
could cause messages to be handled out of order. Now making a
direct call for handshake complete.
----------
2004/03/13 17:14:32 crs
lib/platform/CMSWindowsEventQueueBuffer.cpp
Fixed win32 taskbar icon event handling. Wasn't responding to
messages sent via SendMessage (rather than PostMessage).
----------
2004/03/13 17:13:55 crs
cmd/synergyc/resource.h
cmd/synergyc/synergyc.cpp
cmd/synergys/synergys.cpp
lib/arch/CArchMiscWindows.cpp
lib/arch/CArchMiscWindows.h
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/platform/CMSWindowsScreenSaver.cpp
lib/platform/CMSWindowsScreenSaver.h
Added win32 support for power management.
----------
2004/03/10 22:03:01 crs
configure.in
lib/platform/CXWindowsScreenSaver.cpp
lib/platform/CXWindowsScreenSaver.h
Added support for DPMS in X11 screen saver. DPMS is the extension
that allows you to power down the display. Previously, synergy
would not power on the display if DPMS was enabled and activated
and xscreensaver was not running. It also wouldn't disable DPMS
so the display would power down normally on a synergy client if
there was no input activity.
----------
2004/03/10 20:35:03 crs
acinclude.m4
lib/arch/CArchNetworkBSD.cpp
Added check for inet_aton and a simple implementation for platforms
that are missing it.
----------
2004/03/08 21:18:36 crs
configure.in
lib/platform/CXWindowsKeyMapper.cpp
Removed dependency on X11/XF86keysym.h. There are several versions
of that file in existance, not all of which have all the symbols we
require and none of which provide any convenient means of telling
what groups of symbols they define.
----------
2004/03/08 20:53:32 crs
lib/platform/CMSWindowsKeyMapper.cpp
lib/platform/CMSWindowsKeyMapper.h
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/platform/CSynergyHook.cpp
lib/server/CServer.cpp
Win32 fixes. Fixed slightly off cursor positioning when using
absolute mouse_event(). Improved keyboard handling: now using
keyboard layout of last foreground window when leaving server
so users can meaningfully choose the locale, moved dead key
handling into hook library so there should be no more race
conditions involving the keyboard dead key buffer, simplified
keyboard and cursor handling by using a full screen transparent
window when not using low level hooks, fixed error in restoring
buffered dead key when checking for dead keys. This hopefully
fixes all known keyboard bugs on win32.
----------
2004/03/08 20:45:53 crs
lib/arch/CArchNetworkBSD.cpp
lib/arch/CArchNetworkBSD.h
Typecasting fix to compile on old solaris.
----------
2004/03/06 16:20:08 crs
lib/platform/CXWindowsScreen.cpp
lib/server/CServer.cpp
Server now disables jump zones when scroll lock is active.
----------
2004/02/29 21:34:30 crs
lib/platform/CMSWindowsEventQueueBuffer.cpp
Fixed processing of events. Was waking up on a sent (rather than
posted) message but then blocking in GetMessage() which handles
the sent message directly. No longer blocking on sent messages.
----------
2004/02/29 21:33:20 crs
lib/arch/CArchNetworkWinsock.cpp
Fixed handling of winsock connect event. Was always immediately
indicating socket had connected.
----------
2004/02/29 21:32:00 crs
lib/platform/CMSWindowsScreen.cpp
Fixed cursor hiding on win32. Still fails occassionally.
----------
2004/02/29 21:31:24 crs
cmd/synergys/CMSWindowsServerTaskBarReceiver.cpp
cmd/synergys/resource.h
cmd/synergys/synergys.cpp
cmd/synergys/synergys.rc
Added reload configuration menu item to win32 task bar.
----------
2004/02/29 17:36:32 crs
lib/arch/IArchMultithread.h
Fixed comment.
----------
2004/02/29 17:29:01 crs
lib/arch/CArchMultithreadWindows.h
Switched to doxygen comments.
----------
2004/02/29 17:28:51 crs
lib/client/CClient.cpp
lib/client/CClient.h
lib/server/CClientProxy.cpp
lib/server/CClientProxy.h
lib/server/CServer.cpp
lib/synergy/IScreen.cpp
lib/synergy/IScreen.h
Moved clipboard changed event to CClientProxy because only it
and CServer use it. CServerProxy instead makes a direct call
to CClient, like it does for most other messages.
----------
2004/02/29 16:48:22 crs
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchMultithreadPosix.h
lib/arch/CArchNetworkBSD.cpp
lib/arch/CArchNetworkBSD.h
Fixed BSD unblockPollSocket(). Was signaling to break out of
poll() but there was a race condition where the thread trying
to unblock poll() could send the signal before the polling
thread had entered poll(). Now using a pipe and polling on
that and the client's sockets, and just writing a byte into
the pipe to unblock poll. This persists until the next call
to poll() so we might force poll() to return once unnecessarily
but that's not a problem. This change makes the BSD code
similar to the winsock code, which uses a winsock event instead
of a pipe.
----------
2004/02/29 16:11:17 crs
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchNetworkBSD.cpp
lib/arch/CArchNetworkBSD.h
lib/arch/CArchNetworkWinsock.cpp
lib/arch/CArchNetworkWinsock.h
lib/arch/IArchNetwork.h
lib/arch/XArch.h
lib/net/CTCPListenSocket.cpp
lib/net/CTCPSocket.cpp
Made all arch sockets non-blocking.
----------
2004/02/28 17:51:55 crs
cmd/synergyc/synergyc.cpp
cmd/synergys/synergys.cpp
Enabled running at high priority on windows.
----------
2004/02/28 17:49:29 crs
cmd/synergyc/synergyc.cpp
cmd/synergys/synergys.cpp
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchConsoleWindows.cpp
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchMultithreadPosix.h
lib/arch/CArchMultithreadWindows.cpp
lib/arch/CArchMultithreadWindows.h
lib/arch/IArchMultithread.h
lib/base/CEventQueue.cpp
Generalized signal handling. Now handling SIGHUP in addition
to SIGINT and SIGTERM. Setup SIGHUP to reload the server's
configuration.
----------
2004/02/28 16:06:00 crs
lib/base/CLog.cpp
Fixed incorrect accumulation of newlines in log.
----------
2004/02/28 16:00:54 crs
lib/client/CServerProxy.cpp
Now using first set options message as end of handshake.
----------
2004/02/28 12:30:52 crs
lib/platform/CMSWindowsUtil.cpp
lib/platform/CMSWindowsUtil.h
Added missing files.
----------
2004/02/28 12:24:47 crs
lib/common/Version.cpp
Added missing file.
----------
2004/02/28 12:19:49 crs
acinclude.m4
cmd/launcher/LaunchUtil.cpp
cmd/launcher/launcher.rc
cmd/launcher/resource.h
cmd/synergyc/CMSWindowsClientTaskBarReceiver.cpp
cmd/synergyc/CMSWindowsClientTaskBarReceiver.h
cmd/synergyc/CXWindowsClientTaskBarReceiver.cpp
cmd/synergyc/CXWindowsClientTaskBarReceiver.h
cmd/synergyc/Makefile.am
cmd/synergyc/resource.h
cmd/synergyc/synergyc.cpp
cmd/synergyc/synergyc.rc
cmd/synergys/CMSWindowsServerTaskBarReceiver.cpp
cmd/synergys/CMSWindowsServerTaskBarReceiver.h
cmd/synergys/CXWindowsServerTaskBarReceiver.cpp
cmd/synergys/CXWindowsServerTaskBarReceiver.h
cmd/synergys/Makefile.am
cmd/synergys/resource.h
cmd/synergys/synergys.cpp
cmd/synergys/synergys.rc
configure.in
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchConsoleWindows.cpp
lib/arch/CArchDaemonWindows.cpp
lib/arch/CArchDaemonWindows.h
lib/arch/CArchMiscWindows.cpp
lib/arch/CArchMiscWindows.h
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchMultithreadPosix.h
lib/arch/CArchMultithreadWindows.cpp
lib/arch/CArchMultithreadWindows.h
lib/arch/CArchNetworkBSD.cpp
lib/arch/CArchNetworkBSD.h
lib/arch/CArchNetworkWinsock.cpp
lib/arch/CArchNetworkWinsock.h
lib/arch/CArchTaskBarWindows.cpp
lib/arch/CArchTaskBarWindows.h
lib/arch/IArchMultithread.h
lib/arch/IArchNetwork.h
lib/arch/arch.dsp
lib/base/CEventQueue.cpp
lib/base/CPriorityQueue.h
lib/base/CSimpleEventQueueBuffer.cpp
lib/client/CServerProxy.cpp
lib/client/CServerProxy.h
lib/common/Makefile.am
lib/common/Version.h
lib/common/common.dsp
lib/mt/CThread.cpp
lib/mt/CThread.h
lib/net/CSocketMultiplexer.cpp
lib/net/IDataSocket.cpp
lib/net/IDataSocket.h
lib/platform/CMSWindowsDesktop.h
lib/platform/CMSWindowsEventQueueBuffer.cpp
lib/platform/CMSWindowsEventQueueBuffer.h
lib/platform/CMSWindowsKeyMapper.cpp
lib/platform/CMSWindowsScreen.cpp
lib/platform/CMSWindowsScreen.h
lib/platform/CSynergyHook.cpp
lib/platform/CSynergyHook.h
lib/platform/CXWindowsClipboard.cpp
lib/platform/CXWindowsEventQueueBuffer.cpp
lib/platform/CXWindowsKeyMapper.cpp
lib/platform/CXWindowsScreen.cpp
lib/platform/Makefile.am
lib/platform/platform.dsp
lib/server/CClientListener.cpp
lib/server/CServer.cpp
lib/synergy/CProtocolUtil.cpp
lib/synergy/CProtocolUtil.h
lib/synergy/CScreen.cpp
lib/synergy/IScreen.h
Merged Win32 updates. Added full warnings on g++. Fixed bug in
client when handling server rejection.
----------
2004/02/15 18:12:35 crs
lib/base/CFunctionEventJob.cpp
lib/base/CJobList.cpp
lib/base/CJobList.h
lib/base/Makefile.am
lib/base/base.dsp
lib/io/io.dsp
lib/mt/CTimerThread.cpp
lib/mt/CTimerThread.h
lib/mt/Makefile.am
lib/mt/mt.dsp
lib/net/net.dsp
lib/platform/CMSWindowsEventQueueBuffer.cpp
lib/platform/CMSWindowsEventQueueBuffer.h
lib/platform/Makefile.am
lib/platform/platform.dsp
lib/server/server.dsp
lib/synergy/libsynergy.dsp
Updated Makefiles and win32 projects and removed dead classes.
----------
2004/02/15 17:32:11 crs
cmd/synergyc/CClientTaskBarReceiver.cpp
cmd/synergyc/CClientTaskBarReceiver.h
cmd/synergyc/CXWindowsClientTaskBarReceiver.cpp
cmd/synergyc/CXWindowsClientTaskBarReceiver.h
cmd/synergyc/synergyc.cpp
cmd/synergys/CServerTaskBarReceiver.cpp
cmd/synergys/synergys.cpp
lib/arch/CArchNetworkBSD.cpp
lib/arch/XArch.h
lib/base/CEvent.cpp
lib/base/CEvent.h
lib/client/CClient.cpp
lib/client/CClient.h
lib/client/CServerProxy.cpp
lib/client/CServerProxy.h
lib/io/CStreamFilter.cpp
lib/net/CNetworkAddress.cpp
lib/net/CTCPListenSocket.cpp
lib/net/CTCPSocket.cpp
lib/net/CTCPSocket.h
lib/net/IDataSocket.h
lib/net/XSocket.cpp
lib/net/XSocket.h
lib/platform/CXWindowsScreen.cpp
lib/platform/CXWindowsScreen.h
lib/server/CClientProxy.h
lib/server/CClientProxy1_0.cpp
lib/server/CClientProxy1_0.h
lib/server/CConfig.cpp
lib/server/CPrimaryClient.cpp
lib/server/CPrimaryClient.h
lib/server/CServer.cpp
lib/synergy/CClipboard.cpp
lib/synergy/CClipboard.h
lib/synergy/CPacketStreamFilter.cpp
lib/synergy/IClient.h
lib/synergy/IClipboard.cpp
lib/synergy/IClipboard.h
lib/synergy/IPlatformScreen.cpp
lib/synergy/IPlatformScreen.h
lib/synergy/Makefile.am
lib/synergy/ProtocolTypes.h
Checkpoint. Conversion to event driven system complete for Unix.
Still need to convert win32 platform specific files.
----------
2004/02/14 16:30:27 crs
cmd/synergys/CServerTaskBarReceiver.cpp
cmd/synergys/synergys.cpp
lib/server/CPrimaryClient.cpp
lib/server/CPrimaryClient.h
Minor cleanup.
----------
2004/02/14 14:04:36 crs
cmd/synergys/CServerTaskBarReceiver.cpp
cmd/synergys/CServerTaskBarReceiver.h
cmd/synergys/CXWindowsServerTaskBarReceiver.cpp
cmd/synergys/CXWindowsServerTaskBarReceiver.h
cmd/synergys/Makefile.am
cmd/synergys/synergys.cpp
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchNetworkBSD.cpp
lib/arch/CArchNetworkBSD.h
lib/arch/IArchNetwork.h
lib/arch/vsnprintf.cpp
lib/base/CEvent.cpp
lib/base/CEvent.h
lib/base/CEventQueue.cpp
lib/base/CEventQueue.h
lib/base/CSimpleEventQueueBuffer.cpp
lib/base/CSimpleEventQueueBuffer.h
lib/base/CStringUtil.cpp
lib/base/IEventQueue.h
lib/base/IEventQueueBuffer.h
lib/io/IStream.cpp
lib/net/CNetworkAddress.cpp
lib/net/CNetworkAddress.h
lib/net/CSocketMultiplexer.cpp
lib/net/CTCPListenSocket.cpp
lib/net/CTCPSocket.cpp
lib/net/IDataSocket.cpp
lib/net/IListenSocket.cpp
lib/net/ISocket.cpp
lib/platform/CXWindowsEventQueue.cpp
lib/platform/CXWindowsEventQueue.h
lib/platform/CXWindowsEventQueueBuffer.cpp
lib/platform/CXWindowsEventQueueBuffer.h
lib/platform/CXWindowsScreen.cpp
lib/platform/CXWindowsScreen.h
lib/platform/CXWindowsScreenSaver.cpp
lib/platform/CXWindowsScreenSaver.h
lib/platform/Makefile.am
lib/server/CClientListener.cpp
lib/server/CClientListener.h
lib/server/CClientProxy.cpp
lib/server/CClientProxy.h
lib/server/CClientProxy1_0.cpp
lib/server/CClientProxy1_0.h
lib/server/CClientProxy1_1.cpp
lib/server/CClientProxy1_1.h
lib/server/CClientProxyUnknown.cpp
lib/server/CClientProxyUnknown.h
lib/server/CConfig.cpp
lib/server/CPrimaryClient.cpp
lib/server/CPrimaryClient.h
lib/server/CServer.cpp
lib/server/CServer.h
lib/server/Makefile.am
lib/synergy/CProtocolUtil.cpp
lib/synergy/CScreen.cpp
lib/synergy/CScreen.h
lib/synergy/IClient.h
lib/synergy/IPlatformScreen.cpp
lib/synergy/IPlatformScreen.h
lib/synergy/IPrimaryScreen.h
lib/synergy/IPrimaryScreenReceiver.h
lib/synergy/IScreen.cpp
lib/synergy/IScreen.h
lib/synergy/IScreenFactory.h
lib/synergy/IScreenReceiver.h
lib/synergy/IScreenSaver.h
lib/synergy/IServer.h
lib/synergy/Makefile.am
Checkpoint. synergys now works. Still need to do lib/client and
synergyc.
----------
2004/02/08 17:07:11 crs
lib/base/CEventQueue.cpp
lib/base/CEventQueue.h
lib/base/CSimpleEventQueue.cpp
lib/base/CSimpleEventQueue.h
lib/base/IEventQueue.h
lib/base/Makefile.am
Refactored event queue. The event queue is now separated from the
buffer that holds the events and generates system events. This
allows us to switch in/out a platform specific event handler as
necessary without losing our timers and handlers.
----------
2004/02/08 16:51:45 crs
lib/net/CTCPSocket.cpp
No longer sending incorrect disconnect events in read() and
removed redundant sending of disconnect event in close().
----------
2004/02/01 21:09:22 crs
cmd/synergys/synergys.cpp
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchMultithreadPosix.h
lib/arch/CArchNetworkBSD.cpp
lib/arch/IArchMultithread.h
lib/arch/XArch.h
lib/base/CEventQueue.cpp
lib/base/CEventQueue.h
lib/base/IEventQueue.cpp
lib/base/IEventQueue.h
lib/base/Makefile.am
lib/io/CBufferedInputStream.cpp
lib/io/CBufferedInputStream.h
lib/io/CBufferedOutputStream.cpp
lib/io/CBufferedOutputStream.h
lib/io/CInputStreamFilter.cpp
lib/io/CInputStreamFilter.h
lib/io/COutputStreamFilter.cpp
lib/io/COutputStreamFilter.h
lib/io/CStreamFilter.cpp
lib/io/CStreamFilter.h
lib/io/IInputStream.h
lib/io/IOutputStream.h
lib/io/IStream.cpp
lib/io/IStream.h
lib/io/IStreamFilterFactory.h
lib/io/Makefile.am
lib/io/XIO.cpp
lib/io/XIO.h
lib/net/CSocketMultiplexer.cpp
lib/net/CSocketMultiplexer.h
lib/net/CTCPListenSocket.cpp
lib/net/CTCPListenSocket.h
lib/net/CTCPSocket.cpp
lib/net/CTCPSocket.h
lib/net/IDataSocket.cpp
lib/net/IDataSocket.h
lib/net/IListenSocket.h
lib/net/ISocket.h
lib/net/ISocketMultiplexerJob.h
lib/net/Makefile.am
lib/net/TSocketMultiplexerMethodJob.h
lib/server/CClientProxy.cpp
lib/server/CClientProxy.h
lib/server/CClientProxy1_0.cpp
lib/server/CClientProxy1_0.h
lib/server/CClientProxy1_1.cpp
lib/server/CClientProxy1_1.h
lib/server/CConfig.cpp
lib/server/CConfig.h
lib/server/CHTTPServer.cpp
lib/server/CHTTPServer.h
lib/server/CServer.cpp
lib/server/CServer.h
lib/server/Makefile.am
lib/synergy/CInputPacketStream.cpp
lib/synergy/CInputPacketStream.h
lib/synergy/COutputPacketStream.cpp
lib/synergy/COutputPacketStream.h
lib/synergy/CPacketStreamFilter.cpp
lib/synergy/CPacketStreamFilter.h
lib/synergy/CProtocolUtil.cpp
lib/synergy/CProtocolUtil.h
lib/synergy/Makefile.am
Checkpoint. Code does not run. Still converting over to new
event loop model. Streams, stream filters, and sockets are
converted. Client proxies are almost converted. CServer is
in progress. Removed all HTTP code. Haven't converted the
necessary win32 arch stuff.
----------
2004/02/01 20:56:52 crs
cmd/launcher/launcher.dsp
cmd/synergys/Makefile.am
cmd/synergys/synergys.dsp
configure.in
lib/Makefile.am
lib/http/CHTTPProtocol.cpp
lib/http/CHTTPProtocol.h
lib/http/Makefile.am
lib/http/XHTTP.cpp
lib/http/XHTTP.h
lib/http/http.dsp
lib/server/server.dsp
synergy.dsw
Removed most HTTP stuff. It doesn't seem like the appropriate
choice for server control. May later provide some other means
for controlling the synergy server remotely.
----------
2004/01/24 16:09:25 crs
lib/arch/CArch.cpp
lib/arch/CArch.h
lib/arch/CArchMultithreadPosix.cpp
lib/arch/CArchMultithreadPosix.h
lib/arch/CArchNetworkBSD.cpp
lib/arch/IArchMultithread.h
lib/base/CEvent.cpp
lib/base/CEvent.h
lib/base/CEventQueue.cpp
lib/base/CEventQueue.h
lib/base/CFunctionEventJob.cpp
lib/base/CFunctionEventJob.h
lib/base/CLog.cpp
lib/base/CPriorityQueue.h
lib/base/CSimpleEventQueue.cpp
lib/base/CSimpleEventQueue.h
lib/base/IEventJob.h
lib/base/IEventQueue.h
lib/base/Makefile.am
lib/base/TMethodEventJob.h
lib/io/CBufferedInputStream.cpp
lib/io/CBufferedInputStream.h
lib/io/CBufferedOutputStream.cpp
lib/io/CBufferedOutputStream.h
lib/mt/CThread.cpp
lib/mt/CThread.h
lib/net/CTCPListenSocket.cpp
lib/net/CTCPListenSocket.h
lib/net/CTCPSocket.cpp
lib/net/CTCPSocket.h
lib/net/IDataSocket.cpp
lib/net/IDataSocket.h
lib/net/IListenSocket.cpp
lib/net/IListenSocket.h
lib/net/ISocket.cpp
lib/net/ISocket.h
lib/net/Makefile.am
lib/platform/CXWindowsEventQueue.cpp
lib/platform/CXWindowsEventQueue.h
lib/platform/Makefile.am
Checkpointing centralized event queue stuff. Currently have:
an event queue and events, TCP sockets converted to use events,
unix multithreading and network stuff converted, and an X Windows
event queue subclass.
----------
2003/07/19 17:22:06 crs
cmd/launcher/launcher.cpp
cmd/launcher/launcher.rc

32
FAQ
View File

@ -12,12 +12,13 @@ Questions
7. Why do my CapsLock and NumLock keys act funny?
8. Can synergy share the display in addition to the mouse and keyboard?
9. Can synergy do drag and drop between computers?
10. Do AltGr or Mode-Switch work?
10. Do AltGr or Mode-Switch or ISO_Level3_Shift work?
11. Why isn't synergy ported to platform XYZ?
12. My client can't connect. What's wrong?
13. Linking fails on Solaris. What's wrong?
14. The screen saver never starts. Why not?
15. I can't switch screens anymore for no apparent reason. Why?
16. I get the error 'Xlib: No protocol specified'. Why?
Answers
-------
@ -126,13 +127,14 @@ Answers
No. That's a very cool idea and it'll be explored. However, it's
also clearly difficult and may take a long time to implement.
10. Does AltGr/Mode-Switch work?
10. Does AltGr/Mode-Switch/ISO_Level3_Shift work?
Yes, as of 1.0.12 synergy has full support for AltGr/Mode-switch.
That includes support for most (all?) European keyboard layouts.
All systems should be using the same keyboard layout, though, for
all characters to work. (Any character missing from a client's
layout cannot be generated by synergy.)
layout cannot be generated by synergy.) There is experimental
support for ISO_Level3_Shift in 1.1.3.
11. Why isn't synergy ported to platform XYZ?
@ -169,19 +171,13 @@ Answers
15. I can't switch screens anymore for no apparent reason. Why?
This sometimes happens but all the causes aren't yet known. One
known cause is if the synergy server in running on Windows
95/98/Me and a 16-bit application is in the foreground when the
screen saver starts. Windows fails to notify synergy that the
screen saver has started in this situation (which is a bug in
Windows, not synergy) and synergy may intercept some keyboard
input and divert it to a client when the screen saver is running.
As a result, it's possible for the server system to believe a key
is pressed when it really isn't. Typically, it's the return key
and simply tapping it will allow synergy to switch screens again.
This should not happen with 1.1.3 and up. Earlier versions of
synergy would not allow switching screens when a key was down and
sometimes it would believe a key was down when it was not.
If this problem happens to you, try tapping the enter key to see
if that solves the problem. If not, you can try running with
debug logging (--debug DEBUG) and synergy will report exactly why
it refuses to switch screens. If it claims a key is down then
try tapping that key and see if that solves the problem.
16. I get the error 'Xlib: No protocol specified'. Why?
You're running synergy without authorization to connect to the
X display. Typically the reason is running synergy as root when
logged in as non-root. Just run synergy as the same user that's
logged in.

20
INSTALL
View File

@ -58,10 +58,14 @@ Installing
----------
Windows:
There is no support for creating an installer for synergy or installing
the files in a particular location. Instead, just copy the following
files from the Debug or Release directory to a directory you choose
(perhaps under the Program Files directory):
You'll need NSIS, the Nullsoft Scriptable Install System, available
from http://nsis.sourceforge.net/. Build `All - Release' then build
'Installer - Release'. This creates SynergyInstaller.exe in the top
level directory. Run this to install.
Alternatively, you can simply copy the following files from the Debug
or Release directory to a directory you choose (perhaps under the
Program Files directory):
* synergy.exe
* synergyc.exe
@ -90,7 +94,7 @@ First configure the server. Click the `Server' radio button
* Click the `Server' radio button
* Click `Add' to add the server to the `Screens' list
* Enter the name of server (the computer name is recommended)
* Enter the name of server (the computer's name is recommended)
* Enter other names the server is known by
* Click OK
* Use `Add' to add your other computers
@ -403,6 +407,12 @@ the problem. Here are typical problems and possible solutions:
program using that port (24800) and restart the
server.
If you get the error "Xlib: No protocol specified" you're probably
running synergy as root while logged in as another user. X11 may
prevent this for security reasons. Either run synergy as the same
user that's logged in or (not recommended) use 'xhost +' to allow
anyone to connect to the display.
Once all the clients are running, try moving the mouse to each
screen. Be sure to check all the configured links.

24
NEWS
View File

@ -1,6 +1,30 @@
Synergy News
============
* Mar-28-2004 - Synergy 1.1.3 released
Made following changes:
* Major code refactoring; reduced use of threads, added event queue
* Removed unused HTTP support code
* No longer interfering with mouse when scroll lock is toggled on
* Fixed minor mispositioning of mouse on win32
* Unix portability fixes
* Added support for power management
* Improved keyboard handling and bug fixes
* Fixed dead key handling
Note: the tray icon on windows is known to not work correctly when
running the synergy server on Windows 95/95/Me.
* Aug-24-2003 - Synergy 1.0.14 released
Made following changes:
* Fixed bugs in setting win32 process/thread priority
* Fixed resource leak in opening win32 system log
* Fixed win32 launcher not getting non-default advanced options
* Synergy log copied to clipboard now transferred to other screens
* Hack to work around lesstif clipboard removed (fixes pasting on X)
* Jul-20-2003 - Synergy 1.0.12 released
This release finally completes support for non-ASCII characters,

22
PORTING
View File

@ -15,6 +15,7 @@ cmd -- program source code
synergys -- synergy server
config -- stuff for autoconf/automake
dist -- files for creating distributions
nullsoft -- files for creating Nullsoft NSIS installer (Windows)
rpm -- files for creating RPMs
doc -- placeholder for documentation
examples -- example files
@ -23,7 +24,6 @@ lib -- library source code
base -- simple utilities
client -- synergy client library
common -- commonly needed header files
http -- simple http tools
io -- I/O
mt -- multithreading
net -- networking
@ -358,8 +358,8 @@ file and make calls directly, surrounded by a suitable #ifdef/#endif.
Implementing lib/platform:
Most of the remaining platform dependent code lives in lib/platform.
The code there implements platform dependent window, clipboard, and
screen saver handling. If a platform is named XXX then the following
The code there implements platform dependent window, clipboard, keyboard
and screen saver handling. If a platform is named XXX then the following
classes should be derived and implemented:
* CXXXClipboard : IClipboard
@ -367,16 +367,16 @@ classes should be derived and implemented:
have helper classes for converting between various clipboard
data formats.
* CXXXScreen : IScreen
Provide screen operations common to the server and clients.
The CXXXPrimaryScreen and CXXXSecondaryScreen classes use a
CXXXScreen.
* CXXXEventQueueBuffer : IEventQueueBuffer
Provides operations for waiting for, posting and retrieving events.
Also provides operations for creating and deleting timers.
* CXXXPrimaryScreen : CPrimaryScreen, IScreenEventHandler
Provides server screen operations.
* CXXXKeyState : CKeyState
Provides operations for synthesizing key events and for mapping a
key ID to a sequence of events to generate that key.
* CXXXSecondaryScreen : CSecondaryScreen, IScreenEventHandler
Provides client screen operations.
* CXXXScreen : IScreen, IPrimaryScreen, ISecondaryScreen, IPlatformScreen
Provides screen operations.
* CXXXScreenSaver : IScreenSaver
Provides screen saver operations.

14
README
View File

@ -48,7 +48,7 @@ System Requirements
mouse,
TCP/IP networking;
* Microsoft Windows 95, Windows 98, Windows Me (the Windows 96 family);
* Microsoft Windows 95, Windows 98, Windows Me (the Windows 95 family);
* Microsoft Windows NT, Windows 2000, Windows XP (the Windows NT family);
@ -85,11 +85,9 @@ choices. The Windows version provides a convenient GUI for
configuration.
Second, you install the software. Choose the appropriate package
and install it. On Windows you should unzip the files into the
`Program Files' directory; all the files will be put into a new
directory named `Synergy' under `Program Files'. You must install
the software on all the computers that will share the mouse and
keyboard.
and install it. On Windows you should run SynergyInstaller. You
must install the software on all the computers that will share the
mouse and keyboard.
Third, you configure and start the server.
Windows
@ -99,7 +97,7 @@ Third, you configure and start the server.
* Click the `Server' radio button
* Click `Add' to add the server to the `Screens' list
* Enter the name of server (the computer name is recommended)
* Enter the name of server (the computer's name is recommended)
* Enter other names the server is known by
* Click OK
* Use `Add' to add your other computers
@ -220,8 +218,6 @@ Tips and Tricks
a screen to itself then moving off the left of the screen would put
the mouse at the right of the screen and vice versa.
* You cannot switch screens when a key or mouse button is pressed.
* You cannot switch screens when the scroll lock it toggled on. Use
this to prevent unintentional switching.

10
TODO
View File

@ -18,16 +18,12 @@ Things to do to synergy, in no particular order:
* Port to other platforms
Most desired is MacOS X.
Most desired is MacOS X. Ryan Breen has a partial port to Mac OS X.
Only the client is ported and there is no clipboard or screen saver
support. It's available from http://www.ryanbreen.com/synergy.
* Write man/html pages
* Provide a win32 installer/uninstaller
Synergy doesn't have any special needs so even just unzipping is
satisfactory, but a proper installer would be nice. And, more
importantly, it should provide an uninstaller.
* Add more clipboard formats
Synergy currently supports only text on the clipboard. It should

View File

@ -1,427 +0,0 @@
synergy
-------
synergy: [noun] a mutually advantageous conjunction of distinct elements
synergy lets you easily share a single mouse and keyboard between
multiple computers, each with its own display, using software only.
redirecting the mouse and keyboard is as simple as moving the mouse
off the edge of your screen. synergy merges the clipboards of all
the systems into one, allowing cut-and-paste between systems. it
also synchronizes screensavers so they all start and stop together
and, if screen locking is enabled, only one screen requires a
password to unlock them all.
system requirements
-------------------
all systems:
keyboard
mouse
TCP/IP networking
Microsoft Windows 95, Windows 98, Windows Me (the Windows 95 family):
??? MB RAM
Microsoft Windows NT, Windows 2000, Windows XP (the Windows NT family):
??? MB RAM
Linux, Unix:
??? MB RAM
X Windows, revision 4 or up with the XTEST extension
use `xdpyinfo | grep XTEST' to check
manifest
--------
linux windows
----- -------
README README this file
synergy synergy.exe the synergy client
synergyd synergyd.exe the synergy server
synrgyhk.dll the synergy hook dll
synergy.conf synergy.conf sample configuration file
running synergy
---------------
synergy is simple to configure. the server uses a configuration file
and command line options while the client uses only command line
options. it's recommended that both the client and server be run in
the foreground until the configuration is verified to work.
step 1: create a configuration file
edit the sample configuration file. there are two sections you
must fill in and a third optional section. you should delete
the existing lines inside the sections.
in the "screens" section, add a line for each computer you'll
be using (server and clients). put the hostname of the computer
followed by a colon (with no space in between). the computers
can be listed in any order.
in the "links" section you define how screens are connected.
each screen is listed as in the "screens" section except
following each screen is a list of links to other screens in
the form "<direction> = <screen>" where <direction> is "left",
"right", "up", or "down" and <screen> is a screen listed in
the "screens" section.
as an example, if we have "left=foo" under the "bar" screen
then screen "foo" is on the left of screen "bar". the user
will be able to move the mouse off the left edge of "foo" and
will appear on the opposite (right) edge of "bar". note that
it's entirely possible to have one-way (asymmetric) links and
screens with only links into them. the latter should be
avoided since there's no way to move the mouse off those
screens.
in the "aliases" section you can list other names for each
screen. this is especially useful for dealing with fully
qualified domain names versus simple hostnames.
step 2: start the server
the server is the system with the mouse and keyboard to be
shared. each platform has its own tradeoffs when running as
the server. see the release notes below for more information.
run the synergy server on the server system using the following
command line:
synergyd -f --config <config-pathname>
replacing <config-pathname> with the path to the configuration
file. you can use `synergyd --help' for a list of command line
options.
step 3: start the clients
on each client system start the synergy client using the
following command line:
synergy -f --debug INFO --no-camp <server-hostname>
replacing <server-hostname> with the hostname or address of the
server system.
the client should quickly report `connected to server'. if it
does not but doesn't print an error and exit immeditately then
it's trying to connect to the server but cannot. it will time
out in 30 seconds and exit (use ctrl+c to exit earlier). you
should check that the server is running and try again.
otherwise, if the client doesn't connect it should print an
error describing the problem. here are typical problems and
possible solutions:
failed to open screen:
check permission to open the X display;
check that the DISPLAY environment variable is set.
already connected:
check that synergy isn't already running.
refused client:
add client to the server's configuration file.
connection failed:
check server-hostname;
the server cannot open the desired port, stop the
program using that port (24800) and restart the
server.
step 4: verify the configuration
once the clients are connected, use the mouse to check that
the screens are properly linked. moving the mouse off the
edge of a screen with a link should cause it to appear on
the opposite edge of the linked-to screen.
using synergy
-------------
using synergy is very easy. once clients have connected to the
server all you do to redirect keyboard and mouse input to a screen
(i.e. switch screens) is move the mouse cursor off the edge of the
screen you're on. which edges go to which screens depends on the
configuration.
clients can be connected and disconnected at any time. until a
client is connected, switching to it works as if you switched to
it then moved all the way across it in the same direction and
switched to the next screen. this repeats until you reach a
connected screen. if there is no connected screen in that
direction then the mouse will not leave the starting screen.
disconnecting a client while the mouse is on it causes the mouse
to instantly jump to the center of the server screen.
the clipboard is automatically transferred between screens. if
you copy on one screen you just switch to another screen and paste.
note that X Windows has two major clipboards: the primary
selection and the clipboard. synergy supports both. however,
Microsoft Windows only supports the clipboard. the Windows
clipboard is transferred to both the X primary selection and the
clipboard. whichever X clipboard was changed last becomes the
Windows clipboard. end-of-line sequences (LF on linux and unix,
CRLF on Windows) are automatically converted as necessary. the
clipboards are transferred using Unicode; if your platforms and
applications understand Unicode then you should be able to cut
and paste any Unicode character.
synergy synchronizes screensavers. the screensavers on client
screens are disabled when they connect to the server. when the
primary screen's screensaver starts, the screensaver on each
secondary screen starts too. all the secondary screensavers are
stopped when the primary screensaver stops. moving the mouse or
pressing a key will stop the primary screensaver, regardless of
which screen the mouse was on when the screensavers started. if
the primary screensaver requires a password to unlock then the
user is prevented from switching to the secondary screens until
the primary screen is unlocked.
installing as a daemon/service
------------------------------
synergy can run in the foreground or as a daemon/service. it's
recommended that you run it in the foreground until you've sorted
out your configuration.
on the Windows NT family you cannot run a service directly.
instead you install the service then run or stop it via the
Services control panel. on the Windows 95 family, you can use
the `--daemon' command line option to start synergy as a service
or you can install the service and restart your computer.
in the text below, except where noted, synergy refers to the
client and/or the server.
windows:
to install synergy just run one of the following:
synergy --install [other command line options]
synergyd --install [other command line options]
the client/server is installed as a service and the command
line is saved and used when starting the service. the system
will expect to find the program wherever it was when you used
the --install option so make sure it's not on a network share
from another system because the network share will not be
available at boot time. synergyd will also try to load
synrgyhk.dll so that should be in the same directory as
synergyd.exe.
note that when installing the client you must provide the
server hostname argument. to change the arguments you must
first uninstall then reinstall.
you must also install the configuration file along with the
server. it's recommended that you put it in the windows
directory (e.g. C:\WINNT) and call it "synergy.sgc". the
server will automatically find this file. however, you can
also use the --config command line option and specify an
*absolute* path to the file. remember that this file must be
accessible when the system starts up, before network shares
are mapped.
to uninstall use:
synergy --uninstall
synergyd --uninstall
linux, unix:
before starting synergy as a daemon you should understand that
synergy requires an X server that it can connect to. synergy
can start before the X server does and will repeatly attempt to
connect to the X server until it succeeds. however, if the
server requires authorization then it's unlikely that synergy
will ever succeed. so, in general, synergy should be (re)started
by the X display manager.
some display managers (xdm and kdm, but not gdm) grab the
keyboard and do not release it until the user logs in, also
for security reasons. this prevents a synergy server from
sharing the mouse and keyboard until the user logs in but
it doesn't prevent a synergy client from synthesizing mouse
and keyboard input.
you should modify xdm's Xsetup script to start the synergy
client or server. for example, somewhere near the bottom of
Xsetup (but someplace before anywhere the script calls exit)
you might add:
/usr/bin/killall synergy
/usr/sbin/synergy 192.168.1.101
this assumes synergy is installed in /usr/sbin. these lines
make sure any already running synergy is terminated and starts
a fresh copy. it's important to kill old copies so that you
don't end up with multiple synergy instances fighting each
other or, at the very least, using up system resources.
to start the synergy server you might use:
/usr/bin/killall synergyd
/usr/sbin/synergyd --config /root/synergy.conf
assuming synergyd is installed in /usr/sbin. if you've put
the configuration data in /etc/synergy.conf then you don't
need the --config option.
another option is to put the synergy startup in .Xsession in
your home directory. that allows users without root access to
start synergy when they login. in this case synergy will not
be running while on the login screen.
common command line options
---------------------------
-d, --debug <level> use debugging level <level>
--daemon run as a daemon (linux,unix) or background (windows)
-f, --no-daemon run in the foreground
-n, --name <name> use <name> instead of the hostname
--restart automatically restart on failures
-1, --no-restart do not restart on failure
-h, --help print help and exit
--version print version information and exit
--install install as a service (windows)
--uninstall uninstall service (windows)
debug levels are from highest to lowest: FATAL, ERROR, WARNING, NOTE,
INFO, DEBUG, DEBUG1, and DEBUG2. only messages at or above the given
level are logged. messages are logged to a terminal window when
running in the foreground. unix logs messages to syslog when running
as a daemon. the Windows NT family logs messages to the event log
when running as a service. the Windows 95 family shows FATAL log
messages in a message box and others in a terminal window when running
as a service.
the `--name' option lets the client or server use a name other than
its hostname for its screen. this name is used when checking the
configuration.
neither the client nor server will automatically restart if an error
occurs that is sure to happen every time. for example, the server
will exit immediately if it can't find itself in the screen
configuration. on X11 both the client and server will also terminate
if the connection to the X server is lost. since xdm will normally
restart the server and then synergy this is the correct behavior.
server command line options
---------------------------
-a, --address <address> listen for connections on the given address
-c, --config <pathname> read configuration from <pathname>
<address> has one of the following forms:
<hostname>
:<port>
<hostname>:<port>
<hostname> is a hostname or address of a network interface on the
server system. <port> is a port number from 1 to 65535. <hostname>
defaults to the system's hostname and <port> defaults to 24800.
client command line options
---------------------------
--camp retry connection to server until successful
--no-camp try connection to server only once
<address> address of server
see the "server command line options" for a description of <address>
but note that there is no default <hostname> though there is a
default <port>.
release notes
-------------
synergy does not yet fully capture all possible input or have full
control over the mouse and keyboard on all platforms. each platform
has its own limitations and these limitations may influence your
choice for the server.
the following lists enumerate the limitations of each platform. a
key (combination) that cannot be captured is not detected by synergy.
a key (combination) that cannot be blocked will be passed through to
the server system even when the mouse is on a client system. if a
key cannot be captured then it also cannot be blocked.
windows 95 family, windows NT prior to service pack 3:
* cannot capture:
* ctrl+alt+del
* ctrl+esc
* alt+[shift+]tab
* alt+[shift+]esc
* windows+E
* windows+[ctrl+]F
* windows+[shift+]M
* windows+R
* windows+F1
* windows+tab
* windows+break
* accessibility shortcuts (e.g. press shift 5 times for sticky keys)
* the individual keys are captured but the dialogs still appear
* cannot synthesize:
* accessibility shortcuts
windows NT family (except NT prior to SP3):
* cannot block:
* ctrl+alt+del
* accessibility shortcuts (e.g. press shift 5 times for sticky keys)
* the individual keys are captured but the dialogs still appear
* cannot synthesize:
* accessibility shortcuts
linux, unix:
* cannot capture:
* ctrl+alt+del
* ctrl+alt+backspace (only if used by the X server)
* ctrl+alt+keypad_plus (only if used by the X server)
* ctrl+alt+keypad_minus (only if used by the X server)
* keyboard/mouse grabs prevent switching screens for their duration
* some display managers grab the keyboard until login
currently, the windows NT family (except NT prior to SP3) makes the
best server.
known bugs
----------
all:
* non-ASCII keyboard characters are not supported
windows:
* screen flashes when entering the screen
* synergy may interfere with desktop switcher programs. however,
synergy understands and handles multiple desktops.
* there should be a control panel
* there should be a taskbar icon
windows 95 family:
* typing into a console window can be slow
windows NT family:
* the event viewer reports a message lookup error for synergy logs.
however, the full synergy message is in the extra data portion of
the event dialog.
* does not gracefully handle NoInteractiveServices being enabled
linux:
* some keyboards have toggle keys that toggle on on key press and
toggle off on the key release after the next key press. synergy
doesn't handle these properly.
* shift-lock (as opposed to caps-lock) is not supported
* large (~256k) motif clipboard items are not copied properly
tips and tricks
---------------
* a screen can be its own neighbor. that allows a screen to "wrap".
for example, if a configuration linked the left and right sides of
a screen to itself then moving off the left of the screen would put
the mouse at the right of the screen and vice versa.
* you cannot switch screens when a key or mouse button is pressed.
* you cannot switch screens when the scroll lock it toggled on. use
this to prevent unintentional switching.
* turn off mouse driven virtual desktop switching on X windows. it
will interfere with synergy. use keyboard shortcuts instead.
* synergy's screensaver synchronization works best with xscreensaver
under X windows. synergy works better with xscreensaver if it is
using of the screensaver extensions. prior to xscreensaver 4.0
you can use `-mit-extension', `-sgi-extension', or `-xidle-extension'
command line options to enable an extension. starting with 4.0
you must enable the corresponding option in your .xscreensaver file.