to style guidelines. Also enhanced it to allow binding hot keys to not
only toggling broadcasting but also turning it on or off, resized the
hot key dialog to accommodate the keyboard broadcasting option, changed
the configuration string for the keyboard broadcasting option, and
added documentation.
This change does not include the VS8 fix included in the patch.
- Fixed taking the address of begin() on an empty std::vector.
- Fixed nsis makefile to use %ProgramFiles% environment variable.
- Fixed nsis makefile to pass the output directory and file to makensis.
- Fixed synergy.nsi to get the files from the output directory. That
enables a debug build of the installer.
- Fixes to compile under VS2005.
I did not apply VS2005 project files, instead adding nmake files.
nmake is pretty weak but the makefiles can be modified without having
visual studio. Also modified the .rc files to not use winres.h.
This plus nmake means synergy can now be built using the freely
downloadable Microsoft Windows SDK for Vista, available from
microsoft's web site. This change removes all of the old VC++6
project files in favor of the nmake files. It also removes the
XCode project in favor of ./configure and make.
All of the nmake files are named nmake.mak. Only the top level
makefile is directly useful (the rest are included by it) so all
builds are from the top level directory. nmake knows the following
targets:
all: build synergy.exe, synergyc.exe and synergys.exe
clean: remove all intermediate files, keep programs
clobber: clean and remove programs
installer: build programs and an installer
debug: build a debug version of 'all'
release: build a release version of 'all'
debug-installer: build an installer of the debug build
release-installer: build an installer of the release build
The default build version is release so 'all' and 'installer' will
build a release version. The installer itself never has debug
symbols, just the stuff it installs. The default target is 'all'.
To build use:
nmake /nologo /f nmake.mak <target>
VC++ and VisualStudio users may need to manually run vcvars.bat in a
command.exe or cmd.exe window before invoking nmake. The Window 98/Me
command.exe may not handle potentially long command lines; I haven't
tried to verify if that works.
duplex keys but broke primary screens. This fixes both and
also ensures that the primary screen updates its shadow toggle
modifier state when leaving so the secondary screens get the
correct toggle modifier state. Together these fix some strange
inconsistencies in toggle state across screens.
for class visibility on pointers to member function 'using the
qualifying scope of the name itself.' what this means is if method
'prot' is declared protected in class A and B inherits from A then
a method in B cannot use &A::prot but can use &B::prot. Synergy
now does this in the one place it had not.
and on a secondary screen and locked to the screen (via scroll lock)
mouse motion is sent as motion deltas. When true and scroll lock
is toggled off the mouse is warped to the secondary screen's center
so the server knows where it is. This option is intended to support
games and other programs that repeatedly warp the mouse to the center
of the screen. This change adds general and X11 support but not
win32. The option name is "relativeMouseMoves".
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.
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.
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.
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.
using low-level keyboard hooks, fixed handling of the global
keyboard layout dead key buffer, fixed identification of dead
keys, fixed synthesis of AltGr (now using right-alt instead
of left-alt), now using VK_DECIMAL for Separator key, fixed
bug where an unmappable key was treated as virtual key 0xff,
and added support for shift-space (shift was being discarded).
Also fixed failure to hide cursor when leaving primary screen
and added support for handling PrintScreen key.
is ignored on that client (it has no effect on the server). This
is useful for keyboards that don't have separate number pads and
the user often uses the client's keyboard directly, when turning
on NumLock interferes with normal typing.
true, faking a mouse motion outside screen 0 is clamped onto screen 0.
When the workaround is enabled, we use XWarpPointer() instead of an
XTest fake motion. This isn't perfect but the only real fix requires
patching XTest.
Some users requested this. Also, the hider window is mapped before
warping the mouse so the active window shouldn't change if the focus
policy is point-to-focus. Showing the window first can also reduce
the likelihood of seeing the cursor briefly in its hidden position.