Commit Graph

63 Commits

Author SHA1 Message Date
crs
75729cef46 Fixed a few win32 keyboard/mouse problems. First, the mouse hook
now captures non-client area mouse messages.  Previously, these
were ignored (because i forgot about them) and they caused all
kinds of problems because they weren't forwarded.  For example,
clicking on a window border would cause the window to start
resizing when the mouse came back to the server screen.  Moving
inside a title bar meant that the mouse wouldn't move on the
client screen.

Second, because non-client messages are now handled, the full
screen transparent window is no longer necessary to capture
input so it's never displayed.  (The window is still necessary
for clipboard ownership so it's still created.)  No transparent
window means no screen flashing.  It also means we don't have to
become the foreground and active window.  This plays better with
apps that minimize or restore when they're no longer the
foreground application/active window.

Third, fixed the low level keyboard hook to forward toggle key
updates, which it was neglecting to do.

Finally, keyboard and mouse input is always forwarded from the hook
to the primary screen handler which then shadows the current key
and mouse button state.  If we're using low level hooks then this
isn't really necessary and GetKeyState() always returns the right
info but without low level hooks it means we can just use the
shadow state.  It also means we don't have to show our window in
order to get the system's key state table up to date, fixing the
screen flash when checking for the scroll lock state.
2003-05-03 12:54:22 +00:00
crs
42ea6306f6 Fixes to previous checkpoint. Non-ascii keys seem to work correctly.
Still not supporting key composition on X11.
2003-04-27 18:05:32 +00:00
crs
11f90022e0 Checkpointing improved key handling. This change adds non-ASCII
key handling to win32 on both client and server.  It also changes
the protocol and adds code to ensure every key pressed also gets
released and that that doesn't get confused when the KeyID for
the press is different from the KeyID of the release (or repeat).
2003-04-27 17:01:14 +00:00
crs
cf7ab3459d Added KeySym <-> Unicode mappings. Changed code to use those
mappings to better support Unicode key events.
2003-04-24 20:11:38 +00:00
crs
54cc95123b Win32 project configuration fixes. 2003-04-16 20:59:25 +00:00
crs
56bafdb0e2 Minor win32 fixes. 2003-04-16 20:59:14 +00:00
crs
aeb3f760d0 Fixed incorrect initialization of an XMotionEvent. 2003-04-14 22:16:21 +00:00
crs
6a108ed2d5 Added workaround for apparent Xinerama bug when warping the pointer.
This should allow synergy to be used on a system using Xinerama to
create a single logical screen from multiple physical screens.
2003-04-14 22:15:56 +00:00
crs
a4a08c3ce6 Removed periodic call to XForceScreenSaver() to prevent the built-in
screen saver from activating.  It was unnecessary since the built-in
screen saver is disabled as appropriate;  this call was just to
ensure that the screen saver wouldn't start if an external program
reactivated the screen saver after synergy disabled it.

