diff --git a/AUTHORS b/AUTHORS index a7ebc105..22f10267 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,4 +1,6 @@ Synergy Authors =============== -Chris Schoeneman +Chris Schoeneman -- creator, maintainer, X11, Win32 +Ryan Breen -- Mac OS X port +Guido Poschta -- Windows installer diff --git a/COPYING b/COPYING index 895e5896..43bb4f3e 100644 --- a/COPYING +++ b/COPYING @@ -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 diff --git a/ChangeLog b/ChangeLog index 448ffaed..4e06cb70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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 diff --git a/FAQ b/FAQ index 0962f028..a238c6d2 100644 --- a/FAQ +++ b/FAQ @@ -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. - - 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. + 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. + +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. diff --git a/INSTALL b/INSTALL index f33265ad..c2caed75 100644 --- a/INSTALL +++ b/INSTALL @@ -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. diff --git a/NEWS b/NEWS index e542e28d..944a0a2a 100644 --- a/NEWS +++ b/NEWS @@ -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, diff --git a/PORTING b/PORTING index 3281822d..a771799d 100644 --- a/PORTING +++ b/PORTING @@ -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. diff --git a/README b/README index 072c9f20..5cdfc938 100644 --- a/README +++ b/README @@ -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. diff --git a/TODO b/TODO index 78b3b80a..0b1fc88d 100644 --- a/TODO +++ b/TODO @@ -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 diff --git a/nodist/readme b/nodist/readme deleted file mode 100644 index 847c914f..00000000 --- a/nodist/readme +++ /dev/null @@ -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 " = " where is "left", - "right", "up", or "down" and 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 - - replacing 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 - - replacing 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 use debugging level - --daemon run as a daemon (linux,unix) or background (windows) - -f, --no-daemon run in the foreground - -n, --name use 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
listen for connections on the given address - -c, --config read configuration from - -
has one of the following forms: - - : - : - is a hostname or address of a network interface on the -server system. is a port number from 1 to 65535. -defaults to the system's hostname and defaults to 24800. - - -client command line options ---------------------------- - --camp retry connection to server until successful - --no-camp try connection to server only once -
address of server - -see the "server command line options" for a description of
-but note that there is no default though there is a -default . - - -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.