It's possible that this was causing screen flicker under gnome, though
i don't know why.  It's also possible that periodically sending events
to xscreensaver is causing the flicker but removing that code is more
difficult because xscreensaver can't be disabled, only deactivated or
killed.
2003-04-13 17:13:27 +00:00
crs
4521fe4990 Fixed several win32 bugs. First, synergy wasn't forwarding mouse
events to other hook functions, which broke some tools like objectbar.
Second, windows key processing was fixed.  Previously pressing and
release the key would only send a press event, locking the user onto
the client window;  also, the win32 server treated as a Meta modifier
instead of a Super modifier, which broke any use of it as any kind of
modifier key.  Third, added hacks to support several key combinations
on windows 95/98/me that are treated specially by windows, including
Alt+Tab, Alt+Shift+Tab, Alt+Esc, Alt+Shift+Esc, Ctrl+Esc, and any
combination using the windows key like Win+E and Win+F but not
Ctrl+Alt+Del.  Fourth, scroll lock only locking to the client (which
only happened when using a synergy server on windows) has been fixed;
unfortunately the solution causes a lot of screen redraws for some
reason.  Finally, there's been a fix to clipboard handling that may
or may not fix a problem where the clipboard would stop transferring
between systems after a little while.  I can't be sure if it fixes
the problem because I can't reproduce the problem.
2003-04-13 14:59:53 +00:00
crs
c2bd4ebd4c Changed MS clipboard text converters to truncate the clipboard
data at the first NUL.  This fixes a bug when interoperating
with some win32 programs.
2003-04-08 19:26:35 +00:00
crs
125e81c92e This should fix multimon support on win32. 2003-03-25 21:31:39 +00:00
crs
9dabd425a5 Added check for the screen saver actually being active before
entering the loop waiting for it to deactivate.  The failure
to check was causing the screen saver code to kick in when
the screen saver timeout occurred, even if the screen saver
wasn't enabled (because Windows still sends the screen saver
activating message for no good reason when the screen saver
is disabled).
2003-03-21 19:16:37 +00:00
crs
995c9547cf Fixed getWindowProperty(). It wasn't catching all failure
cases correctly.
2003-03-21 19:13:15 +00:00
crs
a7e2141ede Added a log message why the user is locked to the screen. 2003-03-17 22:32:01 +00:00
crs
0fd70ee536 Added type casts to avoid warning. 2003-03-17 22:31:59 +00:00
crs
9f984ad1a0 Fixed detection of screen saver shutdown on windows nt. 2003-03-16 17:40:57 +00:00
crs
74e50877e9 Made releaseKeys() only synthesize key releases for those keys
that synergy synthesized a press for, not keys that the user
is physically pressing.
2003-03-16 17:40:56 +00:00
crs
de64342292 Minor hook fixes. 2003-03-16 17:40:47 +00:00
crs
635a2a7c5f Moved comment to more relevant location. 2003-03-13 20:24:45 +00:00
crs
a7bafcca2f Fixed double locking of mutex. 2003-03-13 19:20:55 +00:00
crs
1d17f865ea Added switch delay and double-tap options to win32 and added a
tray icon to the client and server that gives status feedback to
the user and allows the user to kill the app.
2003-03-12 22:34:07 +00:00
crs
7bbd33d787 Added support on X11 for a global option to delay switching screens
when the mouse reaches a jump zone.
2003-02-22 21:53:25 +00:00
crs
dd339fe375 Changed win32 client side cursor warping to be all relative motion
when not on the primary monitor.  This should eliminate the flicker
between virtual display 0,0 and the correct position.  While this
allows the user to confuse synergy by using the client's mouse,
synergy recovers quickly and easily from any confusion.
2003-02-16 19:55:54 +00:00
crs
2fc8780285 Added hack to heuristically detect bogus mouse motion caused by
a race condition where the synergy server updates the mouse
position but the synergy hook later receives a mouse update from
before the position change (i.e. out of order).
2003-02-16 19:53:56 +00:00
crs
9a7e452a3e Commented out an unnecessary hook and added a compile time
switch to disable grabbing of keyboard on win32 to facilitate
debugging.
2003-02-16 19:51:46 +00:00
crs
60fdb1f529 Changed heap to stack allocation in an oft-called function for
data that's never used outside the function.
2003-02-16 19:50:36 +00:00
crs
57ba0cb660 Fixed incorrect mouse button swapping on client screens. 2003-02-12 20:59:25 +00:00
crs
116005d64f To support keymaps with only upper (or lower) case keysyms we now
use Xlib to convert an unmatched keysym to upper and lower case and
use whichever, if any, is not the same as the original keysym.
This supports case conversion in any language that Xlib supports
it in.
2003-01-29 22:16:40 +00:00
crs
dedb48d244 Applied patch from grmcdorman at users dot sourceforge dot net to
support keymaps that have only uppercase letters, which is the case
by default on the Sun X server (for US keyboards anyway).
2003-01-29 19:32:25 +00:00
crs
e86e552ac8 Fixed stupid errors introduced by last attempt to fix broken
mouse behavior on multimonitor windows systems.  Those errors
broke synergy on all windows systems running as a server.
Also added an attempt to reduce the occasional jump that can
occur when switching screens when windows is the server.
2003-01-18 14:36:19 +00:00
crs
68a591210b Was forcing modifier keys that have no effect on the keysym
lookup to be up when synthesizing key events.  Now leaving
those modifiers in their current state.
2003-01-18 14:31:54 +00:00
crs
f7e936faa9 Another try at fixing broken mouse behavior when a windows system
has multiple monitors with 0,0 of the virtual desktop not at the
upper-left.
2003-01-14 19:46:17 +00:00
crs
4bf0836eae Synergy no longer tries to suppress the screen saver once it starts.
It was doing that already if started through synergy but not if
started by something outside of synergy.  In particular, if you
use `xscreensaver-command --activate' synergy used to send fake
mouse motion events every 5 seconds to deactivate it.  That's
unlikely to be what the user wanted, especially if the locking is
enabled since it would force the password dialog to appear.

As before, it's recommended that client screens not use locking
because xscreensaver will not deactivate without getting a
password even if we make the request through a programmatic
interface.  Presumably that's for security reasons but it makes
life harder for synergy.
2003-01-11 15:16:41 +00:00
crs
1758ea6f9f Attempt to fix problems with multimon windows. The mouse position
reported by the synergy hook dll is in a space with 0,0 in the
upper-left which is not necessarily the same as the virtual desktop
space.  So the windows primary screen now accounts for that.  On
the secondary screen, mouse_event() doesn't seem to accept negative
coordinates even on the windows NT family, making monitors with
negative coordinates inaccessible via absolute moves.  So if the
move will be to negative coordinates, use the windows 95 family
fallback of absolute moving to 0,0 then relative moving to the
final position.
2003-01-11 14:01:44 +00:00
crs
0347bb1667 Changed log level of two messages. Now won't spew about reading
window properties and will report connection failure at DEBUG
instead of DEBUG1.
2003-01-08 21:36:13 +00:00
crs
9a245498a6 Attempts to improve forcing synergy window to foreground. These
changes don't seem to improve the situation but don't seem to
hurt either.
2003-01-07 21:12:51 +00:00
crs
1fd7ce14f3 Added low-level mouse hook to support mouse wheel on NT (>=SP3).
Thanks to karsten for the patch used as a starting point.
2003-01-07 21:11:54 +00:00
crs
e9cc0b434e Moved CPrimaryScreen and CSecondaryScreen to the lib/synergy
and the platform specific implementations to lib/platform.
Added an lib/arch method to query the platform's native wide
character encoding and changed CUnicode to use it.  All
platform dependent code is now in lib/arch, lib/platform,
and the programs under cmd.  Also added more documentation.
2003-01-05 21:48:54 +00:00
crs
f65921bc3f Refactored some platform dependent code into a new library,
lib/arch.  This should make porting easier.  Will probably
continue to refactor a little more, moving platform dependent
event handling stuff into lib/platform.
2003-01-04 22:01:32 +00:00
crs
fd5625ba99 Improved handling of screen saver handling when windows 2k is
the client and the screen saver is password protected.  It used
to immediately turn off the screen saver (unintentionally) in
that case.
2002-12-25 18:44:54 +00:00
crs
9567a970a8 Changes to support building on solaris, irix, and darwin. Also
removed test for working fork (AC_FORK).
2002-12-25 10:35:59 +00:00
crs
773fcae8b3 Fixed client not reconnecting when server dies bug. 2002-12-15 19:58:41 +00:00
crs
52d8edb747 Fixed bug in detecting screen saver activation. Was using || instead
of && in conditional.
2002-11-05 19:23:05 +00:00
crs
17e8ba2dbd Merged fixes for building on MacOS X. It dies on one file with
an 	internal compiler error;  building that file without
optimization works around the compiler bug.  Sadly, synergy can
only interact with X windows, not native MacOS windows.
2002-11-03 18:09:28 +00:00
crs
9102fb80b9 Ported recent changes to win32 and fixed CRLF problems with project
files (most had CRCRCRLF).
2002-10-29 22:07:55 +00:00
crs
0ce15c1a9b Moved CUnicode to lib/io. That's a reasonable place for it
that's after lib/mt.  It needs to be after lib/mt in preparation
for supporting platforms without the reentrant wide char and
multi-byte functions.
2002-10-22 21:30:48 +00:00
crs
285cc3abc0 Fixed CXWindowsScreen to force the event loop to wake up when
exitMainLoop() is called.
2002-10-17 21:37:41 +00:00
crs
11e29ff7eb Added support for using select() instead of poll(). 2002-10-16 22:01:50 +00:00
crs
d8dde48c2b Changed log() and logc() macros to LOG() and LOGC(), respectively.
This avoids a conflict with the standard math library log()
function.
2002-10-15 21:29:44 +00:00